From fde9d868d6370523502176cb3413cd5fa717b065 Mon Sep 17 00:00:00 2001 From: PeterB Date: Thu, 11 Jul 2024 23:34:01 +0100 Subject: [PATCH 01/22] WIP: React UI for the BSG sample app and contract update to provide hits and misses to UI. --- .../src/assets/contract/address.json | 2 +- bs-game-wip/.eslintrc.cjs | 18 + bs-game-wip/.gitignore | 24 + bs-game-wip/README.md | 33 + bs-game-wip/contracts/BattleshipGame.sol | 251 + bs-game-wip/hardhat.config.cjs | 30 + bs-game-wip/index.html | 16 + bs-game-wip/package-lock.json | 11338 ++++++++++++++++ bs-game-wip/package.json | 42 + bs-game-wip/postcss.config.js | 6 + bs-game-wip/src/App.css | 62 + bs-game-wip/src/App.tsx | 99 + bs-game-wip/src/TheGrid/index.ts | 0 bs-game-wip/src/api/contract/contract.api.ts | 5 + bs-game-wip/src/api/contract/contract.keys.ts | 3 + .../src/api/contract/contract.models.ts | 0 .../src/api/contract/contract.mutations.ts | 0 .../src/api/contract/contract.queries.ts | 4 + bs-game-wip/src/assets/32x32.png | Bin 0 -> 157 bytes bs-game-wip/src/assets/64x64.png | Bin 0 -> 232 bytes bs-game-wip/src/assets/contract/address.json | 1 + bs-game-wip/src/assets/hex.svg | 7 + bs-game-wip/src/assets/metamask-logo.svg | 2 + bs-game-wip/src/assets/shipFresh.svg | 1 + bs-game-wip/src/assets/shipSunk.svg | 1 + bs-game-wip/src/assets/white_logotype.png | Bin 0 -> 13581 bytes .../components/AnimatedText/AnimatedText.tsx | 46 + .../AnimatedText/AnimatedTextCursor.tsx | 0 .../AnimatedText/styles.module.scss | 26 + .../src/components/BattleGrid/BattleGrid.tsx | 71 + .../BattleGrid/BattleGridCanvas.tsx | 68 + .../components/BattleGrid/BattleGridCell.tsx | 49 + .../BattleGrid/BattleGridContainer.tsx | 71 + .../BattleGridCurrentCoordinates.tsx | 11 + .../BattleGrid/BattleGridCursor.tsx | 53 + .../components/BattleGrid/BattleGridHits.tsx | 62 + .../BattleGrid/BattleGridMisses.tsx | 37 + .../CellsRemaining/CellsRemaining.tsx | 36 + .../src/components/Graveyard/Graveyard.tsx | 39 + .../src/components/HudWindow/HudWindow.tsx | 107 + .../components/HudWindow/styles.module.scss | 183 + .../src/components/MessageLog/MessageLog.tsx | 41 + .../components/MessageLog/styles.module.scss | 32 + .../src/components/MetaMask/MetaMask.tsx | 41 + .../src/components/PrizePool/PrizePool.tsx | 34 + .../ProcessingNotification.tsx | 76 + .../ProcessingNotification/styles.module.scss | 6 + bs-game-wip/src/contexts/EventContext.tsx | 17 + bs-game-wip/src/helpers/formatAddress.ts | 7 + bs-game-wip/src/helpers/getCellXY.ts | 9 + bs-game-wip/src/helpers/isInViewport.ts | 10 + bs-game-wip/src/index.css | 47 + bs-game-wip/src/lib/constants.ts | 20 + bs-game-wip/src/lib/trackEvent.ts | 6 + bs-game-wip/src/main.tsx | 11 + bs-game-wip/src/services/web3service.js | 108 + bs-game-wip/src/stores/battleGridStore.ts | 65 + bs-game-wip/src/stores/contractStore.ts | 216 + bs-game-wip/src/stores/messageStore.ts | 49 + bs-game-wip/src/stores/metaMaskStore.ts | 0 bs-game-wip/src/stores/walletStore.ts | 24 + bs-game-wip/src/tailwind.css | 9 + bs-game-wip/src/utils/createHexagon.ts | 19 + .../src/utils/getSnappedMousePosition.ts | 14 + bs-game-wip/src/utils/handleMetaMaskError.ts | 25 + bs-game-wip/src/vite-env.d.ts | 1 + bs-game-wip/tailwind.config.js | 17 + bs-game-wip/todos.md | 31 + bs-game-wip/tsconfig.app.json | 27 + bs-game-wip/tsconfig.json | 18 + bs-game-wip/tsconfig.node.json | 13 + bs-game-wip/vite.config.ts | 14 + 72 files changed, 13810 insertions(+), 1 deletion(-) create mode 100644 bs-game-wip/.eslintrc.cjs create mode 100644 bs-game-wip/.gitignore create mode 100644 bs-game-wip/README.md create mode 100644 bs-game-wip/contracts/BattleshipGame.sol create mode 100644 bs-game-wip/hardhat.config.cjs create mode 100644 bs-game-wip/index.html create mode 100644 bs-game-wip/package-lock.json create mode 100644 bs-game-wip/package.json create mode 100644 bs-game-wip/postcss.config.js create mode 100644 bs-game-wip/src/App.css create mode 100644 bs-game-wip/src/App.tsx create mode 100644 bs-game-wip/src/TheGrid/index.ts create mode 100644 bs-game-wip/src/api/contract/contract.api.ts create mode 100644 bs-game-wip/src/api/contract/contract.keys.ts create mode 100644 bs-game-wip/src/api/contract/contract.models.ts create mode 100644 bs-game-wip/src/api/contract/contract.mutations.ts create mode 100644 bs-game-wip/src/api/contract/contract.queries.ts create mode 100644 bs-game-wip/src/assets/32x32.png create mode 100644 bs-game-wip/src/assets/64x64.png create mode 100644 bs-game-wip/src/assets/contract/address.json create mode 100644 bs-game-wip/src/assets/hex.svg create mode 100644 bs-game-wip/src/assets/metamask-logo.svg create mode 100644 bs-game-wip/src/assets/shipFresh.svg create mode 100644 bs-game-wip/src/assets/shipSunk.svg create mode 100644 bs-game-wip/src/assets/white_logotype.png create mode 100644 bs-game-wip/src/components/AnimatedText/AnimatedText.tsx create mode 100644 bs-game-wip/src/components/AnimatedText/AnimatedTextCursor.tsx create mode 100644 bs-game-wip/src/components/AnimatedText/styles.module.scss create mode 100644 bs-game-wip/src/components/BattleGrid/BattleGrid.tsx create mode 100644 bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx create mode 100644 bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx create mode 100644 bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx create mode 100644 bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx create mode 100644 bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx create mode 100644 bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx create mode 100644 bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx create mode 100644 bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx create mode 100644 bs-game-wip/src/components/Graveyard/Graveyard.tsx create mode 100644 bs-game-wip/src/components/HudWindow/HudWindow.tsx create mode 100644 bs-game-wip/src/components/HudWindow/styles.module.scss create mode 100644 bs-game-wip/src/components/MessageLog/MessageLog.tsx create mode 100644 bs-game-wip/src/components/MessageLog/styles.module.scss create mode 100644 bs-game-wip/src/components/MetaMask/MetaMask.tsx create mode 100644 bs-game-wip/src/components/PrizePool/PrizePool.tsx create mode 100644 bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx create mode 100644 bs-game-wip/src/components/ProcessingNotification/styles.module.scss create mode 100644 bs-game-wip/src/contexts/EventContext.tsx create mode 100644 bs-game-wip/src/helpers/formatAddress.ts create mode 100644 bs-game-wip/src/helpers/getCellXY.ts create mode 100644 bs-game-wip/src/helpers/isInViewport.ts create mode 100644 bs-game-wip/src/index.css create mode 100644 bs-game-wip/src/lib/constants.ts create mode 100644 bs-game-wip/src/lib/trackEvent.ts create mode 100644 bs-game-wip/src/main.tsx create mode 100644 bs-game-wip/src/services/web3service.js create mode 100644 bs-game-wip/src/stores/battleGridStore.ts create mode 100644 bs-game-wip/src/stores/contractStore.ts create mode 100644 bs-game-wip/src/stores/messageStore.ts create mode 100644 bs-game-wip/src/stores/metaMaskStore.ts create mode 100644 bs-game-wip/src/stores/walletStore.ts create mode 100644 bs-game-wip/src/tailwind.css create mode 100644 bs-game-wip/src/utils/createHexagon.ts create mode 100644 bs-game-wip/src/utils/getSnappedMousePosition.ts create mode 100644 bs-game-wip/src/utils/handleMetaMaskError.ts create mode 100644 bs-game-wip/src/vite-env.d.ts create mode 100644 bs-game-wip/tailwind.config.js create mode 100644 bs-game-wip/todos.md create mode 100644 bs-game-wip/tsconfig.app.json create mode 100644 bs-game-wip/tsconfig.json create mode 100644 bs-game-wip/tsconfig.node.json create mode 100644 bs-game-wip/vite.config.ts diff --git a/battleship-game/src/assets/contract/address.json b/battleship-game/src/assets/contract/address.json index ffccde35..726c2403 100644 --- a/battleship-game/src/assets/contract/address.json +++ b/battleship-game/src/assets/contract/address.json @@ -1 +1 @@ -{ "address": "0xb0E09857675Dc4c23ce90D4Ba62aC66fAb8b8155" } +{ "address": "0x0Cdc6280ddb57F52e7c36Fc634bAf136D1B157c5" } diff --git a/bs-game-wip/.eslintrc.cjs b/bs-game-wip/.eslintrc.cjs new file mode 100644 index 00000000..d6c95379 --- /dev/null +++ b/bs-game-wip/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/bs-game-wip/.gitignore b/bs-game-wip/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/bs-game-wip/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/bs-game-wip/README.md b/bs-game-wip/README.md new file mode 100644 index 00000000..4c621735 --- /dev/null +++ b/bs-game-wip/README.md @@ -0,0 +1,33 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default { + // other rules... + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + }, +} +``` + +- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` +- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list + + + curl --location --request POST 'http://sepolia-testnet-faucet.uksouth.azurecontainer.io/fund/eth' --header 'Content-Type: application/json' --data-raw '{ "address":"0xc1AD6A6f2d190aFF8aE8a503887C6EAf1072149a" }' \ No newline at end of file diff --git a/bs-game-wip/contracts/BattleshipGame.sol b/bs-game-wip/contracts/BattleshipGame.sol new file mode 100644 index 00000000..3d22bd6c --- /dev/null +++ b/bs-game-wip/contracts/BattleshipGame.sol @@ -0,0 +1,251 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +contract BattleshipGame { + uint8 constant gridSize = 100; + uint8 constant totalShips = 249; + uint8 constant shipLength = 3; + address public owner; + mapping(address => bool) public admins; + + struct Position { + uint8 x; + uint8 y; + } + + struct Ship { + Position start; + bool[shipLength] hits; + } + + Ship[totalShips] private ships; + mapping(uint16 => uint8) private positionToShipIndex; + mapping(uint16 => bool) public hits; + mapping(uint16 => bool) public misses; + uint256 private seed; + uint256 private nonce = 0; + uint256 public prizePool; + bool[totalShips] public graveyard; + uint8 public sunkShipsCount; + bool public gameOver; + + /// @notice Initializes the contract by setting the initial seed and generating ship positions. + constructor() { + seed = uint256(keccak256(abi.encodePacked(block.difficulty))); + owner = msg.sender; + admins[owner] = true; + generatePositions(); + } + + modifier onlyAdmin() { + require(admins[msg.sender], "Caller is not an admin"); + _; + } + + modifier onlyOwner() { + require(msg.sender == owner, "Caller is not the owner"); + _; + } + + /// @notice Adds a new admin address. Only the owner can add new admins. + /// @param newAdmin The address of the new admin. + function addAdmin(address newAdmin) public onlyOwner { + admins[newAdmin] = true; + } + + /// @notice Generates unique positions for ships on the grid. + function generatePositions() private { + uint8 index = 0; + while (index < totalShips) { + uint256 hash = uint256(keccak256(abi.encodePacked(seed, nonce))); + for (uint8 i = 0; i < 36 && index < totalShips; i++) { + uint8 x = uint8(hash & 0x7F) % gridSize; + uint8 y = uint8((hash >> 7) & 0x7F) % gridSize; + + if (isPositionUniqueAndFits(x, y)) { + ships[index].start = Position(x, y); + for (uint8 j = 0; j < shipLength; j++) { + uint16 positionKey = packCoordinates(x + j, y); + positionToShipIndex[positionKey] = index; + } + index++; + } + hash >>= 14; + } + nonce++; + } + } + + /// @notice Checks if the ship position is unique and fits within the grid. + /// @param x The x-coordinate of the ship's start position. + /// @param y The y-coordinate of the ship's start position. + /// @return bool indicating whether the position is unique and fits within the grid. + function isPositionUniqueAndFits(uint8 x, uint8 y) private view returns (bool) { + if (x + shipLength > gridSize) return false; + for (uint8 j = 0; j < shipLength; j++) { + uint16 positionKey = packCoordinates(x + j, y); + if (positionToShipIndex[positionKey] != 0) { + return false; + } + } + return true; + } + + /// @notice Packs x and y coordinates into a single uint16 value. + /// @param x The x-coordinate. + /// @param y The y-coordinate. + /// @return uint16 representing the packed coordinates. + function packCoordinates(uint8 x, uint8 y) private pure returns (uint16) { + return uint16(x) << 8 | uint16(y); + } + + /// @notice Gets the position of a specific ship by its index. + /// @param shipIndex The index of the ship. + /// @return Position of the ship. + function getShipPosition(uint8 shipIndex) public view onlyAdmin returns (Position memory) { + require(shipIndex < totalShips, "Ship index out of bounds"); + return ships[shipIndex].start; + } + + /// @notice Gets positions of all ships. + /// @return Array of all ships. + function getAllShipPositions() public view onlyAdmin returns (Ship[totalShips] memory) { + return ships; + } + + /// @notice Gets the index of the ship at a specific grid position. + /// @param x The x-coordinate of the position. + /// @param y The y-coordinate of the position. + /// @return The index of the ship at the specified position. + function getShipAtPosition(uint8 x, uint8 y) public view onlyAdmin returns (uint8) { + uint16 positionKey = packCoordinates(x, y); + uint8 shipIndex = positionToShipIndex[positionKey]; + require(shipIndex != 0, "No ship at given position"); + return shipIndex; + } + + /// @notice Hits a position on the grid and checks if a ship is hit. + /// @param x The x-coordinate of the position to hit. + /// @param y The y-coordinate of the position to hit. + function hit(uint8 x, uint8 y) public payable { + require(!gameOver, "Game is over, no more hits accepted"); + require(msg.value == 0.0443 ether, "Incorrect fee amount"); + uint16 positionKey = packCoordinates(x, y); + require(!hits[positionKey], "Cell already hit"); + require(!misses[positionKey], "Cell already hit"); + + prizePool += msg.value; + + + uint8 shipIndex = positionToShipIndex[positionKey]; + if (shipIndex != 0) { + Ship storage ship = ships[shipIndex]; + uint8 hitIndex = x - ship.start.x; + ship.hits[hitIndex] = true; + hits[positionKey] = true; + + bool allHit = true; + for (uint8 i = 0; i < shipLength; i++) { + if (!ship.hits[i]) { + allHit = false; + break; + } + } + if (allHit) { + graveyard[shipIndex] = true; + sunkShipsCount++; + if (sunkShipsCount == totalShips) { + gameOver = true; + } + } + } + else { + misses[positionKey] = true; + } + } + + + /// @notice Checks if a specific position on the grid is hit. + /// @param x The x-coordinate of the position. + /// @param y The y-coordinate of the position. + /// @return bool indicating whether the position is hit. + function isHit(uint8 x, uint8 y) public view returns (bool) { + uint16 positionKey = packCoordinates(x, y); + return hits[positionKey]; + } + + /// @notice Checks if a specific ship is sunk. + /// @param shipIndex The index of the ship. + /// @return bool indicating whether the ship is sunk. + function isSunk(uint8 shipIndex) public view returns (bool) { + require(shipIndex < totalShips, "Ship index out of bounds"); + return graveyard[shipIndex]; + } + + /// @notice Gets the hit status of each part of a specific ship. + /// @param shipIndex The index of the ship. + /// @return Array indicating which parts of the ship are hit. + function getHitsOnShip(uint8 shipIndex) public view onlyAdmin returns (bool[shipLength] memory) { + require(shipIndex < totalShips, "Ship index out of bounds"); + return ships[shipIndex].hits; + } + + /// @notice Gets the status of all ships in the graveyard. + /// @return Array indicating which ships are sunk. + function getGraveyard() public view returns (bool[totalShips] memory) { + return graveyard; + } + + /// @notice Gets all hit positions so far. + /// @return Array of positions that have been hit. + function getAllHits() public view returns (Position[] memory) { + uint256 hitCount = 0; + for (uint8 x = 0; x < gridSize; x++) { + for (uint8 y = 0; y < gridSize; y++) { + if (hits[packCoordinates(x, y)]) { + hitCount++; + } + } + } + + Position[] memory hitPositions = new Position[](hitCount); + uint256 index = 0; + for (uint8 x = 0; x < gridSize; x++) { + for (uint8 y = 0; y < gridSize; y++) { + if (hits[packCoordinates(x, y)]) { + hitPositions[index] = Position(x, y); + index++; + } + } + } + + return hitPositions; + } + + + /// @notice Gets all miss positions so far. + /// @return Array of positions that have been missed. + function getAllMisses() public view returns (Position[] memory) { + uint256 missCount = 0; + for (uint8 x = 0; x < gridSize; x++) { + for (uint8 y = 0; y < gridSize; y++) { + if (misses[packCoordinates(x, y)]) { + missCount++; + } + } + } + + Position[] memory missPositions = new Position[](missCount); + uint256 index = 0; + for (uint8 x = 0; x < gridSize; x++) { + for (uint8 y = 0; y < gridSize; y++) { + if (misses[packCoordinates(x, y)]) { + missPositions[index] = Position(x, y); + index++; + } + } + } + + return missPositions; + } +} \ No newline at end of file diff --git a/bs-game-wip/hardhat.config.cjs b/bs-game-wip/hardhat.config.cjs new file mode 100644 index 00000000..bc0a2860 --- /dev/null +++ b/bs-game-wip/hardhat.config.cjs @@ -0,0 +1,30 @@ +/** @type import('hardhat/config').HardhatUserConfig */ + +require('dotenv').config() +require('@nomicfoundation/hardhat-toolbox') + +const { PRIVATE_KEY, USER_KEY } = process.env + +task('deploy', 'Deploys the BattleshipGame contract').setAction(async (taskArgs, hre) => { + const BattleshipGame = await hre.ethers.getContractFactory('BattleshipGame') + const battleshipGame = await BattleshipGame.deploy() + await battleshipGame.deployed() + + console.log('BattleshipGame deployed to:', battleshipGame.address) +}) + +module.exports = { + solidity: '0.8.19', + paths: { + sources: './contracts', + artifacts: './src/assets/contract/artifacts' + }, + networks: { + ten: { + chainId: 443, + url: `https://testnet.obscu.ro/v1/${USER_KEY}`, + gasPrice: 2000000000, + accounts: [`0x${PRIVATE_KEY}`] + } + } +} diff --git a/bs-game-wip/index.html b/bs-game-wip/index.html new file mode 100644 index 00000000..4f72a081 --- /dev/null +++ b/bs-game-wip/index.html @@ -0,0 +1,16 @@ + + + + + + + Vite + React + TS + + + + + +
+ + + diff --git a/bs-game-wip/package-lock.json b/bs-game-wip/package-lock.json new file mode 100644 index 00000000..dd9d8004 --- /dev/null +++ b/bs-game-wip/package-lock.json @@ -0,0 +1,11338 @@ +{ + "name": "bs-game-wip", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "bs-game-wip", + "version": "0.0.0", + "dependencies": { + "@metamask/rpc-errors": "^6.3.1", + "@pixi/events": "^7.4.2", + "@pixi/filter-glow": "^5.2.1", + "@pixi/graphics-extras": "^7.4.2", + "@pixi/react": "^7.1.2", + "autoprefixer": "^10.4.19", + "framer-motion": "^11.3.0", + "pixi.js": "^7.1.4", + "postcss": "^8.4.39", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "tailwindcss": "^3.4.4", + "zustand": "^4.5.4" + }, + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "@types/node": "^20.14.9", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^7.13.1", + "@typescript-eslint/parser": "^7.13.1", + "@vitejs/plugin-react": "^4.3.1", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "sass": "^1.77.6", + "typescript": "^5.2.2", + "vite": "^5.3.1" + } + }, + "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, + "peer": true + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "peer": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.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==", + "devOptional": true, + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/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==", + "devOptional": true, + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, + "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, + "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/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/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, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@ethereumjs/common": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", + "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "crc-32": "^1.2.0" + } + }, + "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==", + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/tx": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", + "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", + "dependencies": { + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/util": "^8.1.0", + "ethereum-cryptography": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/tx/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==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/tx/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==", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "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==", + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "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==", + "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==", + "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==", + "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.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.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==", + "dev": true, + "peer": true + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "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" + } + ], + "peer": true + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "peer": 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/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.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, + "peer": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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, + "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 + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "peer": true, + "dependencies": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true, + "peer": true + }, + "node_modules/@metamask/eth-sig-util/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/@metamask/rpc-errors": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.3.1.tgz", + "integrity": "sha512-ugDY7cKjF4/yH5LtBaOIKHw/AiGGSAmzptAUEiAEGr/78LwuzcXAxmzEQfSfMIfI+f9Djr8cttq1pRJJKfTuCg==", + "dependencies": { + "@metamask/utils": "^9.0.0", + "fast-safe-stringify": "^2.0.6" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/superstruct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@metamask/superstruct/-/superstruct-3.1.0.tgz", + "integrity": "sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA==", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/utils": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.0.0.tgz", + "integrity": "sha512-Q/PzQCm6rkmePxHghXgJuYEkVfSvwKLLFZwFtfmLAz4mxIPuFJSMawaJM7sfZsVybK5Bf9QaKAjgMvHk5iGGvA==", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/utils/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "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, + "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==", + "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/" + } + ], + "peer": true + }, + "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==", + "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==", + "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==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nomicfoundation/edr": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.4.1.tgz", + "integrity": "sha512-NgrMo2rI9r28uidumvd+K2/AJLdxtXsUlJr3hj/pM6S1FCd/HiWaLeLa/cjCVPcE2u1rYAa3W6UFxLCB7S5Dhw==", + "dev": true, + "peer": true, + "dependencies": { + "@nomicfoundation/edr-darwin-arm64": "0.4.1", + "@nomicfoundation/edr-darwin-x64": "0.4.1", + "@nomicfoundation/edr-linux-arm64-gnu": "0.4.1", + "@nomicfoundation/edr-linux-arm64-musl": "0.4.1", + "@nomicfoundation/edr-linux-x64-gnu": "0.4.1", + "@nomicfoundation/edr-linux-x64-musl": "0.4.1", + "@nomicfoundation/edr-win32-x64-msvc": "0.4.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-darwin-arm64": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.4.1.tgz", + "integrity": "sha512-XuiUUnWAVNw7JYv7nRqDWfpBm21HOxCRBQ8lQnRnmiets9Ss2X5Ul9mvBheIPh/D0wBzwJ8TRtsSrorpwE79cA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-darwin-x64": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.4.1.tgz", + "integrity": "sha512-N1MfJqEX5ixaXlyyrHnaYxzwIT27Nc/jUgLI7ts4/9kRvPTvyZRYmXS1ciKhmUFr/WvFckTCix2RJbZoGGtX7g==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.4.1.tgz", + "integrity": "sha512-bSPOfmcFjJwDgWOV5kgZHeqg2OWu1cINrHSGjig0aVHehjcoX4Sgayrj6fyAxcOV5NQKA6WcyTFll6NrCxzWRA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-arm64-musl": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.4.1.tgz", + "integrity": "sha512-F/+DgOdeBFQDrk+SX4aFffJFBgJfd75ZtE2mjcWNAh/qWiS7NfUxdQX/5OvNo/H6EY4a+3bZH6Bgzqg4mEWvMw==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-x64-gnu": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.4.1.tgz", + "integrity": "sha512-POHhTWczIXCPhzKtY0Vt/l+VCqqCx5gNR5ErwSrNnLz/arfQobZFAU+nc61BX3Jch82TW8b3AbfGI73Kh7gO0w==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-x64-musl": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.4.1.tgz", + "integrity": "sha512-uu8oNp4Ozg3H1x1We0FF+rwXfFiAvsOm5GQ+OBx9YYOXnfDPWqguQfGIkhrti9GD0iYhfQ/WOG5wvp0IzzgGSg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-win32-x64-msvc": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.4.1.tgz", + "integrity": "sha512-PaZHFw455z89ZiKYNTnKu+/TiVZVRI+mRJsbRTe2N0VlYfUBS1o2gdXBM12oP1t198HR7xQwEPPAslTFxGBqHA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", + "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", + "dev": true, + "peer": true, + "dependencies": { + "@nomicfoundation/ethereumjs-util": "9.0.4" + } + }, + "node_modules/@nomicfoundation/ethereumjs-rlp": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", + "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", + "dev": true, + "peer": true, + "bin": { + "rlp": "bin/rlp.cjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz", + "integrity": "sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==", + "dev": true, + "peer": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "c-kzg": "^2.1.2" + }, + "peerDependenciesMeta": { + "c-kzg": { + "optional": true + } + } + }, + "node_modules/@nomicfoundation/ethereumjs-util": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz", + "integrity": "sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==", + "dev": true, + "peer": true, + "dependencies": { + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "c-kzg": "^2.1.2" + }, + "peerDependenciesMeta": { + "c-kzg": { + "optional": true + } + } + }, + "node_modules/@nomicfoundation/hardhat-chai-matchers": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.7.tgz", + "integrity": "sha512-RQfsiTwdf0SP+DtuNYvm4921X6VirCQq0Xyh+mnuGlTwEFSPZ/o27oQC+l+3Y/l48DDU7+ZcYBR+Fp+Rp94LfQ==", + "dev": true, + "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.0.0", + "chai": "^4.2.0", + "ethers": "^6.1.0", + "hardhat": "^2.9.4" + } + }, + "node_modules/@nomicfoundation/hardhat-ethers": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.6.tgz", + "integrity": "sha512-/xzkFQAaHQhmIAYOQmvHBPwL+NkwLzT9gRZBsgWUYeV+E6pzXsBQsHfRYbAZ3XEYare+T7S+5Tg/1KDJgepSkA==", + "dev": true, + "peer": true, + "dependencies": { + "debug": "^4.1.1", + "lodash.isequal": "^4.5.0" + }, + "peerDependencies": { + "ethers": "^6.1.0", + "hardhat": "^2.0.0" + } + }, + "node_modules/@nomicfoundation/hardhat-ignition": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-0.15.5.tgz", + "integrity": "sha512-Y5nhFXFqt4owA6Ooag8ZBFDF2RAZElMXViknVIsi3m45pbQimS50ti6FU8HxfRkDnBARa40CIn7UGV0hrelzDw==", + "dev": true, + "peer": true, + "dependencies": { + "@nomicfoundation/ignition-core": "^0.15.5", + "@nomicfoundation/ignition-ui": "^0.15.5", + "chalk": "^4.0.0", + "debug": "^4.3.2", + "fs-extra": "^10.0.0", + "prompts": "^2.4.2" + }, + "peerDependencies": { + "@nomicfoundation/hardhat-verify": "^2.0.1", + "hardhat": "^2.18.0" + } + }, + "node_modules/@nomicfoundation/hardhat-ignition-ethers": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-0.15.5.tgz", + "integrity": "sha512-W6s1QN9CFxzSVZS6w9Jcj3WLaK32z2FP5MxNU2OKY1Fn9ZzLr+miXbUbWYuRHl6dxrrl6sE8cv33Cybv19pmCg==", + "dev": true, + "peer": true, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.0.4", + "@nomicfoundation/hardhat-ignition": "^0.15.5", + "@nomicfoundation/ignition-core": "^0.15.5", + "ethers": "^6.7.0", + "hardhat": "^2.18.0" + } + }, + "node_modules/@nomicfoundation/hardhat-ignition/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nomicfoundation/hardhat-ignition/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "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/@nomicfoundation/hardhat-ignition/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@nomicfoundation/hardhat-ignition/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==", + "dev": true, + "peer": true + }, + "node_modules/@nomicfoundation/hardhat-ignition/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==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nomicfoundation/hardhat-ignition/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==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nomicfoundation/hardhat-network-helpers": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.11.tgz", + "integrity": "sha512-uGPL7QSKvxrHRU69dx8jzoBvuztlLCtyFsbgfXIwIjnO3dqZRz2GNMHJoO3C3dIiUNM6jdNF4AUnoQKDscdYrA==", + "dev": true, + "peer": true, + "dependencies": { + "ethereumjs-util": "^7.1.4" + }, + "peerDependencies": { + "hardhat": "^2.9.5" + } + }, + "node_modules/@nomicfoundation/hardhat-toolbox": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-5.0.0.tgz", + "integrity": "sha512-FnUtUC5PsakCbwiVNsqlXVIWG5JIb5CEZoSXbJUsEBun22Bivx2jhF1/q9iQbzuaGpJKFQyOhemPB2+XlEE6pQ==", + "dev": true, + "peerDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-ignition-ethers": "^0.15.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": ">=18.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.0.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.8.tgz", + "integrity": "sha512-x/OYya7A2Kcz+3W/J78dyDHxr0ezU23DKTrRKfy5wDPCnePqnr79vm8EXqX3gYps6IjPBYyGPZ9K6E5BnrWx5Q==", + "dev": true, + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@ethersproject/address": "^5.0.2", + "cbor": "^8.1.0", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "lodash.clonedeep": "^4.5.0", + "semver": "^6.3.0", + "table": "^6.8.0", + "undici": "^5.14.0" + }, + "peerDependencies": { + "hardhat": "^2.0.4" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/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, + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@nomicfoundation/ignition-core": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-core/-/ignition-core-0.15.5.tgz", + "integrity": "sha512-FgvuoIXhakRSP524JzNQ4BviyzBBKpsFaOWubPZ4XACLT4/7vGqlJ/7DIn0D2NL2anQ2qs98/BNBY9WccXUX1Q==", + "dev": true, + "peer": true, + "dependencies": { + "@ethersproject/address": "5.6.1", + "@nomicfoundation/solidity-analyzer": "^0.1.1", + "cbor": "^9.0.0", + "debug": "^4.3.2", + "ethers": "^6.7.0", + "fs-extra": "^10.0.0", + "immer": "10.0.2", + "lodash": "4.17.21", + "ndjson": "2.0.0" + } + }, + "node_modules/@nomicfoundation/ignition-core/node_modules/@ethersproject/address": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/rlp": "^5.6.1" + } + }, + "node_modules/@nomicfoundation/ignition-core/node_modules/cbor": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", + "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", + "dev": true, + "peer": true, + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@nomicfoundation/ignition-ui": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-ui/-/ignition-ui-0.15.5.tgz", + "integrity": "sha512-ZcE4rIn10qKahR4OqS8rl8NM2Fbg2QYiBXgMgj74ZI0++LlCcZgB5HyaBbX+lsnKHjTXtjYD3b+2mtg7jFbAMQ==", + "dev": true, + "peer": true + }, + "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, + "peer": true, + "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, + "optional": true, + "peer": 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, + "optional": true, + "peer": 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, + "optional": true, + "peer": 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, + "optional": true, + "peer": 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, + "optional": true, + "peer": 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, + "optional": true, + "peer": 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, + "optional": true, + "peer": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@pixi/accessibility": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/accessibility/-/accessibility-7.4.2.tgz", + "integrity": "sha512-R6VEolm8uyy1FB1F2qaLKxVbzXAFTZCF2ka8fl9lsz7We6ZfO4QpXv9ur7DvzratjCQUQVCKo0/V7xL5q1EV/g==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/events": "7.4.2" + } + }, + "node_modules/@pixi/app": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/app/-/app-7.4.2.tgz", + "integrity": "sha512-ugkH3kOgjT8P1mTMY29yCOgEh+KuVMAn8uBxeY0aMqaUgIMysfpnFv+Aepp2CtvI9ygr22NC+OiKl+u+eEaQHw==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2" + } + }, + "node_modules/@pixi/assets": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/assets/-/assets-7.4.2.tgz", + "integrity": "sha512-anxho59H9egZwoaEdM5aLvYyxoz6NCy3CaQIvNHD1bbGg8L16Ih0e26QSBR5fu53jl8OjT6M7s+p6n7uu4+fGA==", + "dependencies": { + "@types/css-font-loading-module": "^0.0.12" + }, + "peerDependencies": { + "@pixi/core": "7.4.2" + } + }, + "node_modules/@pixi/color": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/color/-/color-7.4.2.tgz", + "integrity": "sha512-av1LOvhHsiaW8+T4n/FgnOKHby55/w7VcA1HzPIHRBtEcsmxvSCDanT1HU2LslNhrxLPzyVx18nlmalOyt5OBg==", + "dependencies": { + "@pixi/colord": "^2.9.6" + } + }, + "node_modules/@pixi/colord": { + "version": "2.9.6", + "resolved": "https://registry.npmjs.org/@pixi/colord/-/colord-2.9.6.tgz", + "integrity": "sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==" + }, + "node_modules/@pixi/compressed-textures": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/compressed-textures/-/compressed-textures-7.4.2.tgz", + "integrity": "sha512-VJrt7el6O4ZJSWkeOGXwrhJaiLg1UBhHB3fj42VR4YloYkAxpfd9K6s6IcbcVz7n9L48APKBMgHyaB2pX2Ck/A==", + "peerDependencies": { + "@pixi/assets": "7.4.2", + "@pixi/core": "7.4.2" + } + }, + "node_modules/@pixi/constants": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-7.4.2.tgz", + "integrity": "sha512-N9vn6Wpz5WIQg7ugUg2+SdqD2u2+NM0QthE8YzLJ4tLH2Iz+/TrnPKUJzeyIqbg3sxJG5ZpGGPiacqIBpy1KyA==" + }, + "node_modules/@pixi/core": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/core/-/core-7.4.2.tgz", + "integrity": "sha512-UbMtgSEnyCOFPzbE6ThB9qopXxbZ5GCof2ArB4FXOC5Xi/83MOIIYg5kf5M8689C5HJMhg2SrJu3xLKppF+CMg==", + "dependencies": { + "@pixi/color": "7.4.2", + "@pixi/constants": "7.4.2", + "@pixi/extensions": "7.4.2", + "@pixi/math": "7.4.2", + "@pixi/runner": "7.4.2", + "@pixi/settings": "7.4.2", + "@pixi/ticker": "7.4.2", + "@pixi/utils": "7.4.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" + } + }, + "node_modules/@pixi/display": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/display/-/display-7.4.2.tgz", + "integrity": "sha512-DaD0J7gIlNlzO0Fdlby/0OH+tB5LtCY6rgFeCBKVDnzmn8wKW3zYZRenWBSFJ0Psx6vLqXYkSIM/rcokaKviIw==", + "peerDependencies": { + "@pixi/core": "7.4.2" + } + }, + "node_modules/@pixi/events": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/events/-/events-7.4.2.tgz", + "integrity": "sha512-Jw/w57heZjzZShIXL0bxOvKB+XgGIevyezhGtfF2ZSzQoSBWo+Fj1uE0QwKd0RIaXegZw/DhSmiMJSbNmcjifA==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2" + } + }, + "node_modules/@pixi/extensions": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/extensions/-/extensions-7.4.2.tgz", + "integrity": "sha512-Hmx2+O0yZ8XIvgomHM9GZEGcy9S9Dd8flmtOK5Aa3fXs/8v7xD08+ANQpN9ZqWU2Xs+C6UBlpqlt2BWALvKKKA==" + }, + "node_modules/@pixi/extract": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/extract/-/extract-7.4.2.tgz", + "integrity": "sha512-JOX27TRWjVEjauGBbF8PU7/g6LYXnivehdgqS5QlVDv1CNHTOrz/j3MdKcVWOhyZPbH5c9sh7lxyRxvd9AIuTQ==", + "peerDependencies": { + "@pixi/core": "7.4.2" + } + }, + "node_modules/@pixi/filter-alpha": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/filter-alpha/-/filter-alpha-7.4.2.tgz", + "integrity": "sha512-9OsKJ+yvY2wIcQXwswj5HQBiwNGymwmqdxfp7mo+nZSBoDmxUqvMZzE9UNJ3eUlswuNvNRO8zNOsQvwdz7WFww==", + "peerDependencies": { + "@pixi/core": "7.4.2" + } + }, + "node_modules/@pixi/filter-blur": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/filter-blur/-/filter-blur-7.4.2.tgz", + "integrity": "sha512-gOXBbIUx6CRZP1fmsis2wLzzSsofrqmIHhbf1gIkZMIQaLsc9T7brj+PaLTTiOiyJgnvGN5j20RZnkERWWKV0Q==", + "peerDependencies": { + "@pixi/core": "7.4.2" + } + }, + "node_modules/@pixi/filter-color-matrix": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/filter-color-matrix/-/filter-color-matrix-7.4.2.tgz", + "integrity": "sha512-ykZiR59Gvj80UKs9qm7jeUTKvn+wWk6HBVJOmJbK9jFK5juakDWp7BbH26U78Q61EWj97kI1FdfcbMkuQ7rqkA==", + "peerDependencies": { + "@pixi/core": "7.4.2" + } + }, + "node_modules/@pixi/filter-displacement": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/filter-displacement/-/filter-displacement-7.4.2.tgz", + "integrity": "sha512-QS/eWp/ivsxef3xapNeGwpPX7vrqQQeo99Fux4k5zsvplnNEsf91t6QYJLG776AbZEu/qh8VYRBA5raIVY/REw==", + "peerDependencies": { + "@pixi/core": "7.4.2" + } + }, + "node_modules/@pixi/filter-fxaa": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/filter-fxaa/-/filter-fxaa-7.4.2.tgz", + "integrity": "sha512-U/ptJgDsfs/r8y2a6gCaiPfDu2IFAxpQ4wtfmBpz6vRhqeE4kI8yNIUx5dZbui57zlsJaW0BNacOQxHU0vLkyQ==", + "peerDependencies": { + "@pixi/core": "7.4.2" + } + }, + "node_modules/@pixi/filter-glow": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@pixi/filter-glow/-/filter-glow-5.2.1.tgz", + "integrity": "sha512-94I4XePDF9yqqA6KQuhPSphEHPJ2lXfqJLn0Bes8VVdwft0Ianj1wALqjoSUeBWqiJbhjBEXGDNkRZhPHvY3Xg==", + "peerDependencies": { + "@pixi/core": "^7.0.0-X" + } + }, + "node_modules/@pixi/filter-noise": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/filter-noise/-/filter-noise-7.4.2.tgz", + "integrity": "sha512-Vy9ViBFhZEGh6xKkd3kFWErolZTwv1Y5Qb1bV7qPIYbvBECYsqzlR4uCrrjBV6KKm0PufpG/+NKC5vICZaqKzg==", + "peerDependencies": { + "@pixi/core": "7.4.2" + } + }, + "node_modules/@pixi/graphics": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-7.4.2.tgz", + "integrity": "sha512-jH4/Tum2RqWzHGzvlwEr7HIVduoLO57Ze705N2zQPkUD57TInn5911aGUeoua7f/wK8cTLGzgB9BzSo2kTdcHw==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/sprite": "7.4.2" + } + }, + "node_modules/@pixi/graphics-extras": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/graphics-extras/-/graphics-extras-7.4.2.tgz", + "integrity": "sha512-X4tHRIhbatT/kUQJ0PAquuo19eAK8S9NDbqxtHv9AWgYnDlhdvWFPqd16xkPvq8POadaRyLzfwwcYYeNWLQEig==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/graphics": "7.4.2" + } + }, + "node_modules/@pixi/math": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/math/-/math-7.4.2.tgz", + "integrity": "sha512-7jHmCQoYk6e0rfSKjdNFOPl0wCcdgoraxgteXJTTHv3r0bMNx2pHD9FJ0VvocEUG7XHfj55O3+u7yItOAx0JaQ==" + }, + "node_modules/@pixi/mesh": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/mesh/-/mesh-7.4.2.tgz", + "integrity": "sha512-mEkKyQvvMrYXC3pahvH5WBIKtrtB63WixRr91ANFI7zXD+ESG6Ap6XtxMCJmXDQPwBDNk7SWVMiCflYuchG7kA==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2" + } + }, + "node_modules/@pixi/mesh-extras": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/mesh-extras/-/mesh-extras-7.4.2.tgz", + "integrity": "sha512-vNR/7wjxjs7sv9fGoKkHyU91ZAD+7EnMHBS5F3CVISlOIFxLi96NNZCB81oUIdky/90pHw40johd/4izR5zTyw==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/mesh": "7.4.2" + } + }, + "node_modules/@pixi/mixin-cache-as-bitmap": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-7.4.2.tgz", + "integrity": "sha512-6dgthi2ruUT/lervSrFDQ7vXkEsHo6CxdgV7W/wNdW1dqgQlKfDvO6FhjXzyIMRLSooUf5FoeluVtfsjkUIYrw==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/sprite": "7.4.2" + } + }, + "node_modules/@pixi/mixin-get-child-by-name": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-7.4.2.tgz", + "integrity": "sha512-0Cfw8JpQhsixprxiYph4Lj+B5n83Kk4ftNMXgM5xtZz+tVLz5s91qR0MqcdzwTGTJ7utVygiGmS4/3EfR/duRQ==", + "peerDependencies": { + "@pixi/display": "7.4.2" + } + }, + "node_modules/@pixi/mixin-get-global-position": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/mixin-get-global-position/-/mixin-get-global-position-7.4.2.tgz", + "integrity": "sha512-LcsahbVdX4DFS2IcGfNp4KaXuu7SjAwUp/flZSGIfstyKOKb5FWFgihtqcc9ZT4coyri3gs2JbILZub/zPZj1w==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2" + } + }, + "node_modules/@pixi/particle-container": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/particle-container/-/particle-container-7.4.2.tgz", + "integrity": "sha512-B78Qq86kt0lEa5WtB2YFIm3+PjhKfw9La9R++GBSgABl+g13s2UaZ6BIPxvY3JxWMdxPm4iPrQPFX1QWRN68mw==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/sprite": "7.4.2" + } + }, + "node_modules/@pixi/prepare": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/prepare/-/prepare-7.4.2.tgz", + "integrity": "sha512-PugyMzReCHXUzc3so9PPJj2OdHwibpUNWyqG4mWY2UUkb6c8NAGK1AnAPiscOvLilJcv/XQSFoNhX+N1jrvJEg==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/graphics": "7.4.2", + "@pixi/text": "7.4.2" + } + }, + "node_modules/@pixi/react": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@pixi/react/-/react-7.1.2.tgz", + "integrity": "sha512-ZhqeXcFCRfFYCvncGW6Bxc3PFCYN1PgpF60iZwQJA6/UD3DB70JQvtDkRnyQcy5yqsjNtdxS8HB42oNjQFnZrA==", + "dependencies": { + "lodash.isnil": "4.0.0", + "lodash.times": "4.3.2", + "performance-now": "2.1.0", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@babel/runtime": "^7.14.8", + "@pixi/app": ">=6.0.0", + "@pixi/constants": ">=6.0.0", + "@pixi/core": ">=6.0.0", + "@pixi/display": ">=6.0.0", + "@pixi/extensions": ">=6.0.0", + "@pixi/graphics": ">=6.0.0", + "@pixi/math": ">=6.0.0", + "@pixi/mesh": ">=6.0.0", + "@pixi/mesh-extras": ">=6.0.0", + "@pixi/particle-container": ">=6.0.0", + "@pixi/sprite": ">=6.0.0", + "@pixi/sprite-animated": ">=6.0.0", + "@pixi/sprite-tiling": ">=6.0.0", + "@pixi/text": ">=6.0.0", + "@pixi/text-bitmap": ">=6.0.0", + "@pixi/ticker": ">=6.0.0", + "prop-types": "^15.8.1", + "react": ">=17.0.0", + "react-dom": ">=17.0.0" + } + }, + "node_modules/@pixi/runner": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-7.4.2.tgz", + "integrity": "sha512-LPBpwym4vdyyDY5ucF4INQccaGyxztERyLTY1YN6aqJyyMmnc7iqXlIKt+a0euMBtNoLoxy6MWMvIuZj0JfFPA==" + }, + "node_modules/@pixi/settings": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-7.4.2.tgz", + "integrity": "sha512-pMN+L6aWgvUbwhFIL/BTHKe2ShYGPZ8h9wlVBnFHMtUcJcFLMF1B3lzuvCayZRepOphs6RY0TqvnDvVb585JhQ==", + "dependencies": { + "@pixi/constants": "7.4.2", + "@types/css-font-loading-module": "^0.0.12", + "ismobilejs": "^1.1.0" + } + }, + "node_modules/@pixi/sprite": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-7.4.2.tgz", + "integrity": "sha512-Ccf/OVQsB+HQV0Fyf5lwD+jk1jeU7uSIqEjbxenNNssmEdB7S5qlkTBV2EJTHT83+T6Z9OMOHsreJZerydpjeg==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2" + } + }, + "node_modules/@pixi/sprite-animated": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/sprite-animated/-/sprite-animated-7.4.2.tgz", + "integrity": "sha512-QPT6yxCUGOBN+98H3pyIZ1ZO6Y7BN1o0Q2IMZEsD1rNfZJrTYS3Q8VlCG5t2YlFlcB8j5iBo24bZb6FUxLOmsQ==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/sprite": "7.4.2" + } + }, + "node_modules/@pixi/sprite-tiling": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/sprite-tiling/-/sprite-tiling-7.4.2.tgz", + "integrity": "sha512-Z8PP6ewy3nuDYL+NeEdltHAhuucVgia33uzAitvH3OqqRSx6a6YRBFbNLUM9Sx+fBO2Lk3PpV1g6QZX+NE5LOg==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/sprite": "7.4.2" + } + }, + "node_modules/@pixi/spritesheet": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/spritesheet/-/spritesheet-7.4.2.tgz", + "integrity": "sha512-YIvHdpXW+AYp8vD0NkjJmrdnVHTZKidCnx6k8ATSuuvCT6O5Tuh2N/Ul2oDj4/QaePy0lVhyhAbZpJW00Jr7mQ==", + "peerDependencies": { + "@pixi/assets": "7.4.2", + "@pixi/core": "7.4.2" + } + }, + "node_modules/@pixi/text": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/text/-/text-7.4.2.tgz", + "integrity": "sha512-rZZWpJNsIQ8WoCWrcVg8Gi6L/PDakB941clo6dO3XjoII2ucoOUcnpe5HIkudxi2xPvS/8Bfq990gFEx50TP5A==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/sprite": "7.4.2" + } + }, + "node_modules/@pixi/text-bitmap": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/text-bitmap/-/text-bitmap-7.4.2.tgz", + "integrity": "sha512-lPBMJ83JnpFVL+6ckQ8KO8QmwdPm0z9Zs/M0NgFKH2F+BcjelRNnk80NI3O0qBDYSEDQIE+cFbKoZ213kf7zwA==", + "peerDependencies": { + "@pixi/assets": "7.4.2", + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/mesh": "7.4.2", + "@pixi/text": "7.4.2" + } + }, + "node_modules/@pixi/text-html": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/text-html/-/text-html-7.4.2.tgz", + "integrity": "sha512-duOu8oDYeDNuyPozj2DAsQ5VZBbRiwIXy78Gn7H2pCiEAefw/Uv5jJYwdgneKME0e1tOxz1eOUGKPcI6IJnZjw==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/sprite": "7.4.2", + "@pixi/text": "7.4.2" + } + }, + "node_modules/@pixi/ticker": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-7.4.2.tgz", + "integrity": "sha512-cAvxCh/KI6IW4m3tp2b+GQIf+DoSj9NNmPJmsOeEJ7LzvruG8Ps7SKI6CdjQob5WbceL1apBTDbqZ/f77hFDiQ==", + "dependencies": { + "@pixi/extensions": "7.4.2", + "@pixi/settings": "7.4.2", + "@pixi/utils": "7.4.2" + } + }, + "node_modules/@pixi/utils": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-7.4.2.tgz", + "integrity": "sha512-aU/itcyMC4TxFbmdngmak6ey4kC5c16Y5ntIYob9QnjNAfD/7GTsYIBnP6FqEAyO1eq0MjkAALxdONuay1BG3g==", + "dependencies": { + "@pixi/color": "7.4.2", + "@pixi/constants": "7.4.2", + "@pixi/settings": "7.4.2", + "@types/earcut": "^2.1.0", + "earcut": "^2.2.4", + "eventemitter3": "^4.0.0", + "url": "^0.11.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@scure/base": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.7.tgz", + "integrity": "sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==", + "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==", + "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==", + "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==", + "engines": { + "node": ">= 16" + }, + "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==", + "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==", + "engines": { + "node": ">= 16" + }, + "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, + "peer": true, + "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, + "peer": true + }, + "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, + "peer": true, + "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, + "peer": true + }, + "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, + "peer": true, + "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, + "peer": true + }, + "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, + "peer": true, + "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, + "peer": true + }, + "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, + "peer": true, + "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, + "peer": true + }, + "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, + "peer": true, + "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, + "peer": true, + "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, + "peer": true + }, + "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, + "peer": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "devOptional": true, + "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==", + "devOptional": true, + "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==", + "devOptional": true, + "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==", + "devOptional": true, + "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, + "peer": true, + "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, + "peer": true, + "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/@typechain/hardhat/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==", + "dev": true, + "peer": true, + "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/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/bn.js": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "4.3.16", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz", + "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==", + "dev": true, + "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, + "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, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/css-font-loading-module": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.12.tgz", + "integrity": "sha512-x2tZZYkSxXqWvTDgveSynfjq/T2HyiZHXb00j/+gy19yp70PHCizM48XFdjBCWH7eHBD0R5i/pw9yMBP/BH5uA==" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/earcut": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.4.tgz", + "integrity": "sha512-qp3m9PPz4gULB9MhjGID7wpo3gJ4bTGXm7ltNDsmOvsPduTeHp8wSW9YckBj3mljeOh4F0m2z/0JKAALRKbmLQ==" + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "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, + "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, + "peer": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true, + "peer": true + }, + "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, + "peer": true + }, + "node_modules/@types/mocha": { + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.7.tgz", + "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==", + "dev": true, + "peer": true + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/node": { + "version": "20.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", + "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", + "devOptional": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "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, + "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, + "peer": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "devOptional": true + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true, + "peer": true + }, + "node_modules/@types/react": { + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "devOptional": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/secp256k1": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.15.0.tgz", + "integrity": "sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/type-utils": "7.15.0", + "@typescript-eslint/utils": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.15.0.tgz", + "integrity": "sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/typescript-estree": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz", + "integrity": "sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.15.0.tgz", + "integrity": "sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.15.0", + "@typescript-eslint/utils": "7.15.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz", + "integrity": "sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz", + "integrity": "sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.15.0.tgz", + "integrity": "sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/typescript-estree": "7.15.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.15.0.tgz", + "integrity": "sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.15.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz", + "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.24.5", + "@babel/plugin-transform-react-jsx-self": "^7.24.5", + "@babel/plugin-transform-react-jsx-source": "^7.24.1", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "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, + "peer": true + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "devOptional": true, + "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==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "devOptional": true, + "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, + "peer": true, + "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, + "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, + "peer": true, + "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, + "peer": true, + "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==", + "dev": true, + "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, + "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, + "peer": true, + "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==", + "dev": true, + "peer": true, + "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, + "peer": true, + "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, + "peer": true, + "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==", + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "peer": true + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "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==", + "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==", + "devOptional": true, + "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==", + "dev": true + }, + "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, + "peer": true, + "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==", + "dev": true, + "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, + "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, + "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==", + "dev": true, + "peer": true, + "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, + "peer": true, + "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, + "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, + "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==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "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" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dev": true, + "peer": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "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==" + }, + "node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dev": true, + "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==", + "dev": true, + "peer": true + }, + "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==", + "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, + "peer": true + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true, + "peer": true + }, + "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, + "peer": true, + "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/boxen/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "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/boxen/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/boxen/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==", + "dev": true, + "peer": true + }, + "node_modules/boxen/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==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/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==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "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==", + "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==", + "dev": true, + "peer": true + }, + "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, + "peer": true + }, + "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, + "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/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "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, + "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, + "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, + "peer": true + }, + "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, + "peer": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "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==", + "dev": true, + "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, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001640", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz", + "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "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, + "peer": true, + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/chai": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "dev": true, + "peer": true, + "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.0.8" + }, + "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, + "peer": true, + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 6" + } + }, + "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, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "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==", + "dev": true, + "peer": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "dev": true, + "peer": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "peer": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "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, + "peer": true, + "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, + "peer": true, + "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, + "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, + "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, + "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, + "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, + "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, + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "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, + "dependencies": { + "color-name": "1.1.3" + } + }, + "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 + }, + "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, + "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, + "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, + "peer": true + }, + "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, + "peer": true, + "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, + "peer": true, + "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/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, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "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, + "peer": true, + "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, + "peer": true, + "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==", + "dev": true + }, + "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" + ], + "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/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, + "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, + "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, + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "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, + "peer": true, + "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, + "peer": true + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "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, + "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, + "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==", + "devOptional": true, + "peer": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "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, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true + }, + "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.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "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, + "peer": true, + "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==", + "dev": true, + "peer": true, + "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, + "peer": true, + "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 + }, + "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==", + "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, + "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, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "peer": true, + "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==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.816", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz", + "integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "peer": true, + "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.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true, + "peer": true + }, + "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==" + }, + "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==", + "dev": true, + "peer": true, + "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, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "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==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "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, + "engines": { + "node": ">=0.8.0" + } + }, + "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, + "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, + "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, + "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, + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@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-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.7.tgz", + "integrity": "sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "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, + "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, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/eslint/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/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==", + "dev": true + }, + "node_modules/eslint/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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "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, + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "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, + "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, + "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, + "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, + "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/" + } + ], + "peer": true + }, + "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/" + } + ], + "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/" + } + ], + "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, + "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.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "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" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "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/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.1.0.tgz", + "integrity": "sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "^1.4.0" + } + }, + "node_modules/ethereum-bloom-filters/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, + "peer": true, + "engines": { + "node": ">= 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, + "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-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "peer": true, + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-abi/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true, + "peer": true + }, + "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "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, + "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.13.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.1.tgz", + "integrity": "sha512-hdJ2HOxg/xx97Lm9HdCWk949BfYqYWpyw4//78SiwOLgASyfrNszfMUNB2joKjvGUdwhHfaiMMFFwacVVoLR9A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "peer": true, + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.17.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/ethers/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true, + "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, + "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, + "peer": true + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "peer": true, + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "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, + "peer": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "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==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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.4" + }, + "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==", + "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==", + "dev": true + }, + "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 + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "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, + "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==", + "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, + "peer": true, + "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, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "peer": true, + "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, + "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.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "peer": true, + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "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, + "peer": true + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/framer-motion": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.3.0.tgz", + "integrity": "sha512-hjYjMUQaWuqilwRr5kC0CunHZFVMtKWHy/IdL/LPRBD0C491DKTvYwQRJ5qRXEAOT+Rth7Vi4XBe4TA4bFOn3A==", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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, + "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==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "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==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "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==", + "dev": true, + "peer": true, + "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==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.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, + "peer": true, + "engines": { + "node": ">=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, + "peer": true, + "dependencies": { + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" + }, + "bin": { + "testrpc-sc": "index.js" + } + }, + "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, + "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": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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, + "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, + "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, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "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/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "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==", + "dev": true, + "peer": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "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, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hardhat": { + "version": "2.22.6", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.6.tgz", + "integrity": "sha512-abFEnd9QACwEtSvZZGSmzvw7N3zhQN1cDKz5SLHAupfG24qTHofCjqvD5kT5Wwsq5XOL0ON1Mq5rr4v0XX5ciw==", + "dev": true, + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/edr": "^0.4.1", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "boxen": "^5.1.2", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.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", + "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, + "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/" + } + ], + "peer": true + }, + "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/" + } + ], + "peer": true, + "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/" + } + ], + "peer": true, + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/hardhat/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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, + "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/hardhat/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "peer": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/hardhat/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "peer": true, + "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/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, + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/hardhat/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "peer": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/hardhat/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "peer": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "peer": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/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, + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "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, + "peer": true, + "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, + "peer": 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/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, + "engines": { + "node": ">=4" + } + }, + "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==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "peer": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "peer": true, + "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==", + "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, + "peer": true, + "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, + "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==", + "dev": true, + "peer": true, + "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, + "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.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "peer": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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, + "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, + "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, + "peer": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "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, + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz", + "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==", + "devOptional": true, + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/immutable": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "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, + "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, + "peer": true, + "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.", + "dev": true, + "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==", + "dev": true + }, + "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, + "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, + "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, + "peer": true, + "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==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "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==", + "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==", + "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, + "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==", + "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, + "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, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "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, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "peer": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/ismobilejs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz", + "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==" + }, + "node_modules/jackspeak": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.2.tgz", + "integrity": "sha512-qH3nOSj8q/8+Eg8LUPOq3C+6HWkpUioIjDsq1+D4zY91oZvpPttw8GwtF1nReRYKXl+1AORyFqtm2f5Q1SB6/Q==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "14 >=14.21 || 16 >=16.20 || >=18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "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==", + "dev": true, + "peer": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "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 + }, + "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==", + "dev": true + }, + "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 + }, + "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==", + "dev": true, + "peer": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "dev": true, + "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, + "peer": true, + "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, + "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, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "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, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "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, + "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, + "peer": true + }, + "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, + "peer": true + }, + "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, + "peer": true + }, + "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==", + "dev": true, + "peer": true + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" + }, + "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 + }, + "node_modules/lodash.times": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.times/-/lodash.times-4.3.2.tgz", + "integrity": "sha512-FfaJzl0SA35CRPDh5SWe2BTght6y5KSK7yJv166qIp/8q7qOwBDCvuDZE2RUSMRpBkLF6rZKbLEUoTmaP3qg6A==" + }, + "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, + "peer": true + }, + "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, + "peer": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "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/log-symbols/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/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==", + "dev": true, + "peer": true + }, + "node_modules/log-symbols/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==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/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==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "peer": true, + "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, + "peer": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "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==", + "devOptional": true, + "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, + "peer": true + }, + "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, + "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, + "peer": 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==", + "engines": { + "node": ">= 8" + } + }, + "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==" + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "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, + "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, + "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==", + "dev": true, + "peer": true + }, + "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==", + "dev": true, + "peer": true + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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, + "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, + "peer": true, + "dependencies": { + "obliterator": "^2.0.0" + } + }, + "node_modules/mocha": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.6.0.tgz", + "integrity": "sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw==", + "dev": true, + "peer": true, + "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/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, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/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, + "peer": true, + "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/mocha/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==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "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, + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/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==", + "dev": true, + "peer": true + }, + "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, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "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 + }, + "node_modules/ndjson": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz", + "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==", + "dev": true, + "peer": true, + "dependencies": { + "json-stringify-safe": "^5.0.1", + "minimist": "^1.2.5", + "readable-stream": "^3.6.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "ndjson": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "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, + "peer": true + }, + "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, + "peer": true + }, + "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, + "peer": true, + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "dev": true, + "peer": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true, + "peer": true, + "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, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "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, + "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, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true, + "peer": 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, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "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, + "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==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "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, + "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, + "peer": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + }, + "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==", + "dev": true, + "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/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==", + "dev": true, + "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, + "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==", + "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==" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.2.tgz", + "integrity": "sha512-voV4dDrdVZVNz84n39LFKDaRzfwhdzJ7akpyXfTMxCgRUp07U3lcJUXRlhTKP17rgt09sUzLi5iCitpEAr+6ug==", + "engines": { + "node": "14 || 16 || 18 || 20 || >=22" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "peer": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "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==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pixi.js": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-7.4.2.tgz", + "integrity": "sha512-TifqgHGNofO7UCEbdZJOpUu7dUnpu4YZ0o76kfCqxDa4RS8ITc9zjECCbtalmuNXkVhSEZmBKQvE7qhHMqw/xg==", + "dependencies": { + "@pixi/accessibility": "7.4.2", + "@pixi/app": "7.4.2", + "@pixi/assets": "7.4.2", + "@pixi/compressed-textures": "7.4.2", + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/events": "7.4.2", + "@pixi/extensions": "7.4.2", + "@pixi/extract": "7.4.2", + "@pixi/filter-alpha": "7.4.2", + "@pixi/filter-blur": "7.4.2", + "@pixi/filter-color-matrix": "7.4.2", + "@pixi/filter-displacement": "7.4.2", + "@pixi/filter-fxaa": "7.4.2", + "@pixi/filter-noise": "7.4.2", + "@pixi/graphics": "7.4.2", + "@pixi/mesh": "7.4.2", + "@pixi/mesh-extras": "7.4.2", + "@pixi/mixin-cache-as-bitmap": "7.4.2", + "@pixi/mixin-get-child-by-name": "7.4.2", + "@pixi/mixin-get-global-position": "7.4.2", + "@pixi/particle-container": "7.4.2", + "@pixi/prepare": "7.4.2", + "@pixi/sprite": "7.4.2", + "@pixi/sprite-animated": "7.4.2", + "@pixi/sprite-tiling": "7.4.2", + "@pixi/spritesheet": "7.4.2", + "@pixi/text": "7.4.2", + "@pixi/text-bitmap": "7.4.2", + "@pixi/text-html": "7.4.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" + } + }, + "node_modules/pony-cause": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.11.tgz", + "integrity": "sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/postcss": { + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "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==" + }, + "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, + "engines": { + "node": ">= 0.8.0" + } + }, + "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, + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "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, + "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, + "peer": true, + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "peer": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "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, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.2.tgz", + "integrity": "sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "peer": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "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, + "peer": true, + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/recursive-readdir/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/recursive-readdir/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "peer": true + }, + "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, + "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, + "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, + "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, + "peer": true, + "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, + "peer": true, + "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==", + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "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, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "peer": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "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, + "peer": true, + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/rollup": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "fsevents": "~2.3.2" + } + }, + "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" + } + ], + "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" + } + ], + "peer": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "peer": true + }, + "node_modules/sass": { + "version": "1.77.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", + "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "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, + "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, + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/sc-istanbul/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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, + "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, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "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, + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sc-istanbul/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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, + "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, + "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, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true, + "peer": true + }, + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, + "hasInstallScript": true, + "peer": true, + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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, + "peer": true, + "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==", + "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, + "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, + "peer": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "peer": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "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, + "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==", + "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==", + "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, + "peer": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.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==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "peer": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "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, + "peer": true, + "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/slice-ansi/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/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==", + "dev": true, + "peer": true + }, + "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, + "peer": true, + "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, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solidity-coverage": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.12.tgz", + "integrity": "sha512-8cOB1PtjnjFRqOgwFiD8DaUsYJtVJ6+YdXQtSZDrLGf8cdhhh8xzTtGzVTGeBf15kTv0v7lYPJlV/az7zLEPJw==", + "dev": true, + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.18.0", + "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.18.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", + "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==", + "dev": true, + "peer": true + }, + "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, + "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/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, + "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/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, + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "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, + "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-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.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, + "peer": true, + "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, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "peer": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "peer": true + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "peer": true, + "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, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "peer": true, + "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, + "peer": true, + "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, + "peer": true + }, + "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==", + "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-cjs": { + "name": "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==", + "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==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "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==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "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, + "peer": true, + "dependencies": { + "get-port": "^3.1.0" + } + }, + "node_modules/table": { + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "dev": true, + "peer": true, + "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, + "peer": true, + "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, + "peer": true, + "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, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dev": true, + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "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, + "peer": true + }, + "node_modules/tailwindcss": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", + "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/tailwindcss/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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 + }, + "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, + "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, + "peer": true + }, + "node_modules/then-request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "peer": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "peer": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=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==", + "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, + "peer": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "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, + "peer": true, + "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-command-line-args/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-command-line-args/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "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/ts-command-line-args/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-command-line-args/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==", + "dev": true, + "peer": true + }, + "node_modules/ts-command-line-args/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==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-command-line-args/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==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "peer": true, + "peerDependencies": { + "typescript": ">=3.7.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "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==", + "devOptional": true, + "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==", + "devOptional": true, + "peer": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true, + "peer": true + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true, + "peer": true + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true, + "peer": true + }, + "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, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "peer": true, + "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, + "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, + "peer": true, + "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/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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, + "peer": true, + "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, + "peer": true, + "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, + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/typechain/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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, + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "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, + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "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, + "peer": true + }, + "node_modules/typescript": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "devOptional": 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, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/uglify-js": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz", + "integrity": "sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dev": true, + "peer": true, + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "devOptional": 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==", + "dev": true, + "peer": true, + "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, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.2" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.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, + "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==" + }, + "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, + "peer": true, + "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==", + "devOptional": true, + "peer": true + }, + "node_modules/vite": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", + "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.39", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": 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, + "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/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "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, + "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, + "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/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "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, + "peer": true, + "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, + "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, + "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, + "peer": true, + "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, + "peer": true, + "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, + "peer": true + }, + "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, + "peer": true, + "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/wrap-ansi-cjs": { + "name": "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==", + "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/wrap-ansi-cjs/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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/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==" + }, + "node_modules/wrap-ansi/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/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==", + "dev": true, + "peer": true + }, + "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 + }, + "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, + "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, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "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, + "peer": true, + "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, + "peer": true, + "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, + "peer": true, + "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==", + "devOptional": true, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zustand": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.4.tgz", + "integrity": "sha512-/BPMyLKJPtFEvVL0E9E9BTUM63MNyhPGlvxk1XjrfWTUlV+BR8jufjsovHzrtR6YNcBEcL7cMHovL1n9xHawEg==", + "dependencies": { + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + } + } +} diff --git a/bs-game-wip/package.json b/bs-game-wip/package.json new file mode 100644 index 00000000..3cbf817e --- /dev/null +++ b/bs-game-wip/package.json @@ -0,0 +1,42 @@ +{ + "name": "bs-game-wip", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "npx hardhat compile && vite", + "build": "tsc -b && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@metamask/rpc-errors": "^6.3.1", + "@pixi/events": "^7.4.2", + "@pixi/filter-glow": "^5.2.1", + "@pixi/graphics-extras": "^7.4.2", + "@pixi/react": "^7.1.2", + "autoprefixer": "^10.4.19", + "framer-motion": "^11.3.0", + "pixi.js": "^7.1.4", + "postcss": "^8.4.39", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "tailwindcss": "^3.4.4", + "zustand": "^4.5.4" + }, + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "@types/node": "^20.14.9", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^7.13.1", + "@typescript-eslint/parser": "^7.13.1", + "@vitejs/plugin-react": "^4.3.1", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "sass": "^1.77.6", + "typescript": "^5.2.2", + "vite": "^5.3.1" + } +} diff --git a/bs-game-wip/postcss.config.js b/bs-game-wip/postcss.config.js new file mode 100644 index 00000000..2e7af2b7 --- /dev/null +++ b/bs-game-wip/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/bs-game-wip/src/App.css b/bs-game-wip/src/App.css new file mode 100644 index 00000000..a4298bdd --- /dev/null +++ b/bs-game-wip/src/App.css @@ -0,0 +1,62 @@ +#root { + max-width: 1480px; + margin: 0 auto; + padding: 2rem; + text-align: left; + text-transform: uppercase; +} + +button { + border-radius: 0; + border: 1px solid black; + background: black; + text-transform: uppercase; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #ffffff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +/* width */ +::-webkit-scrollbar { + width: 5px; + height: 5px; +} + +/* Track */ +::-webkit-scrollbar-track { + background: #373737; +} + +/* Handle */ +::-webkit-scrollbar-thumb { + background: #cacaca; +} + +/* Handle on hover */ +::-webkit-scrollbar-thumb:hover { + background: #fff; +} + +.space-mono-regular { + font-family: "Space Mono", monospace; + font-weight: 400; + font-style: normal; +} + +.space-mono-bold { + font-family: "Space Mono", monospace; + font-weight: 700; + font-style: normal; +} + + diff --git a/bs-game-wip/src/App.tsx b/bs-game-wip/src/App.tsx new file mode 100644 index 00000000..43ae015d --- /dev/null +++ b/bs-game-wip/src/App.tsx @@ -0,0 +1,99 @@ +import "./App.css"; +import * as React from "react"; +import { QueryClientProvider, QueryClient } from "@tanstack/react-query"; +import MetaMask from "@/components/MetaMask/MetaMask"; +import MessageLog from "@/components/MessageLog/MessageLog"; +import Graveyard from "./components/Graveyard/Graveyard"; +import BattleGrid from "./components/BattleGrid/BattleGrid"; +import logo from "@/assets/white_logotype.png" +import PrizePool from "./components/PrizePool/PrizePool"; +import CellsRemaining from "./components/CellsRemaining/CellsRemaining"; +import ProcessingNotification from "./components/ProcessingNotification/ProcessingNotification"; +import {useState} from "react"; +import {useEffect} from "react"; +import detectEthereumProvider from "@metamask/detect-provider"; +import {trackEvent} from "./lib/trackEvent"; +import {useWalletStore} from "./stores/walletStore"; +import {useMessageStore} from "./stores/messageStore"; + +function App() { + + const [setProvider, address, setAddress] = useWalletStore((state) => [ + state.setProvider, + state.address, + state.setAddress, + ]); + const addNewMessage = useMessageStore((state) => state.addNewMessage); + const [initialized, setInitialized] = useState(false); + + useEffect(() => { + connectToMetaMask(); + }, [address]); + + const connectToMetaMask = async () => { + try { + const provider = await detectEthereumProvider(); + //TODO: If we want to only support metamask there is a 'isMetaMask' property on the provider object + if (provider) { + setProvider(provider); + const chainId = await provider.request({ method: "eth_chainId" }); + if (chainId !== "0x1bb") { + addNewMessage( + 'Not connected to Ten ! Connect at https://testnet.ten.xyz/ ' + ); + return; + } + + const accounts = await provider.request({ + method: "eth_requestAccounts", + }); + + setAddress(accounts[0]); + addNewMessage("Connected to wallet ! Account: " + accounts[0]); + setInitialized(true) + + trackEvent("connect_wallet", { + value: accounts[0], + }); + + } else { + addNewMessage("Please install MetaMask!", "ERROR"); + setInitialized(true) + } + } catch (err) { + console.error("Error:", err.message); + setInitialized(true) + } + }; + + if (!initialized) { + return null + } + + return ( + <> +
+ test +
+
+
+ +
+
+ +
+
+ + + +
+
+ +
+
+ + + ); +} + +export default App; diff --git a/bs-game-wip/src/TheGrid/index.ts b/bs-game-wip/src/TheGrid/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/bs-game-wip/src/api/contract/contract.api.ts b/bs-game-wip/src/api/contract/contract.api.ts new file mode 100644 index 00000000..5745c051 --- /dev/null +++ b/bs-game-wip/src/api/contract/contract.api.ts @@ -0,0 +1,5 @@ +export const dummyCall = new Promise((resolve) => { + setTimeout(() => { + resolve({msg: "DONE"}) + }, 5000) +}) \ No newline at end of file diff --git a/bs-game-wip/src/api/contract/contract.keys.ts b/bs-game-wip/src/api/contract/contract.keys.ts new file mode 100644 index 00000000..baec520c --- /dev/null +++ b/bs-game-wip/src/api/contract/contract.keys.ts @@ -0,0 +1,3 @@ +export default { + test: 'test' +} \ No newline at end of file diff --git a/bs-game-wip/src/api/contract/contract.models.ts b/bs-game-wip/src/api/contract/contract.models.ts new file mode 100644 index 00000000..e69de29b diff --git a/bs-game-wip/src/api/contract/contract.mutations.ts b/bs-game-wip/src/api/contract/contract.mutations.ts new file mode 100644 index 00000000..e69de29b diff --git a/bs-game-wip/src/api/contract/contract.queries.ts b/bs-game-wip/src/api/contract/contract.queries.ts new file mode 100644 index 00000000..c8387cd6 --- /dev/null +++ b/bs-game-wip/src/api/contract/contract.queries.ts @@ -0,0 +1,4 @@ +import {useQuery} from "@tanstack/react-query"; +import {dummyCall} from "./contract.api"; + +export const query = useQuery({ queryKey: ['test'], queryFn: dummyCall }) \ No newline at end of file diff --git a/bs-game-wip/src/assets/32x32.png b/bs-game-wip/src/assets/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..316858e1b2bdf9c48111a436162e00107d0403ca GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=Dh+L6~vJ#O${~K_gEW$B+p3x92u80*yLy;P~HiHtzBTA1*D~ m`zl(@`h7MdP!R(B;qzeg?O?IF@$U>XNYvBS&t;ucLK6VLW-5{Z literal 0 HcmV?d00001 diff --git a/bs-game-wip/src/assets/64x64.png b/bs-game-wip/src/assets/64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..46677711fa19df7c691a336f2849a46b23cc7b17 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~g0-G5jv*CsZ!c_QWKiH~*zoGVeK`BR2Awx^ l{<^&hTFVwdJG62pd#DvljiGGZVxU79JYD@<);T3K0RR=fM}YtU literal 0 HcmV?d00001 diff --git a/bs-game-wip/src/assets/contract/address.json b/bs-game-wip/src/assets/contract/address.json new file mode 100644 index 00000000..40baba3e --- /dev/null +++ b/bs-game-wip/src/assets/contract/address.json @@ -0,0 +1 @@ +{ "address": "0x96dD05c4b0e517A64b4627b33673b7051f5b52f1" } diff --git a/bs-game-wip/src/assets/hex.svg b/bs-game-wip/src/assets/hex.svg new file mode 100644 index 00000000..7afbf5d9 --- /dev/null +++ b/bs-game-wip/src/assets/hex.svg @@ -0,0 +1,7 @@ + + + diff --git a/bs-game-wip/src/assets/metamask-logo.svg b/bs-game-wip/src/assets/metamask-logo.svg new file mode 100644 index 00000000..d017c848 --- /dev/null +++ b/bs-game-wip/src/assets/metamask-logo.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/bs-game-wip/src/assets/shipFresh.svg b/bs-game-wip/src/assets/shipFresh.svg new file mode 100644 index 00000000..6f05589d --- /dev/null +++ b/bs-game-wip/src/assets/shipFresh.svg @@ -0,0 +1 @@ + diff --git a/bs-game-wip/src/assets/shipSunk.svg b/bs-game-wip/src/assets/shipSunk.svg new file mode 100644 index 00000000..1a9c6989 --- /dev/null +++ b/bs-game-wip/src/assets/shipSunk.svg @@ -0,0 +1 @@ + diff --git a/bs-game-wip/src/assets/white_logotype.png b/bs-game-wip/src/assets/white_logotype.png new file mode 100644 index 0000000000000000000000000000000000000000..f3c47d13f97b761b56492611fc2ffcb2af358853 GIT binary patch literal 13581 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 literal 0 HcmV?d00001 diff --git a/bs-game-wip/src/components/AnimatedText/AnimatedText.tsx b/bs-game-wip/src/components/AnimatedText/AnimatedText.tsx new file mode 100644 index 00000000..51ed1b8a --- /dev/null +++ b/bs-game-wip/src/components/AnimatedText/AnimatedText.tsx @@ -0,0 +1,46 @@ +import {motion, useMotionValue, useTransform, animate} from 'framer-motion'; +import {useEffect, useState} from "react"; +import styles from "./styles.module.scss" + +type Props = { + text: string, + delay?: number, + speed?: number, + classes?: string, + onComplete?: () => void +} + +export default function AnimatedText({text, delay = 0, speed = .05, classes, onComplete }: Props) { + const [done, setDone] = useState(false); + const count = useMotionValue(0); + const rounded = useTransform(count, (latest) => Math.round(latest)); + + const displayText = useTransform(rounded, (latest) => + text.slice(0, latest) + ); + + const handleLineCompletion = () => { + setDone(true); + onComplete && onComplete() + } + + useEffect(() => { + const controls = animate(count, text.length, { + type: "tween", + duration: text.length * speed, + ease: "easeInOut", + delay, + onComplete: () => handleLineCompletion() + }); + return controls.stop; + }, []); + + return ( + <> + {displayText} + {!done && ( + + )} + + ); +}; \ No newline at end of file diff --git a/bs-game-wip/src/components/AnimatedText/AnimatedTextCursor.tsx b/bs-game-wip/src/components/AnimatedText/AnimatedTextCursor.tsx new file mode 100644 index 00000000..e69de29b diff --git a/bs-game-wip/src/components/AnimatedText/styles.module.scss b/bs-game-wip/src/components/AnimatedText/styles.module.scss new file mode 100644 index 00000000..a72ac0d4 --- /dev/null +++ b/bs-game-wip/src/components/AnimatedText/styles.module.scss @@ -0,0 +1,26 @@ +.cursor { + display: inline-block; + width: .6em; + background: currentColor; + height: 1em; + + &.withFlash { + opacity: 0; + animation: CursorFlash 1s linear infinite; + } +} + +@keyframes CursorFlash { + 0% { + opacity: 0 + } + 25% { + opacity: 1 + } + 75% { + opacity: 1 + } + 75% { + opacity: 0 + } +} \ No newline at end of file diff --git a/bs-game-wip/src/components/BattleGrid/BattleGrid.tsx b/bs-game-wip/src/components/BattleGrid/BattleGrid.tsx new file mode 100644 index 00000000..6e281251 --- /dev/null +++ b/bs-game-wip/src/components/BattleGrid/BattleGrid.tsx @@ -0,0 +1,71 @@ +import * as React from "react"; +import HudWindow from "../HudWindow/HudWindow"; +import BattleGridContainer from "./BattleGridContainer"; +import BattleGridCurrentCoordinates from "./BattleGridCurrentCoordinates"; +import { useWalletStore } from "../../stores/walletStore"; +import AnimatedText from "../AnimatedText/AnimatedText"; +import {useEffect, useState} from "react"; +import { motion } from "framer-motion"; + +export default function BattleGrid() { + const isConnected = useWalletStore((state) => state.isConnected); + const [displayGrid, setDisplayGrid] = useState(false); + + useEffect(() => { + + if (isConnected) { + setTimeout(() => { + setDisplayGrid(true) + }, 3000) + } + + }, [isConnected]) + + const animation = { + initial: { opacity: 0}, + animate: { opacity: 1 }, + exit: { opacity: 0 }, + transition: { delay: 0, duration:1 }, + }; + + + const Disconnected = ( +
+
+

SYSTEM OFFLINE.

+

+ +

+

+ +

+
+
+ ); + + return ( + +
+ + {displayGrid ? ( + + + + + ):

Loading Grid.

} +
+
+ ); +} diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx new file mode 100644 index 00000000..3c28ae04 --- /dev/null +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx @@ -0,0 +1,68 @@ +import React, {useEffect, useMemo, useRef, useState} from "react"; +import BattleGridCell from "./BattleGridCell"; +import { Container, Stage } from "@pixi/react"; +import BattleGridCursor from "./BattleGridCursor"; +import { + CONTAINER_HEIGHT, + CONTAINER_WIDTH, + HEX_HEIGHT, + HEX_WIDTH, +} from "@/lib/constants"; +import BattleGridMisses from "./BattleGridMisses"; +import BattleGridHits from "./BattleGridHits"; +import {BloomFilter} from "@pixi/filter-bloom"; +import {HEX_GRID_MARGIN} from "../../lib/constants"; + +export default function BattleGridCanvas({ grid, width, height }) { + const [viewport, setViewport] = useState({ + width: CONTAINER_WIDTH, + height: CONTAINER_HEIGHT, + }); + const bloomFilter = new BloomFilter(3, 3, 2); + + const gridCells = useMemo( + () => + grid.map(({ row, col, x, y, state }) => ( + + )), + [grid] + ); + + return ( + + + {/**/} + + {/*{hexagons.map(*/} + {/* ({ row, col, x, y }) =>*/} + {/* isInViewport(x, y, viewport, scrollPosition) && (*/} + {/* */} + {/* )*/} + {/*)}*/} + + {gridCells} + + + + + + + + ); +} diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx new file mode 100644 index 00000000..a2651fdc --- /dev/null +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx @@ -0,0 +1,49 @@ +import {Graphics, Text} from "@pixi/react"; +import { TextStyle } from 'pixi.js' +import React from "react"; +import {hexHitArea} from "@/lib/constants"; + +export default function BattleGridCell ({col, row, x, y, state}) { + return ( + <> + { + g.position.set(x, y); + g.clear(); + + if (state === "UNTOUCHED") { + g.beginFill(0xD9D9D9, 0) + g.lineStyle(1, 0x464646, 1); + } + if (state === 'MISSED') { + g.beginFill(0x5A5A5A, 1) + g.lineStyle(1, 0x4F4F4F, 1); + } + if (state === 'HIT') { + g.beginFill(0xE16F6F, 1) + g.lineStyle(1, 0xE16F6F, 1); + } + + g.drawPolygon(hexHitArea); + g.endFill(); + }} + /> + {/**/} + + ) +} \ No newline at end of file diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx new file mode 100644 index 00000000..faf29199 --- /dev/null +++ b/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx @@ -0,0 +1,71 @@ +import React, { useEffect, useRef } from "react"; +import { useBattleGridStore } from "../../stores/battleGridStore"; +import BattleGridCanvas from "./BattleGridCanvas"; +import {COLS, CONTAINER_HEIGHT, CONTAINER_WIDTH, ROWS} from "../../lib/constants"; + + +const styles = { + container: { + width: "100%", + height: CONTAINER_HEIGHT + "px", + overflow: "auto", + }, +}; + +export default function BattleGridContainer() { + const setMousePosition = useBattleGridStore( + (state) => state.setMousePosition + ); + const initGrid = useBattleGridStore((state) => state.initGrid); + const grid = useBattleGridStore((state) => state.grid); + const selectCell = useBattleGridStore((state) => state.selectCell); + + // const {handleCellSelection} = useCellSelection() + + useEffect(() => { + initGrid(COLS, ROWS); + }, []); + + const lastScrollPosition = useRef({ top: 0, left: 0 }); + const elementRef = useRef(null); + + const handleScroll = () => { + // if (elementRef.current) { + // const newScrollLeft = elementRef.current.scrollLeft; + // const newScrollTop = elementRef.current.scrollTop; + // if ( + // Math.abs(newScrollTop - lastScrollPosition.current.top) > threshold || + // Math.abs(newScrollLeft - lastScrollPosition.current.left) > threshold + // ) { + // setScrollPosition(newScrollLeft, newScrollTop); + // lastScrollPosition.current = { top: newScrollTop, left: newScrollLeft }; + // } + // } + }; + + const handleMouseMove = (event) => { + const rect = elementRef.current.getBoundingClientRect(); + const scrollLeft = elementRef.current.scrollLeft; + const scrollTop = elementRef.current.scrollTop; + + const x = event.clientX - rect.left + scrollLeft; + const y = event.clientY - rect.top + scrollTop; + setMousePosition(x, y); + }; + + const handleMouseClick = () => { + selectCell() + }; + + return ( +
+ +
+ ); +} diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx new file mode 100644 index 00000000..bc405cb4 --- /dev/null +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx @@ -0,0 +1,11 @@ +import {useBattleGridStore} from "../../stores/battleGridStore"; + +export default function BattleGridCurrentCoordinates () { + const currentHoveredCell = useBattleGridStore( + (state) => state.hoveredCell + ); + + return ( +
X:{currentHoveredCell?.col}, Y: {currentHoveredCell?.row}
+ ) +} \ No newline at end of file diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx new file mode 100644 index 00000000..fd016b93 --- /dev/null +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx @@ -0,0 +1,53 @@ +import {useBattleGridStore} from "@/stores/battleGridStore"; +import {Graphics, useTick} from "@pixi/react"; +import React, {useRef} from "react"; +import {HEX_HEIGHT, HEX_WIDTH, hexHitArea, VERTICAL_OFFSET} from "@/lib/constants"; +import {useContractStore} from "../../stores/contractStore"; + +export default function BattleGridCursor () { + const [[x,y], hoveredCell] = useBattleGridStore((state) => [state.mousePosition, state.hoveredCell]) + const guessState = useContractStore((state) => state.guessState) + const isLoadingState = guessState !== "IDLE" + const shapeRef = useRef(null); + const scaleRef = useRef(1); + const directionRef = useRef(1); + const timeRef = useRef(0); + + useTick((delta) => { + if (shapeRef.current) { + timeRef.current += delta; + const scaleSpeed = 0.1; + const rotationSpeed = 1; + const maxScale = 1 + const minScale = isLoadingState ? .7 : .9 + const scaleRange = (maxScale - minScale) / 2; + const midScale = (maxScale + minScale) / 2; + const newScale = midScale + Math.sin(timeRef.current * scaleSpeed) * scaleRange; + + shapeRef.current.scale.set(newScale); + + if (isLoadingState) { + shapeRef.current.rotation += timeRef.current*rotationSpeed + } else { + shapeRef.current.rotation = 0 + } + } + }); + + if (!hoveredCell) { + return null + } + + return ( + { + g.position.set(x, y); + g.clear(); + g.lineStyle(1, 0xFFFFFF, 1); + g.drawPolygon(hexHitArea); + g.endFill(); + }} + /> + ) +} \ No newline at end of file diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx new file mode 100644 index 00000000..2dcd5df3 --- /dev/null +++ b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx @@ -0,0 +1,62 @@ +import React, {useEffect, useMemo, useRef} from "react"; +import BattleGridCell from "./BattleGridCell"; +import {useBattleGridStore} from "../../stores/battleGridStore"; +import {Container, useTick} from "@pixi/react"; + +import {GlowFilter} from "@pixi/filter-glow" +import {OutlineFilter} from "@pixi/filter-outline" +import {QUERY_INTERVAL_MS} from "../../lib/constants"; +import {useWalletStore} from "../../stores/walletStore"; +import {useContractStore} from "../../stores/contractStore"; + +export default function BattleGridHits () { + const hitCells = useBattleGridStore((state) => state.hitCells); + const isConnected = useWalletStore(state => state.isConnected) + const getAllHits = useContractStore(state => state.getAllHits) + const revealedGridCells = useMemo( + () => (hitCells.map(({row, col, x, y}) => )), + [hitCells] + ); + + const containerRef = useRef(null); + const glowFilterRef = useRef(new GlowFilter({ distance: 15, innerStrength:0, color: 0xE82E2E, alpha: .4 })); + const outlineFilterRef = useRef(new OutlineFilter(1, 0xFFFFFF, 1, 1, false)); + const timeRef = useRef(0); + + + useEffect(() => { + let interval + + if (isConnected) { + getAllHits() + interval = setInterval(() => { + getAllHits() + }, QUERY_INTERVAL_MS) + } + + return () => clearInterval(interval) + }, [isConnected]) + + // useTick((delta) => { + // + // const glowFilter = glowFilterRef.current; + // const outlineFilter = outlineFilterRef.current; + // const speed = .04 + // timeRef.current += delta; + // const pulse = Math.sin(timeRef.current * speed) * .75 + .75; + // + // glowFilter.outerStrength = 1 + pulse; // Oscillate between 2 and 4 + // outlineFilter.alpha = 1 + pulse + // // glowFilter.innerStrength = pulse/2; // Oscillate between 1 and 2 + // + // if (containerRef.current) { + // containerRef.current.filters = [outlineFilter]; + // } + // }); + + return ( + + {revealedGridCells} + + ) +} \ No newline at end of file diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx new file mode 100644 index 00000000..eaeda5f2 --- /dev/null +++ b/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx @@ -0,0 +1,37 @@ +import React, {useEffect, useMemo} from "react"; +import BattleGridCell from "./BattleGridCell"; +import {useBattleGridStore} from "../../stores/battleGridStore"; +import {Container} from "@pixi/react"; +import {QUERY_INTERVAL_MS} from "../../lib/constants"; +import {useContractStore} from "../../stores/contractStore"; +import {useWalletStore} from "../../stores/walletStore"; + +export default function BattleGridMisses () { + const missedCells = useBattleGridStore((state) => state.missedCells); + const isConnected = useWalletStore(state => state.isConnected) + const getAllMisses = useContractStore(state => state.getAllMisses) + const revealedGridCells = useMemo( + () => (missedCells.map(({row, col, x, y}) => )), + [missedCells] + ); + + + useEffect(() => { + let interval + + if (isConnected) { + getAllMisses() + interval = setInterval(() => { + getAllMisses() + }, QUERY_INTERVAL_MS) + } + + return () => clearInterval(interval) + }, [isConnected]) + + return ( + + {revealedGridCells} + + ) +} \ No newline at end of file diff --git a/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx new file mode 100644 index 00000000..691d1366 --- /dev/null +++ b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx @@ -0,0 +1,36 @@ +import HudWindow from "@/components/HudWindow/HudWindow"; +import { useContractStore } from "@/stores/contractStore"; +import { COLS, ROWS } from "@/lib/constants"; +import { useWalletStore } from "@/stores/walletStore"; + +export default function CellsRemaining() { + const [misses, hits] = useContractStore((state) => [ + state.misses, + state.hits, + ]); + const isConnected = useWalletStore((state) => state.isConnected); + const numberOfRevealedCells = misses.length + hits.length; + const totalCells = ROWS * COLS; + + const Disconnected = ( +

System Offline

+ ); + + const Footer = ( +
+

+ {totalCells - numberOfRevealedCells}/{totalCells} +

+

Cells remaining

+
+ ); + + return ( + + ); +} diff --git a/bs-game-wip/src/components/Graveyard/Graveyard.tsx b/bs-game-wip/src/components/Graveyard/Graveyard.tsx new file mode 100644 index 00000000..9631980f --- /dev/null +++ b/bs-game-wip/src/components/Graveyard/Graveyard.tsx @@ -0,0 +1,39 @@ +import * as React from "react"; +import HudWindow from "../HudWindow/HudWindow"; +import {useContractStore} from "@/stores/contractStore"; +import {useWalletStore} from "@/stores/walletStore"; +import {useEffect} from "react"; +import ShipFresh from "@/assets/shipFresh.svg" +import ShipSunk from "@/assets/shipSunk.svg" +import AnimatedText from "../AnimatedText/AnimatedText"; + + +export default function Graveyard () { + const [graveyard, getGraveyard, hits] = useContractStore(state => [state.graveyard, state.getGraveyard, state.hits]) + const isConnected = useWalletStore(state => state.isConnected) + const sunkShipTotal = graveyard.reduce((nxt, cur) => cur ? nxt : nxt + 1, 0) + const fleetHealth = (sunkShipTotal / graveyard.length) * 100 + + useEffect(() => { + if (isConnected) { + getGraveyard() + } + }, [hits]) + + const Disconnected =

System Offline

+ + const Footer =
+
Fleet Strength
+

{fleetHealth.toFixed(1)}% PERC

+

{sunkShipTotal}/{graveyard.length}

+
Ships remaining
+
+ + return ( + +
+ {graveyard.map((ship, i) => Logo )} +
+
+ ) +} \ No newline at end of file diff --git a/bs-game-wip/src/components/HudWindow/HudWindow.tsx b/bs-game-wip/src/components/HudWindow/HudWindow.tsx new file mode 100644 index 00000000..2a4c3dc7 --- /dev/null +++ b/bs-game-wip/src/components/HudWindow/HudWindow.tsx @@ -0,0 +1,107 @@ +import { ReactNode } from "react"; +import styles from "./styles.module.scss"; +import { motion, AnimatePresence } from "framer-motion"; +import AnimatedText from "../AnimatedText/AnimatedText"; + +type Props = { + children?: ReactNode; + footerContent?: ReactNode; + headerTitle: string; + isOpen?: boolean; + closedContent?: ReactNode; +}; + +export default function HudWindow({ + children, + footerContent, + headerTitle, + isOpen = true, + closedContent, +}: Props) { + const topDecorationAnimation = { + initial: { width: 0, height: 0 }, + animate: { width: "80%", height: "80%" }, + exit: { opacity: 0 }, + transition: { duration: 1 }, + }; + const bottomDecorationAnimation = { + initial: { width: 0, height: 0 }, + animate: { width: "50px", height: "50px" }, + exit: { opacity: 0 }, + transition: { duration: 1 }, + }; + + const headerAnimation = { + initial: { opacity: 0, width: 0 }, + animate: { opacity: 1, width: "100%" }, + exit: { opacity: 0 }, + transition: { delay: 1, duration: 1 }, + }; + + const contentAnimation = { + initial: { opacity: 0 }, + animate: { opacity: 1 }, + exit: { opacity: 0 }, + transition: { delay: 2, duration: 1 }, + }; + + const footerAnimation = { + initial: { opacity: 0, width: 0, right: 0, left: "auto" }, + animate: { opacity: 1, width: "100%", right: 0, left: "auto" }, + exit: { opacity: 0 }, + transition: { delay: 1, duration: 1 }, + }; + + const footerContentAnimation = { + initial: { opacity: 0 }, + animate: { opacity: 1 }, + exit: { opacity: 0 }, + transition: { delay: 3, duration: 1 }, + }; + + const closedScreenAnimation = { + initial: { opacity: 0 }, + animate: { opacity: 1 }, + exit: { opacity: 0 }, + transition: { delay: 3, duration: 1 }, + }; + + return ( + +
+ + +
+ +
+
+ + {!isOpen && ( + {closedContent} + )} + + {isOpen && {children}} + + {footerContent && isOpen && ( + <> + + + {footerContent} + + + + + )} +
+
+ ); +} diff --git a/bs-game-wip/src/components/HudWindow/styles.module.scss b/bs-game-wip/src/components/HudWindow/styles.module.scss new file mode 100644 index 00000000..b3e9dd95 --- /dev/null +++ b/bs-game-wip/src/components/HudWindow/styles.module.scss @@ -0,0 +1,183 @@ +.glow { + box-shadow: 0 0 7px rgba(231, 76, 60, 0.6); +} + +.topLeftDecoration { + width: 80%; + height: 80%; + position: absolute; + left: 0; + top: 0; + border: solid 1px rgb(var(--color-accent)); + border-bottom: none; + border-right: none; + pointer-events: none; + + &::before { + content: ""; + width: 0%; + height: 0%; + position: absolute; + left: -1px; + top: -1px; + border-left: solid 1px #ffaba5; + animation: anim1 3s linear infinite; + box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); + } + + &::after { + content: ""; + width: 0%; + height: 0%; + position: absolute; + left: -1px; + top: -1px; + border-top: solid 1px #ffaba5; + animation: anim2 3s linear infinite; + box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); + + } +} + +.bottomRightDecoration { + width: 50px; + height: 50px; + position: absolute; + bottom: 0; + right: 0; + border: solid 1px rgb(var(--color-accent)); + border-top: none; + border-left: none; + pointer-events: none; + + &::before { + content: ""; + width: 0%; + height: 0%; + position: absolute; + right: -1px; + top: -1px; + border-left: solid 1px #ffaba5; + animation: anim3 3s linear infinite; + box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); + } + + &::after { + content: ""; + width: 0%; + height: 0%; + position: absolute; + right: -1px; + bottom: -1px; + border-top: solid 1px #ffaba5; + animation: anim4 3s linear infinite; + box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); + } +} + +@keyframes anim1 { + 0% { + height: 0; + width: 0; + bottom: -1px; + top: auto; + } + 25% { + height: 100%; + bottom: -1px; + width: 0; + top: auto; + } + 26% { + bottom: auto; + top: 1px; + height: 100%; + } + 50% { + top: -1px; + height: 0 + } + 100% { + top: -1px; + height: 0 + } +} + +@keyframes anim2 { + 0% { + width: 0; + left: -1px; + } + 25% { + width: 0; + left: -1px; + } + 50% { + width: 100%; + left: -1px; + } + 51% { + right: -1px; + left: auto; + width: 100%; + } + 100% { + right: -1px; + left: auto; + width: 0; + } +} + +@keyframes anim3 { + 0% { + height: 0; + width: 0; + } + 25% { + height: 100%; + top: -1px; + } + 26% { + bottom: -1px; + top: auto; + height: 100%; + } + 50% { + bottom: -1px; + top: auto; + height: 0 + } + 100% { + bottom: -1px; + top: auto; + height: 0 + } +} + +@keyframes anim4 { + 0% { + width: 0; + right: -1px; + left: auto; + } + 25% { + width: 0; + right: -1px; + left: auto; + } + 50% { + width: 100%; + right: -1px; + left: auto; + } + 51% { + left: -1px; + right: auto; + width: 100%; + } + 100% { + left: -1px; + right: auto; + width: 0; + } +} \ No newline at end of file diff --git a/bs-game-wip/src/components/MessageLog/MessageLog.tsx b/bs-game-wip/src/components/MessageLog/MessageLog.tsx new file mode 100644 index 00000000..370839e1 --- /dev/null +++ b/bs-game-wip/src/components/MessageLog/MessageLog.tsx @@ -0,0 +1,41 @@ +import { useMessageStore } from "@/stores/messageStore"; +import HudWindow from "../HudWindow/HudWindow"; +import {useEffect, useState} from "react"; +import styles from "./styles.module.scss"; +import AnimatedText from "../AnimatedText/AnimatedText"; + +const ANIMATION_DURATION = 1000 + +export default function MessageLog() { + const [messages] = useMessageStore((state) => [state.messages]); + const [displayedItems, setDisplayedItems] = useState([]); + const [currentIndex, setCurrentIndex] = useState(0); + const [readyForNewLine, setReadyForNewLine] = useState(true) + + useEffect(() => { + if (currentIndex < messages.length && readyForNewLine) { + setReadyForNewLine(false) + setDisplayedItems((prev) => [...prev, messages[currentIndex]]); + setCurrentIndex((prev) => prev + 1); + } + }, [messages, readyForNewLine]); + + const handleCompletedLine = () => { + setReadyForNewLine(true) + } + + return ( + +
+
    + {displayedItems.map((message, i) => ( +
  • + +
  • + ))} + {readyForNewLine &&
  • } +
+
+
+ ); +} diff --git a/bs-game-wip/src/components/MessageLog/styles.module.scss b/bs-game-wip/src/components/MessageLog/styles.module.scss new file mode 100644 index 00000000..919841e5 --- /dev/null +++ b/bs-game-wip/src/components/MessageLog/styles.module.scss @@ -0,0 +1,32 @@ +.line { + background: rgba(255, 255, 255, 0.02); + margin: 0 5px 5px 0; + padding-left: 5px; +} + +.cursor { + display: inline-block; + width: .6em; + background: white; + height: 1em; + + &.withFlash { + opacity: 0; + animation: CursorFlash 1s linear infinite; + } +} + +@keyframes CursorFlash { + 0% { + opacity: 0 + } + 25% { + opacity: 1 + } + 75% { + opacity: 1 + } + 75% { + opacity: 0 + } +} \ No newline at end of file diff --git a/bs-game-wip/src/components/MetaMask/MetaMask.tsx b/bs-game-wip/src/components/MetaMask/MetaMask.tsx new file mode 100644 index 00000000..632cee60 --- /dev/null +++ b/bs-game-wip/src/components/MetaMask/MetaMask.tsx @@ -0,0 +1,41 @@ + +import { useWalletStore } from "@/stores/walletStore"; +import { useMessageStore } from "@/stores/messageStore"; + +import * as React from "react"; +import HudWindow from "../HudWindow/HudWindow"; +import metaMaskLogo from "@/assets/metamask-logo.svg" + +export default function MetaMask() { + const [provider, address, setAddress] = useWalletStore((state) => [ + state.provider, + state.address, + state.setAddress, + ]); + const addNewMessage = useMessageStore((state) => state.addNewMessage); + + const connectAccount = async () => { + if (provider) { + try { + const accounts = await window.ethereum.request({ + method: "eth_requestAccounts", + }); + setAddress(accounts[0]); + } catch (error) { + addNewMessage("User rejected the request.", "ERROR"); + } + } + }; + + return ( + + + {address ? ( +

MetaMask Connected

+ ) : ( + + )} + }> +
+ ); +} diff --git a/bs-game-wip/src/components/PrizePool/PrizePool.tsx b/bs-game-wip/src/components/PrizePool/PrizePool.tsx new file mode 100644 index 00000000..553c4af7 --- /dev/null +++ b/bs-game-wip/src/components/PrizePool/PrizePool.tsx @@ -0,0 +1,34 @@ +import * as React from "react"; +import HudWindow from "../HudWindow/HudWindow"; +import { useEffect, useState } from "react"; +import { useContractStore } from "../../stores/contractStore"; +import {useWalletStore} from "../../stores/walletStore"; + +export default function PrizePool() { + const [hits, misses, prizePool, getPrizePool] = useContractStore((state) => [ + state.hits, + state.misses, + state.prizePool, + state.getPrizePool, + ]); + const isConnected = useWalletStore(state => state.isConnected) + const [totalGuesses, setTotalGuesses] = useState(hits.length + misses.length); + + useEffect(() => { + setTotalGuesses(hits.length + misses.length); + }, [hits, misses]); + + useEffect(() => { + if (isConnected) { + getPrizePool(); + } + }, [totalGuesses]); + + const Disconnected =

System Offline

+ + return ( + +

{prizePool} ETH

+
+ ); +} diff --git a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx new file mode 100644 index 00000000..8c9193b0 --- /dev/null +++ b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx @@ -0,0 +1,76 @@ +import HudWindow from "@/components/HudWindow/HudWindow"; +import styles from "./styles.module.scss"; +import {useContractStore} from "@/stores/contractStore"; +import { motion, AnimatePresence } from "framer-motion"; + +export default function ProcessingNotification () { + const [guessState, lastError, resetGuessState] = useContractStore((state) => [state.guessState, state.lastError, state.resetGuessState]) + let footerContent =
+ let bodyContent =
+ const handleClose = () => { + resetGuessState() + } + + if (guessState === "IDLE") return null + + if (guessState === "STARTED") { + footerContent =

Processing...

+ bodyContent =
+

Target locked and confirmed.

+

Initiating plasma cannon sequence.

+
+ } + + if (guessState === "ERROR") { + footerContent = + bodyContent =
+

WEAPON ACTIVATION FAILED

+

Error detected.

+

{lastError}

+
+ } + + if (guessState === 'TRANSACTION_SUCCESS') { + footerContent =

CANNONS FIRED...

+ bodyContent =
+

Ordinance en route to target.

+

Monitor for impact confirmation.

+
+ } + + console.log(guessState) + + const variants = { + initial: { opacity: 0, y: -20 }, + animate: { opacity: 1, y: 0 }, + exit: { opacity: 0, y: 20 }, + }; + + return ( +
+ + + {footerContent} + +
}> + + + {bodyContent} + + + +
+ ) +} \ No newline at end of file diff --git a/bs-game-wip/src/components/ProcessingNotification/styles.module.scss b/bs-game-wip/src/components/ProcessingNotification/styles.module.scss new file mode 100644 index 00000000..3dff9a38 --- /dev/null +++ b/bs-game-wip/src/components/ProcessingNotification/styles.module.scss @@ -0,0 +1,6 @@ +.container { + position: absolute; + top: 30vh; + left: 50vw; + transform: translateX(-50%); +} \ No newline at end of file diff --git a/bs-game-wip/src/contexts/EventContext.tsx b/bs-game-wip/src/contexts/EventContext.tsx new file mode 100644 index 00000000..b8011a0d --- /dev/null +++ b/bs-game-wip/src/contexts/EventContext.tsx @@ -0,0 +1,17 @@ +import React, { createContext, useState } from 'react'; + +export const EventContext = createContext(undefined); + +export const EventProvider = ({ children }) => { + const [event, setEvent] = useState(null); + + const triggerEvent = (eventData) => { + setEvent(eventData); + }; + + return ( + + {children} + + ); +}; \ No newline at end of file diff --git a/bs-game-wip/src/helpers/formatAddress.ts b/bs-game-wip/src/helpers/formatAddress.ts new file mode 100644 index 00000000..efe17b1d --- /dev/null +++ b/bs-game-wip/src/helpers/formatAddress.ts @@ -0,0 +1,7 @@ +export default function formatAddress(address: string) { + const afterX = address.substring(2) + const firstFourCharacters = afterX.substring(0, 4) + const lastFourCharacters = afterX.slice(-4) + + return `0x${firstFourCharacters}...${lastFourCharacters}` +} \ No newline at end of file diff --git a/bs-game-wip/src/helpers/getCellXY.ts b/bs-game-wip/src/helpers/getCellXY.ts new file mode 100644 index 00000000..2a34ac91 --- /dev/null +++ b/bs-game-wip/src/helpers/getCellXY.ts @@ -0,0 +1,9 @@ +import {HEX_GRID_MARGIN, HEX_HEIGHT, HEX_WIDTH, HORIZONTAL_OFFSET, VERTICAL_OFFSET} from "../lib/constants"; + +export default function getCellXY (col: number, row: number) { + const x = HEX_GRID_MARGIN + ( + ((row % 2) * HEX_WIDTH) / 2 + col * (HEX_WIDTH - HORIZONTAL_OFFSET)); + const y = HEX_GRID_MARGIN + (row * (HEX_HEIGHT - VERTICAL_OFFSET)) + + return [x,y] +} \ No newline at end of file diff --git a/bs-game-wip/src/helpers/isInViewport.ts b/bs-game-wip/src/helpers/isInViewport.ts new file mode 100644 index 00000000..483290e9 --- /dev/null +++ b/bs-game-wip/src/helpers/isInViewport.ts @@ -0,0 +1,10 @@ +import {DRAW_THRESHOLD, HEX_HEIGHT, HEX_WIDTH} from "../lib/constants"; + +export default function isInViewport (x, y, viewport, scrollPosition) { + return ( + x > -HEX_WIDTH + scrollPosition[0] - DRAW_THRESHOLD && + x < viewport.width + HEX_WIDTH + scrollPosition[0] + DRAW_THRESHOLD && + y > -HEX_HEIGHT + scrollPosition[1] && + y < viewport.height + HEX_HEIGHT + scrollPosition[1] + ); +}; \ No newline at end of file diff --git a/bs-game-wip/src/index.css b/bs-game-wip/src/index.css new file mode 100644 index 00000000..eb0579dc --- /dev/null +++ b/bs-game-wip/src/index.css @@ -0,0 +1,47 @@ +:root { + font-family: "Space Mono", monospace; + line-height: 1.5; + font-weight: 100; + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #1e1e1e;; + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/bs-game-wip/src/lib/constants.ts b/bs-game-wip/src/lib/constants.ts new file mode 100644 index 00000000..f9207cfe --- /dev/null +++ b/bs-game-wip/src/lib/constants.ts @@ -0,0 +1,20 @@ +import formatAddress from "@/helpers/formatAddress"; +import createHexagon from "@/utils/createHexagon"; + +export const MOVE_FEE: string = "0.0443"; +export const TOTAL_SHIPS: number = 249; +export const HEX_WIDTH = 32; +export const HEX_HEIGHT = 32; +export const VERTICAL_OFFSET = 8; +export const HORIZONTAL_OFFSET = 0; +export const hexHitArea = createHexagon(HEX_WIDTH, HEX_HEIGHT); +export const DRAW_THRESHOLD = 100; +export const CONTAINER_WIDTH = 600; +export const CONTAINER_HEIGHT = 500; +export const COLS = 100 +export const ROWS = 100 +export const HEX_GRID_MARGIN = 32 + +export const QUERY_INTERVAL_MS = 5000 + + diff --git a/bs-game-wip/src/lib/trackEvent.ts b/bs-game-wip/src/lib/trackEvent.ts new file mode 100644 index 00000000..744b2776 --- /dev/null +++ b/bs-game-wip/src/lib/trackEvent.ts @@ -0,0 +1,6 @@ +export function trackEvent(eventName, eventData) { + if (!window.gtag) { + return + } + window.gtag('event', eventName, eventData) +} \ No newline at end of file diff --git a/bs-game-wip/src/main.tsx b/bs-game-wip/src/main.tsx new file mode 100644 index 00000000..48526aa0 --- /dev/null +++ b/bs-game-wip/src/main.tsx @@ -0,0 +1,11 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './index.css' +import './tailwind.css' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/bs-game-wip/src/services/web3service.js b/bs-game-wip/src/services/web3service.js new file mode 100644 index 00000000..84a6d6d3 --- /dev/null +++ b/bs-game-wip/src/services/web3service.js @@ -0,0 +1,108 @@ +import { ethers } from 'ethers' +import { useMessageStore } from '@/stores/messageStore' +import BattleshipGameJson from '@/assets/contract/artifacts/contracts/BattleshipGame.sol/BattleshipGame.json' +import ContractAddress from '@/assets/contract/address.json' +import {MOVE_FEE} from "@/lib/constants"; + +export default class Web3Service { + constructor(signer) { + this.contract = new ethers.Contract(ContractAddress.address, BattleshipGameJson.abi, signer) + this.signer = signer + } + + async submitGuess(x, y) { + // const messageStore = useMessageStore() + // messageStore.addMessage('Issuing Guess...') + const moveFee = ethers.parseEther(MOVE_FEE) + + try { + const submitTx = await this.contract.hit(x, y, { + value: moveFee + }) + const receipt = await submitTx.wait() + // messageStore.addMessage('Issued Guess tx: ' + receipt.transactionHash) + console.log(receipt) + return receipt + } catch (e) { + if (e) { + // messageStore.addMessage('Failed to issue Guess - ' + e.reason + ' ...') + } + throw new Error(e) + + // messageStore.addMessage( + // 'Failed to issue Guess - unexpected error occurred, check the console logs...' + // ) + } + } + + async getAllShipPositions() { + const messageStore = useMessageStore() + try { + const ships = await this.contract.getAllShipPositions() + return ships + } catch (error) { + console.error('Failed to get ship properties - ', error) + messageStore.addMessage('Failed to get ship properties - ' + error.reason + ' ...') + } + } + + async getShipAtPosition(x, y) { + const messageStore = useMessageStore() + try { + const ship = await this.contract.getShipAtPosition(x, y) + return ship + } catch (error) { + console.error('Failed to get ship at position - ', error) + messageStore.addMessage('Failed to get ship at position - ' + error.reason + ' ...') + } + } + + async getGraveyard() { + const messageStore = useMessageStore() + try { + const ships = await this.contract.getGraveyard() + return ships + } catch (error) { + console.error('Failed to get graveyard - ', error) + messageStore.addMessage('Failed to get graveyard - ' + error.reason + ' ...') + } + } + + async isCellHit(x, y) { + const addToMessageStore = useMessageStore(state => state.addNewMessage) + try { + const isHit = await this.contract.isHit(x, y) + return isHit + } catch (error) { + console.error('Failed to get cell hit status - ', error) + addToMessageStore('Failed to get cell hit status - ' + error.reason + ' ...') + } + } + + async isShipSunk(shipIndex) { + const addToMessageStore = useMessageStore(state => state.addNewMessage) + try { + const isSunk = await this.contract.isSunk(shipIndex) + return isSunk + } catch (error) { + console.error('Failed to get ship sunk status - ', error) + addToMessageStore('Failed to get ship sunk status - ' + error.reason + ' ...') + } + } + + async isGameOver() { + const addToMessageStore = useMessageStore(state => state.addNewMessage) + // const battleStore = useBattleStore() + // try { + // const isGameOver = await this.contract.gameOver() + // if (isGameOver) { + // messageStore.addMessage('The game is over!') + // battleStore.gameOver = true + // } + // return isGameOver + // } catch (error) { + // console.error('Failed to get ship sunk status - ', error) + // messageStore.addMessage('Failed to get ship sunk status - ' + error.reason + ' ...') + // } + } +} diff --git a/bs-game-wip/src/stores/battleGridStore.ts b/bs-game-wip/src/stores/battleGridStore.ts new file mode 100644 index 00000000..06e25a73 --- /dev/null +++ b/bs-game-wip/src/stores/battleGridStore.ts @@ -0,0 +1,65 @@ +import { create } from 'zustand' +import getSnappedMousePosition from "@/utils/getSnappedMousePosition"; +import {useContractStore} from "./contractStore"; +import getCellXY from "../helpers/getCellXY"; + +export const useBattleGridStore = create((set, get) => ({ + grid: [], + missedCells: [], + hitCells: [], + hoveredCell: null, + scrollPosition: [0,0], + mousePosition: [0,0], + selectedCell: null, + + initGrid: (height, width) => set(() => { + const hexagons = []; + for (let row = 0; row < height; row++) { + for (let col = 0; col < width; col++) { + const [x, y] = getCellXY(col, row) + hexagons.push({row, col, x, y, revealed: false}); + } + } + + return ({grid: hexagons}) + }), + setScrollPosition: (x, y) => set(() => ({ scrollPosition: [x,y] })), + setMousePosition: (x, y) => set((state) => { + const guessState = useContractStore.getState().guessState + if (guessState !== 'IDLE') return ({}) + + const [sx, sy] = getSnappedMousePosition(x,y) + const hoveredCell = state.grid.find((cell) => + (sx === cell.x && sy === cell.y) + ) + + return ({ + hoveredCell: hoveredCell || null, + mousePosition: getSnappedMousePosition(sx,sy) + }) + }), + + selectCell: () => { + const selectedCell = get().hoveredCell + if (!selectedCell || useContractStore.getState().guessState !== 'IDLE') return + + set({selectedCell}) + const submitGuess = useContractStore.getState().submitGuess + submitGuess(selectedCell.col, selectedCell.row) + + // if (Math.random() < .3) { + // set({ + // hitCells: [...get().hitCells, selectedCell], + // selectedCell + // }) + // } else { + // set({ + // missedCells: [...get().missedCells, selectedCell], + // selectedCell + // }) + // } + }, + clearSelectedCell: () => set(() => ({selectedCell: null})), + setHoveredCell: (x, y) => set(() => ({ hoveredCell: [x,y] })), + clearHoveredCell: () => set(() => ({ hoveredCell: null })), +})) \ No newline at end of file diff --git a/bs-game-wip/src/stores/contractStore.ts b/bs-game-wip/src/stores/contractStore.ts new file mode 100644 index 00000000..9f29f766 --- /dev/null +++ b/bs-game-wip/src/stores/contractStore.ts @@ -0,0 +1,216 @@ +import { create } from "zustand"; +import { useWalletStore } from "@/stores/walletStore"; +import { TOTAL_SHIPS } from "@/lib/constants"; +import { ethers, formatUnits } from "ethers"; +import BattleshipGameJson from "@/assets/contract/artifacts/contracts/BattleshipGame.sol/BattleshipGame.json"; +import ContractAddress from "@/assets/contract/address.json"; +import { MOVE_FEE } from "@/lib/constants"; +import { useMessageStore } from "@/stores/messageStore"; +import { useBattleGridStore } from "./battleGridStore"; +import getCellXY from "../helpers/getCellXY"; +import handleMetaMaskError from "../utils/handleMetaMaskError"; + +export interface IContractStore { + hits: any[]; + misses: any[]; + graveyard: any[]; + gameOver: boolean; + prizePool: number; + guessState: GuessState, + lastError: string + submitGuess: (x: number, y: number) => Promise + resetGuessState: () => void + getPrizePool: () => Promise + getAllHits: () => Promise + getAllMisses: () => Promise + getGraveyard: () => Promise +} + +export type GuessState = 'IDLE'|'STARTED'|'ERROR'|'TRANSACTION_SUCCESS'|'RECEIVED_RECEIPT'|'HIT'|'MISS' + +export const useContractStore = create((set, get) => ({ + hits: [], + misses: [], + graveyard: new Array(TOTAL_SHIPS).fill(false), + gameOver: false, + prizePool: 0, + guessState: "IDLE" as GuessState, + lastError: "", + + submitGuess: async (x: number, y: number) => { + const signer = useWalletStore.getState().signer; + const addNewMessage = useMessageStore.getState().addNewMessage; + + if (!signer) { + throw new Error("No signer available."); + return; + } + + set({guessState: 'STARTED'}) + + addNewMessage("Issuing Guess..."); + const contract = new ethers.Contract( + ContractAddress.address, + BattleshipGameJson.abi, + signer + ); + const moveFee = ethers.parseEther(MOVE_FEE); + try { + const submitTx = await contract.hit(x, y, { + value: moveFee, + }); + set({guessState: 'TRANSACTION_SUCCESS'}) + const receipt = await submitTx.wait(); + addNewMessage("Issued Guess tx: " + receipt.hash); + + //Record last transaction has and make these calls from another location when the hash changes + useContractStore.getState().getAllHits(); + useContractStore.getState().getAllMisses(); + } catch (e) { + set({guessState: 'ERROR'}) + if (e.reason) { + addNewMessage("Failed to issue Guess - " + e.reason + " ...", "ERROR"); + set({lastError: "Failed to issue Guess - " + e.reason}) + } else { + addNewMessage( + "Failed to issue Guess - unexpected error occurred, check the console logs...", + "ERROR" + ); + set({lastError: "Failed to issue Guess - unexpected error occurred"}) + throw new Error(e); + } + } + }, + + resetGuessState: () => set({ + guessState: "IDLE" + }), + + getGraveyard: async () => { + const signer = useWalletStore.getState().signer; + const addNewMessage = useMessageStore.getState().addNewMessage; + const contract = new ethers.Contract( + ContractAddress.address, + BattleshipGameJson.abi, + signer + ); + + try { + const latestGraveyard = await contract.getGraveyard(); + const graveyardHasUpdated = get().graveyard.some( + (value, index) => value !== latestGraveyard[index] + ); + + if (graveyardHasUpdated) { + set({ graveyard: latestGraveyard }); + } + } catch (error) { + console.error(error); + addNewMessage( + "Failed to get graveyard - " + error.reason + " ...", + "ERROR" + ); + } + }, + + getAllMisses: async () => { + const currentMisses = useBattleGridStore.getState().missedCells; + const signer = useWalletStore.getState().signer; + const addNewMessage = useMessageStore.getState().addNewMessage; + const contract = new ethers.Contract( + ContractAddress.address, + BattleshipGameJson.abi, + signer + ); + + try { + const latestMisses = await contract.getAllMisses(); + const missesHaveUpdated = latestMisses.length !== currentMisses.length; + + if (missesHaveUpdated) { + const a = latestMisses.map((entry) => { + const [x, y] = getCellXY(parseInt(entry[0]), parseInt(entry[1])); + return { + col: parseInt(entry[0]), + row: parseInt(entry[1]), + x, + y, + state: "MISSED", + }; + }); + + set({ misses: latestMisses }); + useBattleGridStore.setState({ missedCells: a }); + } + } catch (e) { + console.error(e); + if (e.reason) { + addNewMessage( + "Failed to get graveyard - " + e.reason + " ...", + "ERROR" + ); + } + } + }, + //TODO: Given the similarity of the methods here might be worth combining with the above. + getAllHits: async () => { + const currentHits = useBattleGridStore.getState().hitCells; + const signer = useWalletStore.getState().signer; + const addNewMessage = useMessageStore.getState().addNewMessage; + const contract = new ethers.Contract( + ContractAddress.address, + BattleshipGameJson.abi, + signer + ); + + try { + const latestHits = await contract.getAllHits(); + const hitsHaveUpdated = latestHits.length !== currentHits.length; + + if (hitsHaveUpdated) { + const a = latestHits.map((entry) => { + const [x, y] = getCellXY(parseInt(entry[0]), parseInt(entry[1])); + return { + col: parseInt(entry[0]), + row: parseInt(entry[1]), + x, + y, + state: "MISSED", + }; + }); + + set({ hits: latestHits }); + useBattleGridStore.setState({ hitCells: a }); + } + } catch (e) { + console.error(e); + addNewMessage("Failed to get graveyard - " + e.reason + " ...", "ERROR"); + } + }, + + getPrizePool: async () => { + const signer = useWalletStore.getState().signer; + const addNewMessage = useMessageStore.getState().addNewMessage; + const contract = new ethers.Contract( + ContractAddress.address, + BattleshipGameJson.abi, + signer + ); + try { + const prizePool = await contract.prizePool(); + addNewMessage( + `[BattleshipGame Contract] Prize pool at: ${formatUnits( + prizePool, + "ether" + )} ETH` + ); + set({ prizePool: formatUnits(prizePool, "ether") }); + } catch (e) { + console.error("Error fetching prize pool:", e); + const errorMessage = handleMetaMaskError(e); + if (errorMessage) { + return addNewMessage(errorMessage, "ERROR"); + } + } + }, +})); diff --git a/bs-game-wip/src/stores/messageStore.ts b/bs-game-wip/src/stores/messageStore.ts new file mode 100644 index 00000000..9ecabdee --- /dev/null +++ b/bs-game-wip/src/stores/messageStore.ts @@ -0,0 +1,49 @@ +import { create } from "zustand"; + +export interface IMessageStore { + messages: { id: number; text: string, type: MessageType }[], + errorMessage: string, + addNewMessage: (msg: string, type?: MessageType ) => void +} + +type MessageType = "INFO"|"ERROR"|"SUCCESS" + +export const useMessageStore = create((set) => ({ + messages: [], + errorMessage: "", + + addNewMessage: (text, type = "INFO") => { + set((state) => ({ + messages: [ + ...state.messages, + { + id: Date.now(), + text: text, + type + } + ], + })) + } + + +})); + +// +// create({ + +// +// setNewMessage: (text) => set({ +// +// return ({messages: []}) +// this.messages.push({ + +// }) +// }), +// addErrorMessage(text) { +// this.errorMessage = text +// }, +// clearErrorMessage() { +// this.errorMessage = '' +// } +// } +// }) diff --git a/bs-game-wip/src/stores/metaMaskStore.ts b/bs-game-wip/src/stores/metaMaskStore.ts new file mode 100644 index 00000000..e69de29b diff --git a/bs-game-wip/src/stores/walletStore.ts b/bs-game-wip/src/stores/walletStore.ts new file mode 100644 index 00000000..0b296e6a --- /dev/null +++ b/bs-game-wip/src/stores/walletStore.ts @@ -0,0 +1,24 @@ +import {create} from "zustand"; +import { ethers } from 'ethers' +import {useMessageStore} from "@/stores/messageStore"; +import ContractAddress from '@/assets/contract/address.json' + +export const useWalletStore = create((set) => ({ + provider: null, + signer: null, + address: null, + isConnected: false, + setProvider: async provider => { + const signer = await new ethers.BrowserProvider(provider).getSigner() + const addNewMessage = useMessageStore.getState().addNewMessage + addNewMessage( + `[BattleshipGame Contract] Contract Address: ${ContractAddress.address}` + ) + set({ + provider, + signer, + isConnected: true + }) + }, + setAddress : address => set({address}) +})) \ No newline at end of file diff --git a/bs-game-wip/src/tailwind.css b/bs-game-wip/src/tailwind.css new file mode 100644 index 00000000..d7ce11f3 --- /dev/null +++ b/bs-game-wip/src/tailwind.css @@ -0,0 +1,9 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --color-accent: 255 111 111; + } +} \ No newline at end of file diff --git a/bs-game-wip/src/utils/createHexagon.ts b/bs-game-wip/src/utils/createHexagon.ts new file mode 100644 index 00000000..89fbf0d1 --- /dev/null +++ b/bs-game-wip/src/utils/createHexagon.ts @@ -0,0 +1,19 @@ +import * as PIXI from "pixi.js"; + +export default function createHexagon(width, height) { + const hex = new PIXI.Polygon([ + 0, + -height / 2, + width / 2, + -height / 4, + width / 2, + height / 4, + 0, + height / 2, + -width / 2, + height / 4, + -width / 2, + -height / 4, + ]); + return hex; +} \ No newline at end of file diff --git a/bs-game-wip/src/utils/getSnappedMousePosition.ts b/bs-game-wip/src/utils/getSnappedMousePosition.ts new file mode 100644 index 00000000..5c31a98a --- /dev/null +++ b/bs-game-wip/src/utils/getSnappedMousePosition.ts @@ -0,0 +1,14 @@ +import {HEX_HEIGHT, HEX_WIDTH, VERTICAL_OFFSET, HEX_GRID_MARGIN} from "@/lib/constants"; + +export default function getSnappedMousePosition (x: number, y: number) { + const snappedY = (Math.round(y / (HEX_HEIGHT - VERTICAL_OFFSET)) * (HEX_HEIGHT - VERTICAL_OFFSET)) + (HEX_GRID_MARGIN/4); + let snappedX = 0 + + if (snappedY % ((HEX_HEIGHT - VERTICAL_OFFSET) * 2) === HEX_GRID_MARGIN) { + snappedX = (Math.round(x / HEX_WIDTH) * HEX_WIDTH); + } else { + snappedX = ((Math.round((x + (HEX_WIDTH / 2)) / HEX_WIDTH) * HEX_WIDTH) - (HEX_WIDTH / 2)) ; + } + + return [snappedX, snappedY] +} \ No newline at end of file diff --git a/bs-game-wip/src/utils/handleMetaMaskError.ts b/bs-game-wip/src/utils/handleMetaMaskError.ts new file mode 100644 index 00000000..24f93d41 --- /dev/null +++ b/bs-game-wip/src/utils/handleMetaMaskError.ts @@ -0,0 +1,25 @@ +import { serializeError } from '@metamask/rpc-errors' + +export default function handleMetaMaskError(error) { + if (!error) { + return 'Unknown error' + } + + if (!error.code) { + return error.message || error + } + + const serializedError = serializeError(error) + const errorMessage = + serializedError?.data?.cause?.error?.data?.message || serializedError?.data?.message + + if (errorMessage?.includes('no signed viewing keys')) { + return `Missing viewing key. It looks like you may not have registered through the gateway` + } + + if (errorMessage?.includes('invalid viewing key signature for requested address')) { + return `Invalid viewing key. Please ensure the connected account is also authenticated via the gateway here` + } + + return errorMessage +} \ No newline at end of file diff --git a/bs-game-wip/src/vite-env.d.ts b/bs-game-wip/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/bs-game-wip/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/bs-game-wip/tailwind.config.js b/bs-game-wip/tailwind.config.js new file mode 100644 index 00000000..173dbe21 --- /dev/null +++ b/bs-game-wip/tailwind.config.js @@ -0,0 +1,17 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + purge: ['./src/**/*.{js,jsx,ts,tsx}', './public/index.html'], + darkMode: 'class', + theme: { + extend: { + colors: { + accent: 'rgb(var(--color-accent) / 1)', + accentBackground: 'rgb(var(--color-accent) / .08)' + } + }, + }, + variants: { + extend: {}, + }, + plugins: [], +}; \ No newline at end of file diff --git a/bs-game-wip/todos.md b/bs-game-wip/todos.md new file mode 100644 index 00000000..b0f1d6e0 --- /dev/null +++ b/bs-game-wip/todos.md @@ -0,0 +1,31 @@ +- ~~intro screen/state~~ +- gameover screen/state +- explosion effect/notification when ship is sunk +- Stress test +- Get started help +- component help tips +- ~~shot pending notification/overlay~~ +- ~~offset grid to make edge cells entirely visible~~ +- Make responsive for mobile? +- Prevent shots being placed on cells which are already hit +- minimap +- map legend +- look into code organization. Separate API calls from store methods. +- ~~Animate message log entries~~ +- ~~animate hud windows~~ +- highlight errors in message log +- display Remaining Cells chart +- add ability to scale teh map +- percentage bar for fleet strength +- ~~finish connection window~~ +- move contract address var to env var +~~- Fetch game data on connection~~ +- improve x,y coords. +- detect metamask disconnection + + +Game mechanics notes +-Seeing all hits/misses before playing gives teh first mover a disadvantage. Result, no one makes the first move +-not being able to see the game state until after placing a bet makes interacting with an +almost complete board a frustrating experience. +- perhaps a portion of the pool can be received after a ship is sunk \ No newline at end of file diff --git a/bs-game-wip/tsconfig.app.json b/bs-game-wip/tsconfig.app.json new file mode 100644 index 00000000..d739292a --- /dev/null +++ b/bs-game-wip/tsconfig.app.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "composite": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/bs-game-wip/tsconfig.json b/bs-game-wip/tsconfig.json new file mode 100644 index 00000000..86f5cf82 --- /dev/null +++ b/bs-game-wip/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + // add more paths as needed + } + }, + "files": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.node.json" + } + ] +} diff --git a/bs-game-wip/tsconfig.node.json b/bs-game-wip/tsconfig.node.json new file mode 100644 index 00000000..3afdd6e3 --- /dev/null +++ b/bs-game-wip/tsconfig.node.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true, + "noEmit": true + }, + "include": ["vite.config.ts"] +} diff --git a/bs-game-wip/vite.config.ts b/bs-game-wip/vite.config.ts new file mode 100644 index 00000000..03e26248 --- /dev/null +++ b/bs-game-wip/vite.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import path from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + resolve: { + alias: { + '@': path.resolve(__dirname, 'src/'), + // add more aliases as needed + }, + }, +}) From a7a88016738b9c62030bd2bf22fd0429c2dbd0b0 Mon Sep 17 00:00:00 2001 From: PeterB Date: Fri, 12 Jul 2024 09:03:10 +0100 Subject: [PATCH 02/22] WIP: Fixes some missing depenencies --- bs-game-wip/package-lock.json | 33 ++++++++++++++++++ bs-game-wip/package.json | 3 ++ bs-game-wip/src/App.tsx | 5 +-- bs-game-wip/src/TheGrid/index.ts | 0 .../components/BattleGrid/BattleGridHits.tsx | 34 +++---------------- .../src/components/HudWindow/HudWindow.tsx | 17 ++++++---- .../ProcessingNotification.tsx | 2 +- 7 files changed, 53 insertions(+), 41 deletions(-) delete mode 100644 bs-game-wip/src/TheGrid/index.ts diff --git a/bs-game-wip/package-lock.json b/bs-game-wip/package-lock.json index dd9d8004..1f0bf698 100644 --- a/bs-game-wip/package-lock.json +++ b/bs-game-wip/package-lock.json @@ -8,8 +8,10 @@ "name": "bs-game-wip", "version": "0.0.0", "dependencies": { + "@metamask/detect-provider": "^2.0.0", "@metamask/rpc-errors": "^6.3.1", "@pixi/events": "^7.4.2", + "@pixi/filter-bloom": "^5.1.1", "@pixi/filter-glow": "^5.2.1", "@pixi/graphics-extras": "^7.4.2", "@pixi/react": "^7.1.2", @@ -30,6 +32,7 @@ "@typescript-eslint/eslint-plugin": "^7.13.1", "@typescript-eslint/parser": "^7.13.1", "@vitejs/plugin-react": "^4.3.1", + "dotenv": "^16.4.5", "eslint": "^8.57.0", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.7", @@ -1988,6 +1991,14 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@metamask/detect-provider": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@metamask/detect-provider/-/detect-provider-2.0.0.tgz", + "integrity": "sha512-sFpN+TX13E9fdBDh9lvQeZdJn4qYoRb/6QF2oZZK/Pn559IhCFacPMU1rMuqyXoFQF3JSJfii2l98B87QDPeCQ==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@metamask/eth-sig-util": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", @@ -2801,6 +2812,16 @@ "@pixi/core": "7.4.2" } }, + "node_modules/@pixi/filter-bloom": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@pixi/filter-bloom/-/filter-bloom-5.1.1.tgz", + "integrity": "sha512-4/i+tMxAQdgezahxsVCqzkAyBAH4TxtuY/zo1wuCJybEqkKFIzOJ76Y4R/lJevEHS9CGpCTrvjRpup0Hze8k0Q==", + "peerDependencies": { + "@pixi/core": "^7.0.0-X", + "@pixi/filter-alpha": "^7.0.0-X", + "@pixi/filter-blur": "^7.0.0-X" + } + }, "node_modules/@pixi/filter-blur": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/@pixi/filter-blur/-/filter-blur-7.4.2.tgz", @@ -5381,6 +5402,18 @@ "node": ">=6.0.0" } }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/earcut": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", diff --git a/bs-game-wip/package.json b/bs-game-wip/package.json index 3cbf817e..6316b0ab 100644 --- a/bs-game-wip/package.json +++ b/bs-game-wip/package.json @@ -10,8 +10,10 @@ "preview": "vite preview" }, "dependencies": { + "@metamask/detect-provider": "^2.0.0", "@metamask/rpc-errors": "^6.3.1", "@pixi/events": "^7.4.2", + "@pixi/filter-bloom": "^5.1.1", "@pixi/filter-glow": "^5.2.1", "@pixi/graphics-extras": "^7.4.2", "@pixi/react": "^7.1.2", @@ -32,6 +34,7 @@ "@typescript-eslint/eslint-plugin": "^7.13.1", "@typescript-eslint/parser": "^7.13.1", "@vitejs/plugin-react": "^4.3.1", + "dotenv": "^16.4.5", "eslint": "^8.57.0", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.7", diff --git a/bs-game-wip/src/App.tsx b/bs-game-wip/src/App.tsx index 43ae015d..f435df66 100644 --- a/bs-game-wip/src/App.tsx +++ b/bs-game-wip/src/App.tsx @@ -1,6 +1,4 @@ import "./App.css"; -import * as React from "react"; -import { QueryClientProvider, QueryClient } from "@tanstack/react-query"; import MetaMask from "@/components/MetaMask/MetaMask"; import MessageLog from "@/components/MessageLog/MessageLog"; import Graveyard from "./components/Graveyard/Graveyard"; @@ -9,8 +7,7 @@ import logo from "@/assets/white_logotype.png" import PrizePool from "./components/PrizePool/PrizePool"; import CellsRemaining from "./components/CellsRemaining/CellsRemaining"; import ProcessingNotification from "./components/ProcessingNotification/ProcessingNotification"; -import {useState} from "react"; -import {useEffect} from "react"; +import {useState, useEffect} from "react"; import detectEthereumProvider from "@metamask/detect-provider"; import {trackEvent} from "./lib/trackEvent"; import {useWalletStore} from "./stores/walletStore"; diff --git a/bs-game-wip/src/TheGrid/index.ts b/bs-game-wip/src/TheGrid/index.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx index 2dcd5df3..e31717ef 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx @@ -1,13 +1,12 @@ import React, {useEffect, useMemo, useRef} from "react"; import BattleGridCell from "./BattleGridCell"; -import {useBattleGridStore} from "../../stores/battleGridStore"; +import {useBattleGridStore} from "@/stores/battleGridStore"; import {Container, useTick} from "@pixi/react"; import {GlowFilter} from "@pixi/filter-glow" -import {OutlineFilter} from "@pixi/filter-outline" -import {QUERY_INTERVAL_MS} from "../../lib/constants"; -import {useWalletStore} from "../../stores/walletStore"; -import {useContractStore} from "../../stores/contractStore"; +import {QUERY_INTERVAL_MS} from "@/lib/constants"; +import {useWalletStore} from "@/stores/walletStore"; +import {useContractStore} from "@/stores/contractStore"; export default function BattleGridHits () { const hitCells = useBattleGridStore((state) => state.hitCells); @@ -18,12 +17,6 @@ export default function BattleGridHits () { [hitCells] ); - const containerRef = useRef(null); - const glowFilterRef = useRef(new GlowFilter({ distance: 15, innerStrength:0, color: 0xE82E2E, alpha: .4 })); - const outlineFilterRef = useRef(new OutlineFilter(1, 0xFFFFFF, 1, 1, false)); - const timeRef = useRef(0); - - useEffect(() => { let interval @@ -37,25 +30,8 @@ export default function BattleGridHits () { return () => clearInterval(interval) }, [isConnected]) - // useTick((delta) => { - // - // const glowFilter = glowFilterRef.current; - // const outlineFilter = outlineFilterRef.current; - // const speed = .04 - // timeRef.current += delta; - // const pulse = Math.sin(timeRef.current * speed) * .75 + .75; - // - // glowFilter.outerStrength = 1 + pulse; // Oscillate between 2 and 4 - // outlineFilter.alpha = 1 + pulse - // // glowFilter.innerStrength = pulse/2; // Oscillate between 1 and 2 - // - // if (containerRef.current) { - // containerRef.current.filters = [outlineFilter]; - // } - // }); - return ( - + {revealedGridCells} ) diff --git a/bs-game-wip/src/components/HudWindow/HudWindow.tsx b/bs-game-wip/src/components/HudWindow/HudWindow.tsx index 2a4c3dc7..62cef9fc 100644 --- a/bs-game-wip/src/components/HudWindow/HudWindow.tsx +++ b/bs-game-wip/src/components/HudWindow/HudWindow.tsx @@ -9,6 +9,7 @@ type Props = { headerTitle: string; isOpen?: boolean; closedContent?: ReactNode; + speed?: number }; export default function HudWindow({ @@ -17,53 +18,55 @@ export default function HudWindow({ headerTitle, isOpen = true, closedContent, + speed=1 }: Props) { + const topDecorationAnimation = { initial: { width: 0, height: 0 }, animate: { width: "80%", height: "80%" }, exit: { opacity: 0 }, - transition: { duration: 1 }, + transition: { duration: 1 * speed }, }; const bottomDecorationAnimation = { initial: { width: 0, height: 0 }, animate: { width: "50px", height: "50px" }, exit: { opacity: 0 }, - transition: { duration: 1 }, + transition: { duration: 1 * speed }, }; const headerAnimation = { initial: { opacity: 0, width: 0 }, animate: { opacity: 1, width: "100%" }, exit: { opacity: 0 }, - transition: { delay: 1, duration: 1 }, + transition: { delay: 1, duration: 1 * speed }, }; const contentAnimation = { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, - transition: { delay: 2, duration: 1 }, + transition: { delay: 2, duration: 1 * speed }, }; const footerAnimation = { initial: { opacity: 0, width: 0, right: 0, left: "auto" }, animate: { opacity: 1, width: "100%", right: 0, left: "auto" }, exit: { opacity: 0 }, - transition: { delay: 1, duration: 1 }, + transition: { delay: 1, duration: 1 * speed}, }; const footerContentAnimation = { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, - transition: { delay: 3, duration: 1 }, + transition: { delay: 3, duration: 1 * speed}, }; const closedScreenAnimation = { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, - transition: { delay: 3, duration: 1 }, + transition: { delay: 3, duration: 1 * speed }, }; return ( diff --git a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx index 8c9193b0..addd30e0 100644 --- a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx +++ b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx @@ -48,7 +48,7 @@ export default function ProcessingNotification () { return (
- + Date: Fri, 12 Jul 2024 11:12:23 +0100 Subject: [PATCH 03/22] Introduce proper linting and package order etc --- bs-game-wip/.prettierrc | 19 +++ bs-game-wip/package-lock.json | 157 ++++++++++++++++-- bs-game-wip/package.json | 6 +- bs-game-wip/src/App.css | 2 - bs-game-wip/src/App.tsx | 69 ++++---- bs-game-wip/src/api/contract/contract.api.ts | 8 +- bs-game-wip/src/api/contract/contract.keys.ts | 4 +- .../src/api/contract/contract.queries.ts | 7 +- bs-game-wip/src/assets/32x32.png | Bin 157 -> 0 bytes bs-game-wip/src/assets/64x64.png | Bin 232 -> 0 bytes .../components/AnimatedText/AnimatedText.tsx | 90 +++++----- .../AnimatedText/styles.module.scss | 12 +- .../src/components/BattleGrid/BattleGrid.tsx | 44 ++--- .../BattleGrid/BattleGridCanvas.tsx | 59 +++---- .../components/BattleGrid/BattleGridCell.tsx | 76 ++++----- .../BattleGrid/BattleGridContainer.tsx | 13 +- .../BattleGridCurrentCoordinates.tsx | 18 +- .../BattleGrid/BattleGridCursor.tsx | 113 +++++++------ .../components/BattleGrid/BattleGridHits.tsx | 82 ++++----- .../BattleGrid/BattleGridMisses.tsx | 80 +++++---- .../CellsRemaining/CellsRemaining.tsx | 6 +- .../src/components/Graveyard/Graveyard.tsx | 87 ++++++---- .../src/components/HudWindow/HudWindow.tsx | 16 +- .../components/HudWindow/styles.module.scss | 13 +- .../src/components/MessageLog/MessageLog.tsx | 60 ++++--- .../components/MessageLog/styles.module.scss | 12 +- .../src/components/MetaMask/MetaMask.tsx | 31 ++-- .../src/components/PrizePool/PrizePool.tsx | 22 ++- .../ProcessingNotification.tsx | 154 ++++++++++------- .../ProcessingNotification/styles.module.scss | 2 +- bs-game-wip/src/contexts/EventContext.tsx | 22 +-- bs-game-wip/src/helpers/formatAddress.ts | 10 +- bs-game-wip/src/helpers/getCellXY.ts | 21 ++- bs-game-wip/src/helpers/isInViewport.ts | 18 +- bs-game-wip/src/index.css | 2 +- bs-game-wip/src/lib/constants.ts | 10 +- bs-game-wip/src/lib/trackEvent.ts | 10 +- bs-game-wip/src/main.tsx | 16 +- bs-game-wip/src/services/web3service.js | 119 +++++++------ bs-game-wip/src/stores/battleGridStore.ts | 84 ++++------ bs-game-wip/src/stores/contractStore.ts | 76 +++++---- bs-game-wip/src/stores/messageStore.ts | 18 +- bs-game-wip/src/stores/walletStore.ts | 58 ++++--- bs-game-wip/src/tailwind.css | 8 +- bs-game-wip/src/utils/createHexagon.ts | 32 ++-- .../src/utils/getSnappedMousePosition.ts | 31 ++-- bs-game-wip/src/utils/handleMetaMaskError.ts | 41 +++-- bs-game-wip/tsconfig.json | 31 ++-- bs-game-wip/vite.config.ts | 2 +- 49 files changed, 1072 insertions(+), 799 deletions(-) create mode 100644 bs-game-wip/.prettierrc delete mode 100644 bs-game-wip/src/assets/32x32.png delete mode 100644 bs-game-wip/src/assets/64x64.png diff --git a/bs-game-wip/.prettierrc b/bs-game-wip/.prettierrc new file mode 100644 index 00000000..be5950d8 --- /dev/null +++ b/bs-game-wip/.prettierrc @@ -0,0 +1,19 @@ +{ + "plugins": ["@trivago/prettier-plugin-sort-imports"], + "importOrder": [ + "^react$", + "", + "^@/(.*)$", + "^[./]" + ], + "importOrderSeparation": true, + "importOrderSortSpecifiers": true, + "printWidth": 100, + "tabWidth": 4, + "singleQuote": true, + "trailingComma": "es5", + "semi": true, + "newline-before-return": true, + "no-duplicate-variable": [true, "check-parameters"], + "no-var-keyword": true +} \ No newline at end of file diff --git a/bs-game-wip/package-lock.json b/bs-game-wip/package-lock.json index 1f0bf698..5765944d 100644 --- a/bs-game-wip/package-lock.json +++ b/bs-game-wip/package-lock.json @@ -18,7 +18,6 @@ "autoprefixer": "^10.4.19", "framer-motion": "^11.3.0", "pixi.js": "^7.1.4", - "postcss": "^8.4.39", "react": "^18.3.1", "react-dom": "^18.3.1", "tailwindcss": "^3.4.4", @@ -26,6 +25,7 @@ }, "devDependencies": { "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/node": "^20.14.9", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", @@ -36,8 +36,10 @@ "eslint": "^8.57.0", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.7", + "postcss": "^8.4.39", + "prettier": "^3.3.2", "sass": "^1.77.6", - "typescript": "^5.2.2", + "typescript": "^5.5.3", "vite": "^5.3.1" } }, @@ -277,9 +279,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -3545,6 +3547,115 @@ "antlr4ts": "^0.5.0-alpha.4" } }, + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz", + "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==", + "dev": true, + "dependencies": { + "@babel/generator": "7.17.7", + "@babel/parser": "^7.20.5", + "@babel/traverse": "7.23.2", + "@babel/types": "7.17.0", + "javascript-natural-sort": "0.7.1", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "@vue/compiler-sfc": "3.x", + "prettier": "2.x - 3.x" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + } + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.8.tgz", + "integrity": "sha512-47DG+6F5SzOi0uEvK4wMShmn5yY0mVjVJoWTphdY2B4Rx9wHgjK7Yhtr0ru6nE+sn0v38mzrWOlah0p/YlHHOQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.8", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/types": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.8.tgz", + "integrity": "sha512-SkSBEHwwJRU52QEVZBmMBnE5Ux2/6WU1grdYyOhpbCNxbmJrDuDCphBzKZSO3taf0zztp+qkWlymE5tVL5l0TA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", @@ -7555,6 +7666,12 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dev": true + }, "node_modules/jiti": { "version": "1.21.6", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", @@ -7749,8 +7866,7 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "peer": true + "dev": true }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -8841,16 +8957,15 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", "dev": true, - "peer": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -10747,6 +10862,22 @@ "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, + "peer": true, + "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", diff --git a/bs-game-wip/package.json b/bs-game-wip/package.json index 6316b0ab..5ef6dcae 100644 --- a/bs-game-wip/package.json +++ b/bs-game-wip/package.json @@ -20,7 +20,6 @@ "autoprefixer": "^10.4.19", "framer-motion": "^11.3.0", "pixi.js": "^7.1.4", - "postcss": "^8.4.39", "react": "^18.3.1", "react-dom": "^18.3.1", "tailwindcss": "^3.4.4", @@ -28,6 +27,7 @@ }, "devDependencies": { "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/node": "^20.14.9", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", @@ -38,8 +38,10 @@ "eslint": "^8.57.0", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.7", + "postcss": "^8.4.39", + "prettier": "^3.3.2", "sass": "^1.77.6", - "typescript": "^5.2.2", + "typescript": "^5.5.3", "vite": "^5.3.1" } } diff --git a/bs-game-wip/src/App.css b/bs-game-wip/src/App.css index a4298bdd..ef4e15b6 100644 --- a/bs-game-wip/src/App.css +++ b/bs-game-wip/src/App.css @@ -58,5 +58,3 @@ button:focus-visible { font-weight: 700; font-style: normal; } - - diff --git a/bs-game-wip/src/App.tsx b/bs-game-wip/src/App.tsx index f435df66..2898ac69 100644 --- a/bs-game-wip/src/App.tsx +++ b/bs-game-wip/src/App.tsx @@ -1,20 +1,22 @@ -import "./App.css"; -import MetaMask from "@/components/MetaMask/MetaMask"; +import { useEffect, useState } from "react"; + +import detectEthereumProvider from "@metamask/detect-provider"; + +import logo from "@/assets/white_logotype.png"; import MessageLog from "@/components/MessageLog/MessageLog"; -import Graveyard from "./components/Graveyard/Graveyard"; +import MetaMask from "@/components/MetaMask/MetaMask"; + +import "./App.css"; import BattleGrid from "./components/BattleGrid/BattleGrid"; -import logo from "@/assets/white_logotype.png" -import PrizePool from "./components/PrizePool/PrizePool"; import CellsRemaining from "./components/CellsRemaining/CellsRemaining"; +import Graveyard from "./components/Graveyard/Graveyard"; +import PrizePool from "./components/PrizePool/PrizePool"; import ProcessingNotification from "./components/ProcessingNotification/ProcessingNotification"; -import {useState, useEffect} from "react"; -import detectEthereumProvider from "@metamask/detect-provider"; -import {trackEvent} from "./lib/trackEvent"; -import {useWalletStore} from "./stores/walletStore"; -import {useMessageStore} from "./stores/messageStore"; +import { trackEvent } from "./lib/trackEvent"; +import { useMessageStore } from "./stores/messageStore"; +import { useWalletStore } from "./stores/walletStore"; function App() { - const [setProvider, address, setAddress] = useWalletStore((state) => [ state.setProvider, state.address, @@ -36,7 +38,7 @@ function App() { const chainId = await provider.request({ method: "eth_chainId" }); if (chainId !== "0x1bb") { addNewMessage( - 'Not connected to Ten ! Connect at https://testnet.ten.xyz/ ' + 'Not connected to Ten ! Connect at https://testnet.ten.xyz/ ', ); return; } @@ -47,48 +49,47 @@ function App() { setAddress(accounts[0]); addNewMessage("Connected to wallet ! Account: " + accounts[0]); - setInitialized(true) + setInitialized(true); trackEvent("connect_wallet", { value: accounts[0], }); - } else { addNewMessage("Please install MetaMask!", "ERROR"); - setInitialized(true) + setInitialized(true); } } catch (err) { console.error("Error:", err.message); - setInitialized(true) + setInitialized(true); } }; if (!initialized) { - return null + return null; } return ( <>
- test + test
-
-
- -
-
- -
-
- - - -
-
- -
+
+
+
- +
+ +
+
+ + + +
+
+ +
+
+ ); } diff --git a/bs-game-wip/src/api/contract/contract.api.ts b/bs-game-wip/src/api/contract/contract.api.ts index 5745c051..c9489a95 100644 --- a/bs-game-wip/src/api/contract/contract.api.ts +++ b/bs-game-wip/src/api/contract/contract.api.ts @@ -1,5 +1,5 @@ export const dummyCall = new Promise((resolve) => { - setTimeout(() => { - resolve({msg: "DONE"}) - }, 5000) -}) \ No newline at end of file + setTimeout(() => { + resolve({ msg: "DONE" }); + }, 5000); +}); diff --git a/bs-game-wip/src/api/contract/contract.keys.ts b/bs-game-wip/src/api/contract/contract.keys.ts index baec520c..345b897a 100644 --- a/bs-game-wip/src/api/contract/contract.keys.ts +++ b/bs-game-wip/src/api/contract/contract.keys.ts @@ -1,3 +1,3 @@ export default { - test: 'test' -} \ No newline at end of file + test: "test", +}; diff --git a/bs-game-wip/src/api/contract/contract.queries.ts b/bs-game-wip/src/api/contract/contract.queries.ts index c8387cd6..d0dca279 100644 --- a/bs-game-wip/src/api/contract/contract.queries.ts +++ b/bs-game-wip/src/api/contract/contract.queries.ts @@ -1,4 +1,5 @@ -import {useQuery} from "@tanstack/react-query"; -import {dummyCall} from "./contract.api"; +import { useQuery } from "@tanstack/react-query"; -export const query = useQuery({ queryKey: ['test'], queryFn: dummyCall }) \ No newline at end of file +import { dummyCall } from "./contract.api"; + +export const query = useQuery({ queryKey: ["test"], queryFn: dummyCall }); diff --git a/bs-game-wip/src/assets/32x32.png b/bs-game-wip/src/assets/32x32.png deleted file mode 100644 index 316858e1b2bdf9c48111a436162e00107d0403ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=Dh+L6~vJ#O${~K_gEW$B+p3x92u80*yLy;P~HiHtzBTA1*D~ m`zl(@`h7MdP!R(B;qzeg?O?IF@$U>XNYvBS&t;ucLK6VLW-5{Z diff --git a/bs-game-wip/src/assets/64x64.png b/bs-game-wip/src/assets/64x64.png deleted file mode 100644 index 46677711fa19df7c691a336f2849a46b23cc7b17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~g0-G5jv*CsZ!c_QWKiH~*zoGVeK`BR2Awx^ l{<^&hTFVwdJG62pd#DvljiGGZVxU79JYD@<);T3K0RR=fM}YtU diff --git a/bs-game-wip/src/components/AnimatedText/AnimatedText.tsx b/bs-game-wip/src/components/AnimatedText/AnimatedText.tsx index 51ed1b8a..c872c5f7 100644 --- a/bs-game-wip/src/components/AnimatedText/AnimatedText.tsx +++ b/bs-game-wip/src/components/AnimatedText/AnimatedText.tsx @@ -1,46 +1,50 @@ -import {motion, useMotionValue, useTransform, animate} from 'framer-motion'; -import {useEffect, useState} from "react"; -import styles from "./styles.module.scss" +import { useEffect, useState } from "react"; + +import { animate, motion, useMotionValue, useTransform } from "framer-motion"; + +import styles from "./styles.module.scss"; type Props = { - text: string, - delay?: number, - speed?: number, - classes?: string, - onComplete?: () => void -} + text: string; + delay?: number; + speed?: number; + classes?: string; + onComplete?: () => void; +}; + +export default function AnimatedText({ + text, + delay = 0, + speed = 0.05, + classes, + onComplete, +}: Props) { + const [done, setDone] = useState(false); + const count = useMotionValue(0); + const rounded = useTransform(count, (latest) => Math.round(latest)); -export default function AnimatedText({text, delay = 0, speed = .05, classes, onComplete }: Props) { - const [done, setDone] = useState(false); - const count = useMotionValue(0); - const rounded = useTransform(count, (latest) => Math.round(latest)); - - const displayText = useTransform(rounded, (latest) => - text.slice(0, latest) - ); - - const handleLineCompletion = () => { - setDone(true); - onComplete && onComplete() - } - - useEffect(() => { - const controls = animate(count, text.length, { - type: "tween", - duration: text.length * speed, - ease: "easeInOut", - delay, - onComplete: () => handleLineCompletion() - }); - return controls.stop; - }, []); - - return ( - <> - {displayText} - {!done && ( - - )} - - ); -}; \ No newline at end of file + const displayText = useTransform(rounded, (latest) => text.slice(0, latest)); + + const handleLineCompletion = () => { + setDone(true); + onComplete && onComplete(); + }; + + useEffect(() => { + const controls = animate(count, text.length, { + type: "tween", + duration: text.length * speed, + ease: "easeInOut", + delay, + onComplete: () => handleLineCompletion(), + }); + return controls.stop; + }, []); + + return ( + <> + {displayText} + {!done && } + + ); +} diff --git a/bs-game-wip/src/components/AnimatedText/styles.module.scss b/bs-game-wip/src/components/AnimatedText/styles.module.scss index a72ac0d4..9dbd1779 100644 --- a/bs-game-wip/src/components/AnimatedText/styles.module.scss +++ b/bs-game-wip/src/components/AnimatedText/styles.module.scss @@ -1,6 +1,6 @@ .cursor { display: inline-block; - width: .6em; + width: 0.6em; background: currentColor; height: 1em; @@ -12,15 +12,15 @@ @keyframes CursorFlash { 0% { - opacity: 0 + opacity: 0; } 25% { - opacity: 1 + opacity: 1; } 75% { - opacity: 1 + opacity: 1; } 75% { - opacity: 0 + opacity: 0; } -} \ No newline at end of file +} diff --git a/bs-game-wip/src/components/BattleGrid/BattleGrid.tsx b/bs-game-wip/src/components/BattleGrid/BattleGrid.tsx index 6e281251..8d04b01f 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGrid.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGrid.tsx @@ -1,34 +1,33 @@ -import * as React from "react"; -import HudWindow from "../HudWindow/HudWindow"; +import { useEffect, useState } from "react"; + +import { motion } from "framer-motion"; + +import AnimatedText from "@/components/AnimatedText/AnimatedText"; +import HudWindow from "@/components/HudWindow/HudWindow"; +import { useWalletStore } from "@/stores/walletStore"; + import BattleGridContainer from "./BattleGridContainer"; import BattleGridCurrentCoordinates from "./BattleGridCurrentCoordinates"; -import { useWalletStore } from "../../stores/walletStore"; -import AnimatedText from "../AnimatedText/AnimatedText"; -import {useEffect, useState} from "react"; -import { motion } from "framer-motion"; export default function BattleGrid() { const isConnected = useWalletStore((state) => state.isConnected); const [displayGrid, setDisplayGrid] = useState(false); useEffect(() => { - if (isConnected) { setTimeout(() => { - setDisplayGrid(true) - }, 3000) + setDisplayGrid(true); + }, 3000); } - - }, [isConnected]) + }, [isConnected]); const animation = { - initial: { opacity: 0}, + initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, - transition: { delay: 0, duration:1 }, + transition: { delay: 0, duration: 1 }, }; - const Disconnected = (
@@ -57,14 +56,15 @@ export default function BattleGrid() { isOpen={isConnected} closedContent={Disconnected} > -
- - {displayGrid ? ( - - - - - ):

Loading Grid.

} +
+ {displayGrid ? ( + + + + + ) : ( +

Loading Grid.

+ )}
); diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx index 3c28ae04..cb37f9ae 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx @@ -1,28 +1,21 @@ -import React, {useEffect, useMemo, useRef, useState} from "react"; -import BattleGridCell from "./BattleGridCell"; +import { useMemo } from "react"; + +import { BloomFilter } from "@pixi/filter-bloom"; import { Container, Stage } from "@pixi/react"; + +import { HEX_HEIGHT, HEX_WIDTH, HEX_GRID_MARGIN } from "@/lib/constants"; + +import BattleGridCell from "./BattleGridCell"; import BattleGridCursor from "./BattleGridCursor"; -import { - CONTAINER_HEIGHT, - CONTAINER_WIDTH, - HEX_HEIGHT, - HEX_WIDTH, -} from "@/lib/constants"; -import BattleGridMisses from "./BattleGridMisses"; import BattleGridHits from "./BattleGridHits"; -import {BloomFilter} from "@pixi/filter-bloom"; -import {HEX_GRID_MARGIN} from "../../lib/constants"; +import BattleGridMisses from "./BattleGridMisses"; export default function BattleGridCanvas({ grid, width, height }) { - const [viewport, setViewport] = useState({ - width: CONTAINER_WIDTH, - height: CONTAINER_HEIGHT, - }); - const bloomFilter = new BloomFilter(3, 3, 2); + const bloomFilter = new BloomFilter(3, 3, 2); const gridCells = useMemo( () => - grid.map(({ row, col, x, y, state }) => ( + grid.map(({ row, col, x, y }) => ( )), - [grid] + [grid], ); return ( - - {/**/} - {/*{hexagons.map(*/} - {/* ({ row, col, x, y }) =>*/} - {/* isInViewport(x, y, viewport, scrollPosition) && (*/} - {/* */} - {/* )*/} - {/*)}*/} - - {gridCells} - - - - - + {gridCells} + + + + + ); diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx index a2651fdc..5cf3bdec 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx @@ -1,49 +1,33 @@ -import {Graphics, Text} from "@pixi/react"; -import { TextStyle } from 'pixi.js' -import React from "react"; -import {hexHitArea} from "@/lib/constants"; +import { Graphics } from "@pixi/react"; -export default function BattleGridCell ({col, row, x, y, state}) { - return ( - <> - { - g.position.set(x, y); - g.clear(); +import { hexHitArea } from "@/lib/constants"; - if (state === "UNTOUCHED") { - g.beginFill(0xD9D9D9, 0) - g.lineStyle(1, 0x464646, 1); - } - if (state === 'MISSED') { - g.beginFill(0x5A5A5A, 1) - g.lineStyle(1, 0x4F4F4F, 1); - } - if (state === 'HIT') { - g.beginFill(0xE16F6F, 1) - g.lineStyle(1, 0xE16F6F, 1); - } +export default function BattleGridCell({ col, row, x, y, state }) { + return ( + <> + { + g.position.set(x, y); + g.clear(); - g.drawPolygon(hexHitArea); - g.endFill(); - }} - /> - {/**/} - - ) -} \ No newline at end of file + if (state === "UNTOUCHED") { + g.beginFill(0xd9d9d9, 0); + g.lineStyle(1, 0x464646, 1); + } + if (state === "MISSED") { + g.beginFill(0x5a5a5a, 1); + g.lineStyle(1, 0x4f4f4f, 1); + } + if (state === "HIT") { + g.beginFill(0xe16f6f, 1); + g.lineStyle(1, 0xe16f6f, 1); + } + + g.drawPolygon(hexHitArea); + g.endFill(); + }} + /> + + ); +} diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx index faf29199..4ca5c291 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx @@ -1,8 +1,9 @@ import React, { useEffect, useRef } from "react"; -import { useBattleGridStore } from "../../stores/battleGridStore"; -import BattleGridCanvas from "./BattleGridCanvas"; -import {COLS, CONTAINER_HEIGHT, CONTAINER_WIDTH, ROWS} from "../../lib/constants"; +import { COLS, CONTAINER_HEIGHT, ROWS } from "@/lib/constants"; +import { useBattleGridStore } from "@/stores/battleGridStore"; + +import BattleGridCanvas from "./BattleGridCanvas"; const styles = { container: { @@ -14,7 +15,7 @@ const styles = { export default function BattleGridContainer() { const setMousePosition = useBattleGridStore( - (state) => state.setMousePosition + (state) => state.setMousePosition, ); const initGrid = useBattleGridStore((state) => state.initGrid); const grid = useBattleGridStore((state) => state.grid); @@ -54,7 +55,7 @@ export default function BattleGridContainer() { }; const handleMouseClick = () => { - selectCell() + selectCell(); }; return ( @@ -65,7 +66,7 @@ export default function BattleGridContainer() { onClick={handleMouseClick} onScroll={handleScroll} > - +
); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx index bc405cb4..a7f96c5d 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx @@ -1,11 +1,11 @@ -import {useBattleGridStore} from "../../stores/battleGridStore"; +import { useBattleGridStore } from "@/stores/battleGridStore"; -export default function BattleGridCurrentCoordinates () { - const currentHoveredCell = useBattleGridStore( - (state) => state.hoveredCell - ); +export default function BattleGridCurrentCoordinates() { + const currentHoveredCell = useBattleGridStore((state) => state.hoveredCell); - return ( -
X:{currentHoveredCell?.col}, Y: {currentHoveredCell?.row}
- ) -} \ No newline at end of file + return ( +
+ X:{currentHoveredCell?.col}, Y: {currentHoveredCell?.row} +
+ ); +} diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx index fd016b93..65abc425 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx @@ -1,53 +1,64 @@ -import {useBattleGridStore} from "@/stores/battleGridStore"; -import {Graphics, useTick} from "@pixi/react"; -import React, {useRef} from "react"; -import {HEX_HEIGHT, HEX_WIDTH, hexHitArea, VERTICAL_OFFSET} from "@/lib/constants"; -import {useContractStore} from "../../stores/contractStore"; - -export default function BattleGridCursor () { - const [[x,y], hoveredCell] = useBattleGridStore((state) => [state.mousePosition, state.hoveredCell]) - const guessState = useContractStore((state) => state.guessState) - const isLoadingState = guessState !== "IDLE" - const shapeRef = useRef(null); - const scaleRef = useRef(1); - const directionRef = useRef(1); - const timeRef = useRef(0); - - useTick((delta) => { - if (shapeRef.current) { - timeRef.current += delta; - const scaleSpeed = 0.1; - const rotationSpeed = 1; - const maxScale = 1 - const minScale = isLoadingState ? .7 : .9 - const scaleRange = (maxScale - minScale) / 2; - const midScale = (maxScale + minScale) / 2; - const newScale = midScale + Math.sin(timeRef.current * scaleSpeed) * scaleRange; - - shapeRef.current.scale.set(newScale); - - if (isLoadingState) { - shapeRef.current.rotation += timeRef.current*rotationSpeed - } else { - shapeRef.current.rotation = 0 - } - } - }); - - if (!hoveredCell) { - return null +import React, { useRef } from "react"; + +import { Graphics, useTick } from "@pixi/react"; + +import { + HEX_HEIGHT, + HEX_WIDTH, + VERTICAL_OFFSET, + hexHitArea, +} from "@/lib/constants"; +import { useBattleGridStore } from "@/stores/battleGridStore"; +import { useContractStore } from "@/stores/contractStore"; + +export default function BattleGridCursor() { + const [[x, y], hoveredCell] = useBattleGridStore((state) => [ + state.mousePosition, + state.hoveredCell, + ]); + const guessState = useContractStore((state) => state.guessState); + const isLoadingState = guessState !== "IDLE"; + const shapeRef = useRef(null); + const scaleRef = useRef(1); + const directionRef = useRef(1); + const timeRef = useRef(0); + + useTick((delta) => { + if (shapeRef.current) { + timeRef.current += delta; + const scaleSpeed = 0.1; + const rotationSpeed = 1; + const maxScale = 1; + const minScale = isLoadingState ? 0.7 : 0.9; + const scaleRange = (maxScale - minScale) / 2; + const midScale = (maxScale + minScale) / 2; + const newScale = + midScale + Math.sin(timeRef.current * scaleSpeed) * scaleRange; + + shapeRef.current.scale.set(newScale); + + if (isLoadingState) { + shapeRef.current.rotation += timeRef.current * rotationSpeed; + } else { + shapeRef.current.rotation = 0; + } } + }); + + if (!hoveredCell) { + return null; + } - return ( - { - g.position.set(x, y); - g.clear(); - g.lineStyle(1, 0xFFFFFF, 1); - g.drawPolygon(hexHitArea); - g.endFill(); - }} - /> - ) -} \ No newline at end of file + return ( + { + g.position.set(x, y); + g.clear(); + g.lineStyle(1, 0xffffff, 1); + g.drawPolygon(hexHitArea); + g.endFill(); + }} + /> + ); +} diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx index e31717ef..4996f4e5 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx @@ -1,38 +1,46 @@ -import React, {useEffect, useMemo, useRef} from "react"; +import React, { useEffect, useMemo, useRef } from "react"; + +import { GlowFilter } from "@pixi/filter-glow"; +import { Container, useTick } from "@pixi/react"; + +import { QUERY_INTERVAL_MS } from "@/lib/constants"; +import { useBattleGridStore } from "@/stores/battleGridStore"; +import { useContractStore } from "@/stores/contractStore"; +import { useWalletStore } from "@/stores/walletStore"; + import BattleGridCell from "./BattleGridCell"; -import {useBattleGridStore} from "@/stores/battleGridStore"; -import {Container, useTick} from "@pixi/react"; - -import {GlowFilter} from "@pixi/filter-glow" -import {QUERY_INTERVAL_MS} from "@/lib/constants"; -import {useWalletStore} from "@/stores/walletStore"; -import {useContractStore} from "@/stores/contractStore"; - -export default function BattleGridHits () { - const hitCells = useBattleGridStore((state) => state.hitCells); - const isConnected = useWalletStore(state => state.isConnected) - const getAllHits = useContractStore(state => state.getAllHits) - const revealedGridCells = useMemo( - () => (hitCells.map(({row, col, x, y}) => )), - [hitCells] - ); - - useEffect(() => { - let interval - - if (isConnected) { - getAllHits() - interval = setInterval(() => { - getAllHits() - }, QUERY_INTERVAL_MS) - } - - return () => clearInterval(interval) - }, [isConnected]) - - return ( - - {revealedGridCells} - - ) -} \ No newline at end of file + +export default function BattleGridHits() { + const hitCells = useBattleGridStore((state) => state.hitCells); + const isConnected = useWalletStore((state) => state.isConnected); + const getAllHits = useContractStore((state) => state.getAllHits); + const revealedGridCells = useMemo( + () => + hitCells.map(({ row, col, x, y }) => ( + + )), + [hitCells], + ); + + useEffect(() => { + let interval; + + if (isConnected) { + getAllHits(); + interval = setInterval(() => { + getAllHits(); + }, QUERY_INTERVAL_MS); + } + + return () => clearInterval(interval); + }, [isConnected]); + + return {revealedGridCells}; +} diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx index eaeda5f2..72a25404 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx @@ -1,37 +1,45 @@ -import React, {useEffect, useMemo} from "react"; +import React, { useEffect, useMemo } from "react"; + +import { Container } from "@pixi/react"; + +import { QUERY_INTERVAL_MS } from "@/lib/constants"; +import { useBattleGridStore } from "@/stores/battleGridStore"; +import { useContractStore } from "@/stores/contractStore"; +import { useWalletStore } from "@/stores/walletStore"; + import BattleGridCell from "./BattleGridCell"; -import {useBattleGridStore} from "../../stores/battleGridStore"; -import {Container} from "@pixi/react"; -import {QUERY_INTERVAL_MS} from "../../lib/constants"; -import {useContractStore} from "../../stores/contractStore"; -import {useWalletStore} from "../../stores/walletStore"; - -export default function BattleGridMisses () { - const missedCells = useBattleGridStore((state) => state.missedCells); - const isConnected = useWalletStore(state => state.isConnected) - const getAllMisses = useContractStore(state => state.getAllMisses) - const revealedGridCells = useMemo( - () => (missedCells.map(({row, col, x, y}) => )), - [missedCells] - ); - - - useEffect(() => { - let interval - - if (isConnected) { - getAllMisses() - interval = setInterval(() => { - getAllMisses() - }, QUERY_INTERVAL_MS) - } - - return () => clearInterval(interval) - }, [isConnected]) - - return ( - - {revealedGridCells} - - ) -} \ No newline at end of file + +export default function BattleGridMisses() { + const missedCells = useBattleGridStore((state) => state.missedCells); + const isConnected = useWalletStore((state) => state.isConnected); + const getAllMisses = useContractStore((state) => state.getAllMisses); + const revealedGridCells = useMemo( + () => + missedCells.map(({ row, col, x, y }) => ( + + )), + [missedCells], + ); + + useEffect(() => { + let interval; + + if (isConnected) { + getAllMisses(); + interval = setInterval(() => { + getAllMisses(); + }, QUERY_INTERVAL_MS); + } + + return () => clearInterval(interval); + }, [isConnected]); + + return {revealedGridCells}; +} diff --git a/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx index 691d1366..51c6418d 100644 --- a/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx +++ b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx @@ -1,6 +1,6 @@ import HudWindow from "@/components/HudWindow/HudWindow"; -import { useContractStore } from "@/stores/contractStore"; import { COLS, ROWS } from "@/lib/constants"; +import { useContractStore } from "@/stores/contractStore"; import { useWalletStore } from "@/stores/walletStore"; export default function CellsRemaining() { @@ -12,9 +12,7 @@ export default function CellsRemaining() { const numberOfRevealedCells = misses.length + hits.length; const totalCells = ROWS * COLS; - const Disconnected = ( -

System Offline

- ); + const Disconnected =

System Offline

; const Footer = (
diff --git a/bs-game-wip/src/components/Graveyard/Graveyard.tsx b/bs-game-wip/src/components/Graveyard/Graveyard.tsx index 9631980f..63acf0a3 100644 --- a/bs-game-wip/src/components/Graveyard/Graveyard.tsx +++ b/bs-game-wip/src/components/Graveyard/Graveyard.tsx @@ -1,39 +1,62 @@ -import * as React from "react"; -import HudWindow from "../HudWindow/HudWindow"; -import {useContractStore} from "@/stores/contractStore"; -import {useWalletStore} from "@/stores/walletStore"; -import {useEffect} from "react"; -import ShipFresh from "@/assets/shipFresh.svg" -import ShipSunk from "@/assets/shipSunk.svg" -import AnimatedText from "../AnimatedText/AnimatedText"; +import { useEffect } from "react"; +import ShipFresh from "@/assets/shipFresh.svg"; +import ShipSunk from "@/assets/shipSunk.svg"; +import AnimatedText from "@/components/AnimatedText/AnimatedText"; +import HudWindow from "@/components/HudWindow/HudWindow"; +import { useContractStore } from "@/stores/contractStore"; +import { useWalletStore } from "@/stores/walletStore"; -export default function Graveyard () { - const [graveyard, getGraveyard, hits] = useContractStore(state => [state.graveyard, state.getGraveyard, state.hits]) - const isConnected = useWalletStore(state => state.isConnected) - const sunkShipTotal = graveyard.reduce((nxt, cur) => cur ? nxt : nxt + 1, 0) - const fleetHealth = (sunkShipTotal / graveyard.length) * 100 +export default function Graveyard() { + const [graveyard, getGraveyard, hits] = useContractStore((state) => [ + state.graveyard, + state.getGraveyard, + state.hits, + ]); + const isConnected = useWalletStore((state) => state.isConnected); + const sunkShipTotal = graveyard.reduce( + (nxt, cur) => (cur ? nxt : nxt + 1), + 0, + ); + const fleetHealth = (sunkShipTotal / graveyard.length) * 100; - useEffect(() => { - if (isConnected) { - getGraveyard() - } - }, [hits]) + useEffect(() => { + if (isConnected) { + getGraveyard(); + } + }, [hits]); - const Disconnected =

System Offline

+ const Disconnected =

System Offline

; - const Footer =
-
Fleet Strength
-

{fleetHealth.toFixed(1)}% PERC

-

{sunkShipTotal}/{graveyard.length}

-
Ships remaining
+ const Footer = ( +
+
Fleet Strength
+

{fleetHealth.toFixed(1)}% PERC

+

+ {sunkShipTotal}/{graveyard.length} +

+
Ships remaining
+ ); - return ( - -
- {graveyard.map((ship, i) => Logo )} -
-
- ) -} \ No newline at end of file + return ( + +
+ {graveyard.map((ship, i) => ( + Logo + ))} +
+
+ ); +} diff --git a/bs-game-wip/src/components/HudWindow/HudWindow.tsx b/bs-game-wip/src/components/HudWindow/HudWindow.tsx index 62cef9fc..3607354a 100644 --- a/bs-game-wip/src/components/HudWindow/HudWindow.tsx +++ b/bs-game-wip/src/components/HudWindow/HudWindow.tsx @@ -1,7 +1,10 @@ import { ReactNode } from "react"; + +import { AnimatePresence, motion } from "framer-motion"; + +import AnimatedText from "@/components/AnimatedText/AnimatedText"; + import styles from "./styles.module.scss"; -import { motion, AnimatePresence } from "framer-motion"; -import AnimatedText from "../AnimatedText/AnimatedText"; type Props = { children?: ReactNode; @@ -9,7 +12,7 @@ type Props = { headerTitle: string; isOpen?: boolean; closedContent?: ReactNode; - speed?: number + speed?: number; }; export default function HudWindow({ @@ -18,9 +21,8 @@ export default function HudWindow({ headerTitle, isOpen = true, closedContent, - speed=1 + speed = 1, }: Props) { - const topDecorationAnimation = { initial: { width: 0, height: 0 }, animate: { width: "80%", height: "80%" }, @@ -52,14 +54,14 @@ export default function HudWindow({ initial: { opacity: 0, width: 0, right: 0, left: "auto" }, animate: { opacity: 1, width: "100%", right: 0, left: "auto" }, exit: { opacity: 0 }, - transition: { delay: 1, duration: 1 * speed}, + transition: { delay: 1, duration: 1 * speed }, }; const footerContentAnimation = { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, - transition: { delay: 3, duration: 1 * speed}, + transition: { delay: 3, duration: 1 * speed }, }; const closedScreenAnimation = { diff --git a/bs-game-wip/src/components/HudWindow/styles.module.scss b/bs-game-wip/src/components/HudWindow/styles.module.scss index b3e9dd95..66238efc 100644 --- a/bs-game-wip/src/components/HudWindow/styles.module.scss +++ b/bs-game-wip/src/components/HudWindow/styles.module.scss @@ -35,7 +35,6 @@ border-top: solid 1px #ffaba5; animation: anim2 3s linear infinite; box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); - } } @@ -58,7 +57,7 @@ right: -1px; top: -1px; border-left: solid 1px #ffaba5; - animation: anim3 3s linear infinite; + animation: anim3 3s linear infinite; box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); } @@ -95,11 +94,11 @@ } 50% { top: -1px; - height: 0 + height: 0; } 100% { top: -1px; - height: 0 + height: 0; } } @@ -145,12 +144,12 @@ 50% { bottom: -1px; top: auto; - height: 0 + height: 0; } 100% { bottom: -1px; top: auto; - height: 0 + height: 0; } } @@ -180,4 +179,4 @@ right: auto; width: 0; } -} \ No newline at end of file +} diff --git a/bs-game-wip/src/components/MessageLog/MessageLog.tsx b/bs-game-wip/src/components/MessageLog/MessageLog.tsx index 370839e1..6e27f921 100644 --- a/bs-game-wip/src/components/MessageLog/MessageLog.tsx +++ b/bs-game-wip/src/components/MessageLog/MessageLog.tsx @@ -1,39 +1,55 @@ +import { useEffect, useState } from "react"; + +import AnimatedText from "@/components/AnimatedText/AnimatedText"; +import HudWindow from "@/components/HudWindow/HudWindow"; import { useMessageStore } from "@/stores/messageStore"; -import HudWindow from "../HudWindow/HudWindow"; -import {useEffect, useState} from "react"; + import styles from "./styles.module.scss"; -import AnimatedText from "../AnimatedText/AnimatedText"; -const ANIMATION_DURATION = 1000 +const ANIMATION_DURATION = 1000; export default function MessageLog() { const [messages] = useMessageStore((state) => [state.messages]); - const [displayedItems, setDisplayedItems] = useState([]); - const [currentIndex, setCurrentIndex] = useState(0); - const [readyForNewLine, setReadyForNewLine] = useState(true) + const [displayedItems, setDisplayedItems] = useState([]); + const [currentIndex, setCurrentIndex] = useState(0); + const [readyForNewLine, setReadyForNewLine] = useState(true); - useEffect(() => { - if (currentIndex < messages.length && readyForNewLine) { - setReadyForNewLine(false) - setDisplayedItems((prev) => [...prev, messages[currentIndex]]); - setCurrentIndex((prev) => prev + 1); - } - }, [messages, readyForNewLine]); - - const handleCompletedLine = () => { - setReadyForNewLine(true) + useEffect(() => { + if (currentIndex < messages.length && readyForNewLine) { + setReadyForNewLine(false); + setDisplayedItems((prev) => [...prev, messages[currentIndex]]); + setCurrentIndex((prev) => prev + 1); } + }, [messages, readyForNewLine]); + + const handleCompletedLine = () => { + setReadyForNewLine(true); + }; return ( - +
    {displayedItems.map((message, i) => ( -
  • - -
  • +
  • + +
  • ))} - {readyForNewLine &&
  • } + {readyForNewLine && ( +
  • + +
  • + )}
diff --git a/bs-game-wip/src/components/MessageLog/styles.module.scss b/bs-game-wip/src/components/MessageLog/styles.module.scss index 919841e5..f450ab29 100644 --- a/bs-game-wip/src/components/MessageLog/styles.module.scss +++ b/bs-game-wip/src/components/MessageLog/styles.module.scss @@ -6,7 +6,7 @@ .cursor { display: inline-block; - width: .6em; + width: 0.6em; background: white; height: 1em; @@ -18,15 +18,15 @@ @keyframes CursorFlash { 0% { - opacity: 0 + opacity: 0; } 25% { - opacity: 1 + opacity: 1; } 75% { - opacity: 1 + opacity: 1; } 75% { - opacity: 0 + opacity: 0; } -} \ No newline at end of file +} diff --git a/bs-game-wip/src/components/MetaMask/MetaMask.tsx b/bs-game-wip/src/components/MetaMask/MetaMask.tsx index 632cee60..ead6142c 100644 --- a/bs-game-wip/src/components/MetaMask/MetaMask.tsx +++ b/bs-game-wip/src/components/MetaMask/MetaMask.tsx @@ -1,14 +1,11 @@ - -import { useWalletStore } from "@/stores/walletStore"; +import metaMaskLogo from "@/assets/metamask-logo.svg"; +import HudWindow from "@/components/HudWindow/HudWindow"; import { useMessageStore } from "@/stores/messageStore"; - -import * as React from "react"; -import HudWindow from "../HudWindow/HudWindow"; -import metaMaskLogo from "@/assets/metamask-logo.svg" +import { useWalletStore } from "@/stores/walletStore"; export default function MetaMask() { const [provider, address, setAddress] = useWalletStore((state) => [ - state.provider, + state.provider, state.address, state.setAddress, ]); @@ -22,20 +19,24 @@ export default function MetaMask() { }); setAddress(accounts[0]); } catch (error) { - addNewMessage("User rejected the request.", "ERROR"); + addNewMessage("User rejected the request.", "ERROR"); } } }; return ( - - - {address ? ( + + + {address ? (

MetaMask Connected

- ) : ( + ) : ( - )} -
}> - + )} +
+ } + > ); } diff --git a/bs-game-wip/src/components/PrizePool/PrizePool.tsx b/bs-game-wip/src/components/PrizePool/PrizePool.tsx index 553c4af7..49af636a 100644 --- a/bs-game-wip/src/components/PrizePool/PrizePool.tsx +++ b/bs-game-wip/src/components/PrizePool/PrizePool.tsx @@ -1,8 +1,8 @@ -import * as React from "react"; -import HudWindow from "../HudWindow/HudWindow"; import { useEffect, useState } from "react"; -import { useContractStore } from "../../stores/contractStore"; -import {useWalletStore} from "../../stores/walletStore"; + +import HudWindow from "@/components/HudWindow/HudWindow"; +import { useContractStore } from "@/stores/contractStore"; +import { useWalletStore } from "@/stores/walletStore"; export default function PrizePool() { const [hits, misses, prizePool, getPrizePool] = useContractStore((state) => [ @@ -11,7 +11,7 @@ export default function PrizePool() { state.prizePool, state.getPrizePool, ]); - const isConnected = useWalletStore(state => state.isConnected) + const isConnected = useWalletStore((state) => state.isConnected); const [totalGuesses, setTotalGuesses] = useState(hits.length + misses.length); useEffect(() => { @@ -24,11 +24,17 @@ export default function PrizePool() { } }, [totalGuesses]); - const Disconnected =

System Offline

+ const Disconnected =

System Offline

; return ( - -

{prizePool} ETH

+ +

+ {prizePool} ETH +

); } diff --git a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx index addd30e0..6baf3763 100644 --- a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx +++ b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx @@ -1,76 +1,104 @@ +import { AnimatePresence, motion } from "framer-motion"; + import HudWindow from "@/components/HudWindow/HudWindow"; +import { useContractStore } from "@/stores/contractStore"; + import styles from "./styles.module.scss"; -import {useContractStore} from "@/stores/contractStore"; -import { motion, AnimatePresence } from "framer-motion"; -export default function ProcessingNotification () { - const [guessState, lastError, resetGuessState] = useContractStore((state) => [state.guessState, state.lastError, state.resetGuessState]) - let footerContent =
- let bodyContent =
- const handleClose = () => { - resetGuessState() - } +export default function ProcessingNotification() { + const [guessState, lastError, resetGuessState] = useContractStore((state) => [ + state.guessState, + state.lastError, + state.resetGuessState, + ]); + let footerContent =
; + let bodyContent =
; + const handleClose = () => { + resetGuessState(); + }; - if (guessState === "IDLE") return null + if (guessState === "IDLE") return null; - if (guessState === "STARTED") { - footerContent =

Processing...

- bodyContent =
-

Target locked and confirmed.

-

Initiating plasma cannon sequence.

-
- } + if (guessState === "STARTED") { + footerContent =

Processing...

; + bodyContent = ( +
+

+ Target locked and confirmed. +

+

+ Initiating plasma cannon sequence. +

+
+ ); + } - if (guessState === "ERROR") { - footerContent = - bodyContent =
-

WEAPON ACTIVATION FAILED

-

Error detected.

-

{lastError}

-
- } + if (guessState === "ERROR") { + footerContent = ; + bodyContent = ( +
+

+ WEAPON ACTIVATION FAILED +

+

Error detected.

+

{lastError}

+
+ ); + } - if (guessState === 'TRANSACTION_SUCCESS') { - footerContent =

CANNONS FIRED...

- bodyContent =
-

Ordinance en route to target.

-

Monitor for impact confirmation.

-
- } + if (guessState === "TRANSACTION_SUCCESS") { + footerContent =

CANNONS FIRED...

; + bodyContent = ( +
+

+ Ordinance en route to target. +

+

+ Monitor for impact confirmation. +

+
+ ); + } - console.log(guessState) + console.log(guessState); - const variants = { - initial: { opacity: 0, y: -20 }, - animate: { opacity: 1, y: 0 }, - exit: { opacity: 0, y: 20 }, - }; + const variants = { + initial: { opacity: 0, y: -20 }, + animate: { opacity: 1, y: 0 }, + exit: { opacity: 0, y: 20 }, + }; - return ( -
- + return ( +
+ - {footerContent} + {footerContent} -
}> - - - {bodyContent} - - -
-
- ) -} \ No newline at end of file +
+ } + > + + + {bodyContent} + + + +
+ ); +} diff --git a/bs-game-wip/src/components/ProcessingNotification/styles.module.scss b/bs-game-wip/src/components/ProcessingNotification/styles.module.scss index 3dff9a38..d2f8eba1 100644 --- a/bs-game-wip/src/components/ProcessingNotification/styles.module.scss +++ b/bs-game-wip/src/components/ProcessingNotification/styles.module.scss @@ -3,4 +3,4 @@ top: 30vh; left: 50vw; transform: translateX(-50%); -} \ No newline at end of file +} diff --git a/bs-game-wip/src/contexts/EventContext.tsx b/bs-game-wip/src/contexts/EventContext.tsx index b8011a0d..2757d5ea 100644 --- a/bs-game-wip/src/contexts/EventContext.tsx +++ b/bs-game-wip/src/contexts/EventContext.tsx @@ -1,17 +1,17 @@ -import React, { createContext, useState } from 'react'; +import React, { createContext, useState } from "react"; export const EventContext = createContext(undefined); export const EventProvider = ({ children }) => { - const [event, setEvent] = useState(null); + const [event, setEvent] = useState(null); - const triggerEvent = (eventData) => { - setEvent(eventData); - }; + const triggerEvent = (eventData) => { + setEvent(eventData); + }; - return ( - - {children} - - ); -}; \ No newline at end of file + return ( + + {children} + + ); +}; diff --git a/bs-game-wip/src/helpers/formatAddress.ts b/bs-game-wip/src/helpers/formatAddress.ts index efe17b1d..fe5fd7ab 100644 --- a/bs-game-wip/src/helpers/formatAddress.ts +++ b/bs-game-wip/src/helpers/formatAddress.ts @@ -1,7 +1,7 @@ export default function formatAddress(address: string) { - const afterX = address.substring(2) - const firstFourCharacters = afterX.substring(0, 4) - const lastFourCharacters = afterX.slice(-4) + const afterX = address.substring(2); + const firstFourCharacters = afterX.substring(0, 4); + const lastFourCharacters = afterX.slice(-4); - return `0x${firstFourCharacters}...${lastFourCharacters}` -} \ No newline at end of file + return `0x${firstFourCharacters}...${lastFourCharacters}`; +} diff --git a/bs-game-wip/src/helpers/getCellXY.ts b/bs-game-wip/src/helpers/getCellXY.ts index 2a34ac91..522405b7 100644 --- a/bs-game-wip/src/helpers/getCellXY.ts +++ b/bs-game-wip/src/helpers/getCellXY.ts @@ -1,9 +1,16 @@ -import {HEX_GRID_MARGIN, HEX_HEIGHT, HEX_WIDTH, HORIZONTAL_OFFSET, VERTICAL_OFFSET} from "../lib/constants"; +import { + HEX_GRID_MARGIN, + HEX_HEIGHT, + HEX_WIDTH, + HORIZONTAL_OFFSET, + VERTICAL_OFFSET, +} from "../lib/constants"; -export default function getCellXY (col: number, row: number) { - const x = HEX_GRID_MARGIN + ( - ((row % 2) * HEX_WIDTH) / 2 + col * (HEX_WIDTH - HORIZONTAL_OFFSET)); - const y = HEX_GRID_MARGIN + (row * (HEX_HEIGHT - VERTICAL_OFFSET)) +export default function getCellXY(col: number, row: number) { + const x = + HEX_GRID_MARGIN + + (((row % 2) * HEX_WIDTH) / 2 + col * (HEX_WIDTH - HORIZONTAL_OFFSET)); + const y = HEX_GRID_MARGIN + row * (HEX_HEIGHT - VERTICAL_OFFSET); - return [x,y] -} \ No newline at end of file + return [x, y]; +} diff --git a/bs-game-wip/src/helpers/isInViewport.ts b/bs-game-wip/src/helpers/isInViewport.ts index 483290e9..22ba0798 100644 --- a/bs-game-wip/src/helpers/isInViewport.ts +++ b/bs-game-wip/src/helpers/isInViewport.ts @@ -1,10 +1,10 @@ -import {DRAW_THRESHOLD, HEX_HEIGHT, HEX_WIDTH} from "../lib/constants"; +import { DRAW_THRESHOLD, HEX_HEIGHT, HEX_WIDTH } from "../lib/constants"; -export default function isInViewport (x, y, viewport, scrollPosition) { - return ( - x > -HEX_WIDTH + scrollPosition[0] - DRAW_THRESHOLD && - x < viewport.width + HEX_WIDTH + scrollPosition[0] + DRAW_THRESHOLD && - y > -HEX_HEIGHT + scrollPosition[1] && - y < viewport.height + HEX_HEIGHT + scrollPosition[1] - ); -}; \ No newline at end of file +export default function isInViewport(x, y, viewport, scrollPosition) { + return ( + x > -HEX_WIDTH + scrollPosition[0] - DRAW_THRESHOLD && + x < viewport.width + HEX_WIDTH + scrollPosition[0] + DRAW_THRESHOLD && + y > -HEX_HEIGHT + scrollPosition[1] && + y < viewport.height + HEX_HEIGHT + scrollPosition[1] + ); +} diff --git a/bs-game-wip/src/index.css b/bs-game-wip/src/index.css index eb0579dc..864493c9 100644 --- a/bs-game-wip/src/index.css +++ b/bs-game-wip/src/index.css @@ -4,7 +4,7 @@ font-weight: 100; color-scheme: light dark; color: rgba(255, 255, 255, 0.87); - background-color: #1e1e1e;; + background-color: #1e1e1e; font-synthesis: none; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; diff --git a/bs-game-wip/src/lib/constants.ts b/bs-game-wip/src/lib/constants.ts index f9207cfe..7acfda74 100644 --- a/bs-game-wip/src/lib/constants.ts +++ b/bs-game-wip/src/lib/constants.ts @@ -11,10 +11,8 @@ export const hexHitArea = createHexagon(HEX_WIDTH, HEX_HEIGHT); export const DRAW_THRESHOLD = 100; export const CONTAINER_WIDTH = 600; export const CONTAINER_HEIGHT = 500; -export const COLS = 100 -export const ROWS = 100 -export const HEX_GRID_MARGIN = 32 - -export const QUERY_INTERVAL_MS = 5000 - +export const COLS = 100; +export const ROWS = 100; +export const HEX_GRID_MARGIN = 32; +export const QUERY_INTERVAL_MS = 5000; diff --git a/bs-game-wip/src/lib/trackEvent.ts b/bs-game-wip/src/lib/trackEvent.ts index 744b2776..7c8a433b 100644 --- a/bs-game-wip/src/lib/trackEvent.ts +++ b/bs-game-wip/src/lib/trackEvent.ts @@ -1,6 +1,6 @@ export function trackEvent(eventName, eventData) { - if (!window.gtag) { - return - } - window.gtag('event', eventName, eventData) -} \ No newline at end of file + if (!window.gtag) { + return; + } + window.gtag("event", eventName, eventData); +} diff --git a/bs-game-wip/src/main.tsx b/bs-game-wip/src/main.tsx index 48526aa0..a58d1c13 100644 --- a/bs-game-wip/src/main.tsx +++ b/bs-game-wip/src/main.tsx @@ -1,11 +1,13 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.tsx' -import './index.css' -import './tailwind.css' +import React from "react"; -ReactDOM.createRoot(document.getElementById('root')!).render( +import ReactDOM from "react-dom/client"; + +import App from "./App.tsx"; +import "./index.css"; +import "./tailwind.css"; + +ReactDOM.createRoot(document.getElementById("root")!).render( , -) +); diff --git a/bs-game-wip/src/services/web3service.js b/bs-game-wip/src/services/web3service.js index 84a6d6d3..2a81561e 100644 --- a/bs-game-wip/src/services/web3service.js +++ b/bs-game-wip/src/services/web3service.js @@ -1,33 +1,38 @@ -import { ethers } from 'ethers' -import { useMessageStore } from '@/stores/messageStore' -import BattleshipGameJson from '@/assets/contract/artifacts/contracts/BattleshipGame.sol/BattleshipGame.json' -import ContractAddress from '@/assets/contract/address.json' -import {MOVE_FEE} from "@/lib/constants"; +import { ethers } from "ethers"; + +import ContractAddress from "@/assets/contract/address.json"; +import BattleshipGameJson from "@/assets/contract/artifacts/contracts/BattleshipGame.sol/BattleshipGame.json"; +import { MOVE_FEE } from "@/lib/constants"; +import { useMessageStore } from "@/stores/messageStore"; export default class Web3Service { constructor(signer) { - this.contract = new ethers.Contract(ContractAddress.address, BattleshipGameJson.abi, signer) - this.signer = signer + this.contract = new ethers.Contract( + ContractAddress.address, + BattleshipGameJson.abi, + signer, + ); + this.signer = signer; } async submitGuess(x, y) { // const messageStore = useMessageStore() // messageStore.addMessage('Issuing Guess...') - const moveFee = ethers.parseEther(MOVE_FEE) + const moveFee = ethers.parseEther(MOVE_FEE); try { const submitTx = await this.contract.hit(x, y, { - value: moveFee - }) - const receipt = await submitTx.wait() + value: moveFee, + }); + const receipt = await submitTx.wait(); // messageStore.addMessage('Issued Guess tx: ' + receipt.transactionHash) - console.log(receipt) - return receipt + console.log(receipt); + return receipt; } catch (e) { if (e) { // messageStore.addMessage('Failed to issue Guess - ' + e.reason + ' ...') } - throw new Error(e) + throw new Error(e); // messageStore.addMessage( // 'Failed to issue Guess - unexpected error occurred, check the console logs...' @@ -36,73 +41,83 @@ export default class Web3Service { } async getAllShipPositions() { - const messageStore = useMessageStore() + const messageStore = useMessageStore(); try { - const ships = await this.contract.getAllShipPositions() - return ships + const ships = await this.contract.getAllShipPositions(); + return ships; } catch (error) { - console.error('Failed to get ship properties - ', error) - messageStore.addMessage('Failed to get ship properties - ' + error.reason + ' ...') + console.error("Failed to get ship properties - ", error); + messageStore.addMessage( + "Failed to get ship properties - " + error.reason + " ...", + ); } } async getShipAtPosition(x, y) { - const messageStore = useMessageStore() + const messageStore = useMessageStore(); try { - const ship = await this.contract.getShipAtPosition(x, y) - return ship + const ship = await this.contract.getShipAtPosition(x, y); + return ship; } catch (error) { - console.error('Failed to get ship at position - ', error) - messageStore.addMessage('Failed to get ship at position - ' + error.reason + ' ...') + console.error("Failed to get ship at position - ", error); + messageStore.addMessage( + "Failed to get ship at position - " + error.reason + " ...", + ); } } async getGraveyard() { - const messageStore = useMessageStore() + const messageStore = useMessageStore(); try { - const ships = await this.contract.getGraveyard() - return ships + const ships = await this.contract.getGraveyard(); + return ships; } catch (error) { - console.error('Failed to get graveyard - ', error) - messageStore.addMessage('Failed to get graveyard - ' + error.reason + ' ...') + console.error("Failed to get graveyard - ", error); + messageStore.addMessage( + "Failed to get graveyard - " + error.reason + " ...", + ); } } async isCellHit(x, y) { - const addToMessageStore = useMessageStore(state => state.addNewMessage) + const addToMessageStore = useMessageStore((state) => state.addNewMessage); try { - const isHit = await this.contract.isHit(x, y) - return isHit + const isHit = await this.contract.isHit(x, y); + return isHit; } catch (error) { - console.error('Failed to get cell hit status - ', error) - addToMessageStore('Failed to get cell hit status - ' + error.reason + ' ...') + console.error("Failed to get cell hit status - ", error); + addToMessageStore( + "Failed to get cell hit status - " + error.reason + " ...", + ); } } async isShipSunk(shipIndex) { - const addToMessageStore = useMessageStore(state => state.addNewMessage) + const addToMessageStore = useMessageStore((state) => state.addNewMessage); try { - const isSunk = await this.contract.isSunk(shipIndex) - return isSunk + const isSunk = await this.contract.isSunk(shipIndex); + return isSunk; } catch (error) { - console.error('Failed to get ship sunk status - ', error) - addToMessageStore('Failed to get ship sunk status - ' + error.reason + ' ...') + console.error("Failed to get ship sunk status - ", error); + addToMessageStore( + "Failed to get ship sunk status - " + error.reason + " ...", + ); } } async isGameOver() { - const addToMessageStore = useMessageStore(state => state.addNewMessage) - // const battleStore = useBattleStore() - // try { - // const isGameOver = await this.contract.gameOver() - // if (isGameOver) { - // messageStore.addMessage('The game is over!') - // battleStore.gameOver = true - // } - // return isGameOver - // } catch (error) { - // console.error('Failed to get ship sunk status - ', error) - // messageStore.addMessage('Failed to get ship sunk status - ' + error.reason + ' ...') - // } + const addToMessageStore = useMessageStore((state) => state.addNewMessage); + // const battleStore = useBattleStore() + // try { + // const isGameOver = await this.contract.gameOver() + // if (isGameOver) { + // messageStore.addMessage('The game is over!') + // battleStore.gameOver = true + // } + // return isGameOver + // } catch (error) { + // console.error('Failed to get ship sunk status - ', error) + // messageStore.addMessage('Failed to get ship sunk status - ' + error.reason + ' ...') + // } } } diff --git a/bs-game-wip/src/stores/battleGridStore.ts b/bs-game-wip/src/stores/battleGridStore.ts index 06e25a73..74e1dda4 100644 --- a/bs-game-wip/src/stores/battleGridStore.ts +++ b/bs-game-wip/src/stores/battleGridStore.ts @@ -1,65 +1,51 @@ -import { create } from 'zustand' -import getSnappedMousePosition from "@/utils/getSnappedMousePosition"; -import {useContractStore} from "./contractStore"; -import getCellXY from "../helpers/getCellXY"; +import { create } from 'zustand'; + +import getCellXY from '@/helpers/getCellXY'; +import getSnappedMousePosition from '@/utils/getSnappedMousePosition'; + +import { useContractStore } from './contractStore'; export const useBattleGridStore = create((set, get) => ({ grid: [], missedCells: [], hitCells: [], hoveredCell: null, - scrollPosition: [0,0], - mousePosition: [0,0], + scrollPosition: [0, 0], + mousePosition: [0, 0], selectedCell: null, - initGrid: (height, width) => set(() => { - const hexagons = []; - for (let row = 0; row < height; row++) { - for (let col = 0; col < width; col++) { - const [x, y] = getCellXY(col, row) - hexagons.push({row, col, x, y, revealed: false}); + initGrid: (height: number, width: number) => + set(() => { + const hexagons = []; + for (let row = 0; row < height; row++) { + for (let col = 0; col < width; col++) { + const [x, y] = getCellXY(col, row); + hexagons.push({ row, col, x, y, revealed: false }); + } } - } - return ({grid: hexagons}) - }), - setScrollPosition: (x, y) => set(() => ({ scrollPosition: [x,y] })), - setMousePosition: (x, y) => set((state) => { - const guessState = useContractStore.getState().guessState - if (guessState !== 'IDLE') return ({}) + return { grid: hexagons }; + }), + setMousePosition: (x: number, y: number) => + set((state) => { + const guessState = useContractStore.getState().guessState; + if (guessState !== 'IDLE') return {}; - const [sx, sy] = getSnappedMousePosition(x,y) - const hoveredCell = state.grid.find((cell) => - (sx === cell.x && sy === cell.y) - ) + const [sx, sy] = getSnappedMousePosition(x, y); + const hoveredCell = state.grid.find((cell) => sx === cell.x && sy === cell.y); - return ({ - hoveredCell: hoveredCell || null, - mousePosition: getSnappedMousePosition(sx,sy) - }) - }), + return { + hoveredCell: hoveredCell || null, + mousePosition: getSnappedMousePosition(sx, sy), + }; + }), selectCell: () => { - const selectedCell = get().hoveredCell - if (!selectedCell || useContractStore.getState().guessState !== 'IDLE') return - - set({selectedCell}) - const submitGuess = useContractStore.getState().submitGuess - submitGuess(selectedCell.col, selectedCell.row) + const selectedCell = get().hoveredCell; + if (!selectedCell || useContractStore.getState().guessState !== 'IDLE') return; - // if (Math.random() < .3) { - // set({ - // hitCells: [...get().hitCells, selectedCell], - // selectedCell - // }) - // } else { - // set({ - // missedCells: [...get().missedCells, selectedCell], - // selectedCell - // }) - // } + set({ selectedCell }); + const submitGuess = useContractStore.getState().submitGuess; + submitGuess(selectedCell.col, selectedCell.row); }, - clearSelectedCell: () => set(() => ({selectedCell: null})), - setHoveredCell: (x, y) => set(() => ({ hoveredCell: [x,y] })), - clearHoveredCell: () => set(() => ({ hoveredCell: null })), -})) \ No newline at end of file +})); diff --git a/bs-game-wip/src/stores/contractStore.ts b/bs-game-wip/src/stores/contractStore.ts index 9f29f766..798fe506 100644 --- a/bs-game-wip/src/stores/contractStore.ts +++ b/bs-game-wip/src/stores/contractStore.ts @@ -1,14 +1,16 @@ -import { create } from "zustand"; -import { useWalletStore } from "@/stores/walletStore"; -import { TOTAL_SHIPS } from "@/lib/constants"; import { ethers, formatUnits } from "ethers"; -import BattleshipGameJson from "@/assets/contract/artifacts/contracts/BattleshipGame.sol/BattleshipGame.json"; +import { create } from "zustand"; + import ContractAddress from "@/assets/contract/address.json"; +import BattleshipGameJson from "@/assets/contract/artifacts/contracts/BattleshipGame.sol/BattleshipGame.json"; +import { TOTAL_SHIPS } from "@/lib/constants"; import { MOVE_FEE } from "@/lib/constants"; import { useMessageStore } from "@/stores/messageStore"; -import { useBattleGridStore } from "./battleGridStore"; +import { useWalletStore } from "@/stores/walletStore"; + import getCellXY from "../helpers/getCellXY"; import handleMetaMaskError from "../utils/handleMetaMaskError"; +import { useBattleGridStore } from "./battleGridStore"; export interface IContractStore { hits: any[]; @@ -16,17 +18,24 @@ export interface IContractStore { graveyard: any[]; gameOver: boolean; prizePool: number; - guessState: GuessState, - lastError: string - submitGuess: (x: number, y: number) => Promise - resetGuessState: () => void - getPrizePool: () => Promise - getAllHits: () => Promise - getAllMisses: () => Promise - getGraveyard: () => Promise + guessState: GuessState; + lastError: string; + submitGuess: (x: number, y: number) => Promise; + resetGuessState: () => void; + getPrizePool: () => Promise; + getAllHits: () => Promise; + getAllMisses: () => Promise; + getGraveyard: () => Promise; } -export type GuessState = 'IDLE'|'STARTED'|'ERROR'|'TRANSACTION_SUCCESS'|'RECEIVED_RECEIPT'|'HIT'|'MISS' +export type GuessState = + | "IDLE" + | "STARTED" + | "ERROR" + | "TRANSACTION_SUCCESS" + | "RECEIVED_RECEIPT" + | "HIT" + | "MISS"; export const useContractStore = create((set, get) => ({ hits: [], @@ -46,20 +55,20 @@ export const useContractStore = create((set, get) => ({ return; } - set({guessState: 'STARTED'}) + set({ guessState: "STARTED" }); addNewMessage("Issuing Guess..."); const contract = new ethers.Contract( ContractAddress.address, BattleshipGameJson.abi, - signer + signer, ); const moveFee = ethers.parseEther(MOVE_FEE); try { const submitTx = await contract.hit(x, y, { value: moveFee, }); - set({guessState: 'TRANSACTION_SUCCESS'}) + set({ guessState: "TRANSACTION_SUCCESS" }); const receipt = await submitTx.wait(); addNewMessage("Issued Guess tx: " + receipt.hash); @@ -67,24 +76,25 @@ export const useContractStore = create((set, get) => ({ useContractStore.getState().getAllHits(); useContractStore.getState().getAllMisses(); } catch (e) { - set({guessState: 'ERROR'}) + set({ guessState: "ERROR" }); if (e.reason) { addNewMessage("Failed to issue Guess - " + e.reason + " ...", "ERROR"); - set({lastError: "Failed to issue Guess - " + e.reason}) + set({ lastError: "Failed to issue Guess - " + e.reason }); } else { addNewMessage( "Failed to issue Guess - unexpected error occurred, check the console logs...", - "ERROR" + "ERROR", ); - set({lastError: "Failed to issue Guess - unexpected error occurred"}) + set({ lastError: "Failed to issue Guess - unexpected error occurred" }); throw new Error(e); } } }, - resetGuessState: () => set({ - guessState: "IDLE" - }), + resetGuessState: () => + set({ + guessState: "IDLE", + }), getGraveyard: async () => { const signer = useWalletStore.getState().signer; @@ -92,13 +102,13 @@ export const useContractStore = create((set, get) => ({ const contract = new ethers.Contract( ContractAddress.address, BattleshipGameJson.abi, - signer + signer, ); try { const latestGraveyard = await contract.getGraveyard(); const graveyardHasUpdated = get().graveyard.some( - (value, index) => value !== latestGraveyard[index] + (value, index) => value !== latestGraveyard[index], ); if (graveyardHasUpdated) { @@ -108,7 +118,7 @@ export const useContractStore = create((set, get) => ({ console.error(error); addNewMessage( "Failed to get graveyard - " + error.reason + " ...", - "ERROR" + "ERROR", ); } }, @@ -120,7 +130,7 @@ export const useContractStore = create((set, get) => ({ const contract = new ethers.Contract( ContractAddress.address, BattleshipGameJson.abi, - signer + signer, ); try { @@ -147,7 +157,7 @@ export const useContractStore = create((set, get) => ({ if (e.reason) { addNewMessage( "Failed to get graveyard - " + e.reason + " ...", - "ERROR" + "ERROR", ); } } @@ -160,7 +170,7 @@ export const useContractStore = create((set, get) => ({ const contract = new ethers.Contract( ContractAddress.address, BattleshipGameJson.abi, - signer + signer, ); try { @@ -194,15 +204,15 @@ export const useContractStore = create((set, get) => ({ const contract = new ethers.Contract( ContractAddress.address, BattleshipGameJson.abi, - signer + signer, ); try { const prizePool = await contract.prizePool(); addNewMessage( `[BattleshipGame Contract] Prize pool at: ${formatUnits( prizePool, - "ether" - )} ETH` + "ether", + )} ETH`, ); set({ prizePool: formatUnits(prizePool, "ether") }); } catch (e) { diff --git a/bs-game-wip/src/stores/messageStore.ts b/bs-game-wip/src/stores/messageStore.ts index 9ecabdee..c9c4e2e3 100644 --- a/bs-game-wip/src/stores/messageStore.ts +++ b/bs-game-wip/src/stores/messageStore.ts @@ -1,12 +1,12 @@ import { create } from "zustand"; export interface IMessageStore { - messages: { id: number; text: string, type: MessageType }[], - errorMessage: string, - addNewMessage: (msg: string, type?: MessageType ) => void + messages: { id: number; text: string; type: MessageType }[]; + errorMessage: string; + addNewMessage: (msg: string, type?: MessageType) => void; } -type MessageType = "INFO"|"ERROR"|"SUCCESS" +type MessageType = "INFO" | "ERROR" | "SUCCESS"; export const useMessageStore = create((set) => ({ messages: [], @@ -19,13 +19,11 @@ export const useMessageStore = create((set) => ({ { id: Date.now(), text: text, - type - } + type, + }, ], - })) - } - - + })); + }, })); // diff --git a/bs-game-wip/src/stores/walletStore.ts b/bs-game-wip/src/stores/walletStore.ts index 0b296e6a..e76b46c6 100644 --- a/bs-game-wip/src/stores/walletStore.ts +++ b/bs-game-wip/src/stores/walletStore.ts @@ -1,24 +1,36 @@ -import {create} from "zustand"; -import { ethers } from 'ethers' -import {useMessageStore} from "@/stores/messageStore"; -import ContractAddress from '@/assets/contract/address.json' +import { ethers } from "ethers"; +import { create } from "zustand"; -export const useWalletStore = create((set) => ({ - provider: null, - signer: null, - address: null, - isConnected: false, - setProvider: async provider => { - const signer = await new ethers.BrowserProvider(provider).getSigner() - const addNewMessage = useMessageStore.getState().addNewMessage - addNewMessage( - `[BattleshipGame Contract] Contract Address: ${ContractAddress.address}` - ) - set({ - provider, - signer, - isConnected: true - }) - }, - setAddress : address => set({address}) -})) \ No newline at end of file +import ContractAddress from "@/assets/contract/address.json"; +import { useMessageStore } from "@/stores/messageStore"; +import {Eip1193Provider} from "ethers/src.ts/providers/provider-browser"; +import type {JsonRpcSigner} from "ethers/lib.commonjs/providers/provider-jsonrpc"; + +export interface IWalletStore { + provider: Eip1193Provider|null + signer: JsonRpcSigner|null + address: string|null + isConnected: boolean + setProvider: (provider: Eip1193Provider) => Promise + setAddress: (address:string) => void +} + +export const useWalletStore = create((set) => ({ + provider: null, + signer: null, + address: null, + isConnected: false, + setProvider: async (provider) => { + const signer = await new ethers.BrowserProvider(provider).getSigner(); + const addNewMessage = useMessageStore.getState().addNewMessage; + addNewMessage( + `[BattleshipGame Contract] Contract Address: ${ContractAddress.address}`, + ); + set({ + provider, + signer, + isConnected: true, + }); + }, + setAddress: (address) => set({ address }), +})); diff --git a/bs-game-wip/src/tailwind.css b/bs-game-wip/src/tailwind.css index d7ce11f3..e017931f 100644 --- a/bs-game-wip/src/tailwind.css +++ b/bs-game-wip/src/tailwind.css @@ -3,7 +3,7 @@ @tailwind utilities; @layer base { - :root { - --color-accent: 255 111 111; - } -} \ No newline at end of file + :root { + --color-accent: 255 111 111; + } +} diff --git a/bs-game-wip/src/utils/createHexagon.ts b/bs-game-wip/src/utils/createHexagon.ts index 89fbf0d1..ae7b9660 100644 --- a/bs-game-wip/src/utils/createHexagon.ts +++ b/bs-game-wip/src/utils/createHexagon.ts @@ -1,19 +1,19 @@ import * as PIXI from "pixi.js"; export default function createHexagon(width, height) { - const hex = new PIXI.Polygon([ - 0, - -height / 2, - width / 2, - -height / 4, - width / 2, - height / 4, - 0, - height / 2, - -width / 2, - height / 4, - -width / 2, - -height / 4, - ]); - return hex; -} \ No newline at end of file + const hex = new PIXI.Polygon([ + 0, + -height / 2, + width / 2, + -height / 4, + width / 2, + height / 4, + 0, + height / 2, + -width / 2, + height / 4, + -width / 2, + -height / 4, + ]); + return hex; +} diff --git a/bs-game-wip/src/utils/getSnappedMousePosition.ts b/bs-game-wip/src/utils/getSnappedMousePosition.ts index 5c31a98a..a4697119 100644 --- a/bs-game-wip/src/utils/getSnappedMousePosition.ts +++ b/bs-game-wip/src/utils/getSnappedMousePosition.ts @@ -1,14 +1,23 @@ -import {HEX_HEIGHT, HEX_WIDTH, VERTICAL_OFFSET, HEX_GRID_MARGIN} from "@/lib/constants"; +import { + HEX_GRID_MARGIN, + HEX_HEIGHT, + HEX_WIDTH, + VERTICAL_OFFSET, +} from "@/lib/constants"; -export default function getSnappedMousePosition (x: number, y: number) { - const snappedY = (Math.round(y / (HEX_HEIGHT - VERTICAL_OFFSET)) * (HEX_HEIGHT - VERTICAL_OFFSET)) + (HEX_GRID_MARGIN/4); - let snappedX = 0 +export default function getSnappedMousePosition(x: number, y: number) { + const snappedY = + Math.round(y / (HEX_HEIGHT - VERTICAL_OFFSET)) * + (HEX_HEIGHT - VERTICAL_OFFSET) + + HEX_GRID_MARGIN / 4; + let snappedX = 0; - if (snappedY % ((HEX_HEIGHT - VERTICAL_OFFSET) * 2) === HEX_GRID_MARGIN) { - snappedX = (Math.round(x / HEX_WIDTH) * HEX_WIDTH); - } else { - snappedX = ((Math.round((x + (HEX_WIDTH / 2)) / HEX_WIDTH) * HEX_WIDTH) - (HEX_WIDTH / 2)) ; - } + if (snappedY % ((HEX_HEIGHT - VERTICAL_OFFSET) * 2) === HEX_GRID_MARGIN) { + snappedX = Math.round(x / HEX_WIDTH) * HEX_WIDTH; + } else { + snappedX = + Math.round((x + HEX_WIDTH / 2) / HEX_WIDTH) * HEX_WIDTH - HEX_WIDTH / 2; + } - return [snappedX, snappedY] -} \ No newline at end of file + return [snappedX, snappedY]; +} diff --git a/bs-game-wip/src/utils/handleMetaMaskError.ts b/bs-game-wip/src/utils/handleMetaMaskError.ts index 24f93d41..472ccd18 100644 --- a/bs-game-wip/src/utils/handleMetaMaskError.ts +++ b/bs-game-wip/src/utils/handleMetaMaskError.ts @@ -1,25 +1,30 @@ -import { serializeError } from '@metamask/rpc-errors' +import { serializeError } from "@metamask/rpc-errors"; export default function handleMetaMaskError(error) { - if (!error) { - return 'Unknown error' - } + if (!error) { + return "Unknown error"; + } - if (!error.code) { - return error.message || error - } + if (!error.code) { + return error.message || error; + } - const serializedError = serializeError(error) - const errorMessage = - serializedError?.data?.cause?.error?.data?.message || serializedError?.data?.message + const serializedError = serializeError(error); + const errorMessage = + serializedError?.data?.cause?.error?.data?.message || + serializedError?.data?.message; - if (errorMessage?.includes('no signed viewing keys')) { - return `Missing viewing key. It looks like you may not have registered through the gateway` - } + if (errorMessage?.includes("no signed viewing keys")) { + return `Missing viewing key. It looks like you may not have registered through the gateway`; + } - if (errorMessage?.includes('invalid viewing key signature for requested address')) { - return `Invalid viewing key. Please ensure the connected account is also authenticated via the gateway here` - } + if ( + errorMessage?.includes( + "invalid viewing key signature for requested address", + ) + ) { + return `Invalid viewing key. Please ensure the connected account is also authenticated via the gateway here`; + } - return errorMessage -} \ No newline at end of file + return errorMessage; +} diff --git a/bs-game-wip/tsconfig.json b/bs-game-wip/tsconfig.json index 86f5cf82..346083b9 100644 --- a/bs-game-wip/tsconfig.json +++ b/bs-game-wip/tsconfig.json @@ -1,18 +1,25 @@ { "compilerOptions": { - "baseUrl": ".", + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "noUnusedLocals": true, + "jsx": "react-jsx", "paths": { - "@/*": ["src/*"] - // add more paths as needed + "@/*": ["./src/*"] } }, - "files": [], - "references": [ - { - "path": "./tsconfig.app.json" - }, - { - "path": "./tsconfig.node.json" - } - ] + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/bs-game-wip/vite.config.ts b/bs-game-wip/vite.config.ts index 03e26248..a5418935 100644 --- a/bs-game-wip/vite.config.ts +++ b/bs-game-wip/vite.config.ts @@ -7,7 +7,7 @@ export default defineConfig({ plugins: [react()], resolve: { alias: { - '@': path.resolve(__dirname, 'src/'), + '@': path.resolve(__dirname, './src'), // add more aliases as needed }, }, From 406564ee24fb7545e8973fff590cd17a5c7baef8 Mon Sep 17 00:00:00 2001 From: PeterB Date: Fri, 12 Jul 2024 17:11:44 +0100 Subject: [PATCH 04/22] WIP: Updates contract to emit game state when the user makes a guess. Updates the UI to support this new pattern. --- bs-game-wip/README.md | 3 +- bs-game-wip/contracts/BattleshipGame.sol | 78 ++-- bs-game-wip/src/App.css | 56 +-- bs-game-wip/src/App.tsx | 164 ++++---- bs-game-wip/src/api/contract/contract.api.ts | 6 +- bs-game-wip/src/api/contract/contract.keys.ts | 2 +- .../src/api/contract/contract.queries.ts | 6 +- bs-game-wip/src/assets/contract/address.json | 2 +- .../components/AnimatedText/AnimatedText.tsx | 82 ++-- .../AnimatedText/styles.module.scss | 40 +- .../src/components/BattleGrid/BattleGrid.tsx | 118 +++--- .../BattleGrid/BattleGridCanvas.tsx | 86 ++-- .../components/BattleGrid/BattleGridCell.tsx | 54 +-- .../BattleGrid/BattleGridContainer.tsx | 110 +++--- .../BattleGridCurrentCoordinates.tsx | 14 +- .../BattleGrid/BattleGridCursor.tsx | 108 +++-- .../components/BattleGrid/BattleGridHits.tsx | 54 +-- .../BattleGrid/BattleGridMisses.tsx | 74 ++-- .../CellsRemaining/CellsRemaining.tsx | 53 ++- .../src/components/Graveyard/Graveyard.tsx | 96 ++--- .../src/components/HudWindow/HudWindow.tsx | 179 ++++----- .../components/HudWindow/styles.module.scss | 316 +++++++-------- .../src/components/MessageLog/MessageLog.tsx | 94 ++--- .../components/MessageLog/styles.module.scss | 46 +-- .../src/components/MetaMask/MetaMask.tsx | 74 ++-- .../src/components/PrizePool/PrizePool.tsx | 52 +-- .../ProcessingNotification.tsx | 210 +++++----- .../ProcessingNotification/styles.module.scss | 8 +- bs-game-wip/src/contexts/EventContext.tsx | 18 +- bs-game-wip/src/helpers/formatAddress.ts | 8 +- bs-game-wip/src/helpers/getCellXY.ts | 21 +- bs-game-wip/src/helpers/isInViewport.ts | 14 +- bs-game-wip/src/index.css | 62 +-- bs-game-wip/src/lib/constants.ts | 6 +- bs-game-wip/src/lib/trackEvent.ts | 8 +- bs-game-wip/src/main.tsx | 18 +- bs-game-wip/src/services/web3service.js | 123 ------ bs-game-wip/src/stores/contractStore.ts | 372 ++++++++---------- bs-game-wip/src/stores/messageStore.ts | 38 +- bs-game-wip/src/stores/walletStore.ts | 56 ++- bs-game-wip/src/tailwind.css | 6 +- bs-game-wip/src/utils/createHexagon.ts | 32 +- .../src/utils/getSnappedMousePosition.ts | 29 +- bs-game-wip/src/utils/handleMetaMaskError.ts | 39 +- bs-game-wip/todos.md | 7 +- 45 files changed, 1382 insertions(+), 1660 deletions(-) delete mode 100644 bs-game-wip/src/services/web3service.js diff --git a/bs-game-wip/README.md b/bs-game-wip/README.md index 4c621735..72938fa1 100644 --- a/bs-game-wip/README.md +++ b/bs-game-wip/README.md @@ -30,4 +30,5 @@ export default { - Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list - curl --location --request POST 'http://sepolia-testnet-faucet.uksouth.azurecontainer.io/fund/eth' --header 'Content-Type: application/json' --data-raw '{ "address":"0xc1AD6A6f2d190aFF8aE8a503887C6EAf1072149a" }' \ No newline at end of file + curl --location --request POST 'http://sepolia-testnet-faucet.uksouth.azurecontainer.io/fund/eth' --header 'Content-Type: application/json' --data-raw '{ "address":"0xc1AD6A6f2d190aFF8aE8a503887C6EAf1072149a" }' + { "address": "0x96dD05c4b0e517A64b4627b33673b7051f5b52f1" } diff --git a/bs-game-wip/contracts/BattleshipGame.sol b/bs-game-wip/contracts/BattleshipGame.sol index 3d22bd6c..364c3b2a 100644 --- a/bs-game-wip/contracts/BattleshipGame.sol +++ b/bs-game-wip/contracts/BattleshipGame.sol @@ -20,8 +20,10 @@ contract BattleshipGame { Ship[totalShips] private ships; mapping(uint16 => uint8) private positionToShipIndex; - mapping(uint16 => bool) public hits; - mapping(uint16 => bool) public misses; + mapping(uint16 => bool) private hits; + mapping(uint16 => bool) private misses; + Position[] private allHits; + Position[] private allMisses; uint256 private seed; uint256 private nonce = 0; uint256 public prizePool; @@ -47,6 +49,13 @@ contract BattleshipGame { _; } + /// @notice Emitted when a guess is made. + /// @param user The address of the user making the guess. + /// @param guessedCoords The coordinates submitted by the user. + /// @param success True if the guess hit a ship, false otherwise. + //TODO: Add comments + event HitFeedback(address indexed user, uint8[2] guessedCoords, bool success, Position[] allHits, Position[] allMisses, bool[totalShips] graveyard, uint256 prizePool); + /// @notice Adds a new admin address. Only the owner can add new admins. /// @param newAdmin The address of the new admin. function addAdmin(address newAdmin) public onlyOwner { @@ -135,15 +144,16 @@ contract BattleshipGame { require(!misses[positionKey], "Cell already hit"); prizePool += msg.value; - + bool success; uint8 shipIndex = positionToShipIndex[positionKey]; if (shipIndex != 0) { + success = true; Ship storage ship = ships[shipIndex]; uint8 hitIndex = x - ship.start.x; ship.hits[hitIndex] = true; hits[positionKey] = true; - + allHits.push(Position(x, y)); bool allHit = true; for (uint8 i = 0; i < shipLength; i++) { if (!ship.hits[i]) { @@ -160,10 +170,14 @@ contract BattleshipGame { } } else { + success = false; misses[positionKey] = true; + allMisses.push(Position(x, y)); } - } - + + emit HitFeedback(msg.sender, [x, y], success, allHits, allMisses, graveyard, prizePool); + } + /// @notice Checks if a specific position on the grid is hit. /// @param x The x-coordinate of the position. @@ -192,60 +206,20 @@ contract BattleshipGame { /// @notice Gets the status of all ships in the graveyard. /// @return Array indicating which ships are sunk. - function getGraveyard() public view returns (bool[totalShips] memory) { + function getGraveyard() public view onlyAdmin returns (bool[totalShips] memory) { return graveyard; } /// @notice Gets all hit positions so far. /// @return Array of positions that have been hit. - function getAllHits() public view returns (Position[] memory) { - uint256 hitCount = 0; - for (uint8 x = 0; x < gridSize; x++) { - for (uint8 y = 0; y < gridSize; y++) { - if (hits[packCoordinates(x, y)]) { - hitCount++; - } - } - } - - Position[] memory hitPositions = new Position[](hitCount); - uint256 index = 0; - for (uint8 x = 0; x < gridSize; x++) { - for (uint8 y = 0; y < gridSize; y++) { - if (hits[packCoordinates(x, y)]) { - hitPositions[index] = Position(x, y); - index++; - } - } - } - - return hitPositions; + function getAllHits() public view onlyAdmin returns (Position[] memory) { + return allHits; } - + /// @notice Gets all miss positions so far. /// @return Array of positions that have been missed. - function getAllMisses() public view returns (Position[] memory) { - uint256 missCount = 0; - for (uint8 x = 0; x < gridSize; x++) { - for (uint8 y = 0; y < gridSize; y++) { - if (misses[packCoordinates(x, y)]) { - missCount++; - } - } - } - - Position[] memory missPositions = new Position[](missCount); - uint256 index = 0; - for (uint8 x = 0; x < gridSize; x++) { - for (uint8 y = 0; y < gridSize; y++) { - if (misses[packCoordinates(x, y)]) { - missPositions[index] = Position(x, y); - index++; - } - } - } - - return missPositions; + function getAllMisses() public view onlyAdmin returns (Position[] memory) { + return allMisses; } } \ No newline at end of file diff --git a/bs-game-wip/src/App.css b/bs-game-wip/src/App.css index ef4e15b6..0f16897c 100644 --- a/bs-game-wip/src/App.css +++ b/bs-game-wip/src/App.css @@ -1,60 +1,60 @@ #root { - max-width: 1480px; - margin: 0 auto; - padding: 2rem; - text-align: left; - text-transform: uppercase; + max-width: 1480px; + margin: 0 auto; + padding: 2rem; + text-align: left; + text-transform: uppercase; } button { - border-radius: 0; - border: 1px solid black; - background: black; - text-transform: uppercase; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - cursor: pointer; - transition: border-color 0.25s; + border-radius: 0; + border: 1px solid black; + background: black; + text-transform: uppercase; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + cursor: pointer; + transition: border-color 0.25s; } button:hover { - border-color: #ffffff; + border-color: #ffffff; } button:focus, button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; + outline: 4px auto -webkit-focus-ring-color; } /* width */ ::-webkit-scrollbar { - width: 5px; - height: 5px; + width: 5px; + height: 5px; } /* Track */ ::-webkit-scrollbar-track { - background: #373737; + background: #373737; } /* Handle */ ::-webkit-scrollbar-thumb { - background: #cacaca; + background: #cacaca; } /* Handle on hover */ ::-webkit-scrollbar-thumb:hover { - background: #fff; + background: #fff; } .space-mono-regular { - font-family: "Space Mono", monospace; - font-weight: 400; - font-style: normal; + font-family: 'Space Mono', monospace; + font-weight: 400; + font-style: normal; } .space-mono-bold { - font-family: "Space Mono", monospace; - font-weight: 700; - font-style: normal; + font-family: 'Space Mono', monospace; + font-weight: 700; + font-style: normal; } diff --git a/bs-game-wip/src/App.tsx b/bs-game-wip/src/App.tsx index 2898ac69..c1c022c6 100644 --- a/bs-game-wip/src/App.tsx +++ b/bs-game-wip/src/App.tsx @@ -1,97 +1,97 @@ -import { useEffect, useState } from "react"; +import { useEffect, useState } from 'react'; -import detectEthereumProvider from "@metamask/detect-provider"; +import detectEthereumProvider from '@metamask/detect-provider'; -import logo from "@/assets/white_logotype.png"; -import MessageLog from "@/components/MessageLog/MessageLog"; -import MetaMask from "@/components/MetaMask/MetaMask"; +import logo from '@/assets/white_logotype.png'; +import MessageLog from '@/components/MessageLog/MessageLog'; +import MetaMask from '@/components/MetaMask/MetaMask'; -import "./App.css"; -import BattleGrid from "./components/BattleGrid/BattleGrid"; -import CellsRemaining from "./components/CellsRemaining/CellsRemaining"; -import Graveyard from "./components/Graveyard/Graveyard"; -import PrizePool from "./components/PrizePool/PrizePool"; -import ProcessingNotification from "./components/ProcessingNotification/ProcessingNotification"; -import { trackEvent } from "./lib/trackEvent"; -import { useMessageStore } from "./stores/messageStore"; -import { useWalletStore } from "./stores/walletStore"; +import './App.css'; +import BattleGrid from './components/BattleGrid/BattleGrid'; +import CellsRemaining from './components/CellsRemaining/CellsRemaining'; +import Graveyard from './components/Graveyard/Graveyard'; +import PrizePool from './components/PrizePool/PrizePool'; +import ProcessingNotification from './components/ProcessingNotification/ProcessingNotification'; +import { trackEvent } from './lib/trackEvent'; +import { useMessageStore } from './stores/messageStore'; +import { useWalletStore } from './stores/walletStore'; function App() { - const [setProvider, address, setAddress] = useWalletStore((state) => [ - state.setProvider, - state.address, - state.setAddress, - ]); - const addNewMessage = useMessageStore((state) => state.addNewMessage); - const [initialized, setInitialized] = useState(false); + const [setProvider, address, setAddress] = useWalletStore((state) => [ + state.setProvider, + state.address, + state.setAddress, + ]); + const addNewMessage = useMessageStore((state) => state.addNewMessage); + const [initialized, setInitialized] = useState(false); - useEffect(() => { - connectToMetaMask(); - }, [address]); + useEffect(() => { + connectToMetaMask(); + }, [address]); - const connectToMetaMask = async () => { - try { - const provider = await detectEthereumProvider(); - //TODO: If we want to only support metamask there is a 'isMetaMask' property on the provider object - if (provider) { - setProvider(provider); - const chainId = await provider.request({ method: "eth_chainId" }); - if (chainId !== "0x1bb") { - addNewMessage( - 'Not connected to Ten ! Connect at https://testnet.ten.xyz/ ', - ); - return; - } + const connectToMetaMask = async () => { + try { + const provider = await detectEthereumProvider(); + //TODO: If we want to only support metamask there is a 'isMetaMask' property on the provider object + if (provider) { + setProvider(provider); + const chainId = await provider.request({ method: 'eth_chainId' }); + if (chainId !== '0x1bb') { + addNewMessage( + 'Not connected to Ten ! Connect at https://testnet.ten.xyz/ ' + ); + return; + } - const accounts = await provider.request({ - method: "eth_requestAccounts", - }); + const accounts = await provider.request({ + method: 'eth_requestAccounts', + }); - setAddress(accounts[0]); - addNewMessage("Connected to wallet ! Account: " + accounts[0]); - setInitialized(true); + setAddress(accounts[0]); + addNewMessage('Connected to wallet ! Account: ' + accounts[0]); + setInitialized(true); - trackEvent("connect_wallet", { - value: accounts[0], - }); - } else { - addNewMessage("Please install MetaMask!", "ERROR"); - setInitialized(true); - } - } catch (err) { - console.error("Error:", err.message); - setInitialized(true); - } - }; + trackEvent('connect_wallet', { + value: accounts[0], + }); + } else { + addNewMessage('Please install MetaMask!', 'ERROR'); + setInitialized(true); + } + } catch (err) { + console.error('Error:', err.message); + setInitialized(true); + } + }; - if (!initialized) { - return null; - } + if (!initialized) { + return null; + } - return ( - <> -
- test -
-
-
- -
-
- -
-
- - - -
-
- -
-
- - - ); + return ( + <> +
+ test +
+
+
+ +
+
+ +
+
+ + + +
+
+ +
+
+ + + ); } export default App; diff --git a/bs-game-wip/src/api/contract/contract.api.ts b/bs-game-wip/src/api/contract/contract.api.ts index c9489a95..9edd0ae5 100644 --- a/bs-game-wip/src/api/contract/contract.api.ts +++ b/bs-game-wip/src/api/contract/contract.api.ts @@ -1,5 +1,5 @@ export const dummyCall = new Promise((resolve) => { - setTimeout(() => { - resolve({ msg: "DONE" }); - }, 5000); + setTimeout(() => { + resolve({ msg: 'DONE' }); + }, 5000); }); diff --git a/bs-game-wip/src/api/contract/contract.keys.ts b/bs-game-wip/src/api/contract/contract.keys.ts index 345b897a..0b042fa6 100644 --- a/bs-game-wip/src/api/contract/contract.keys.ts +++ b/bs-game-wip/src/api/contract/contract.keys.ts @@ -1,3 +1,3 @@ export default { - test: "test", + test: 'test', }; diff --git a/bs-game-wip/src/api/contract/contract.queries.ts b/bs-game-wip/src/api/contract/contract.queries.ts index d0dca279..83731327 100644 --- a/bs-game-wip/src/api/contract/contract.queries.ts +++ b/bs-game-wip/src/api/contract/contract.queries.ts @@ -1,5 +1,5 @@ -import { useQuery } from "@tanstack/react-query"; +import { useQuery } from '@tanstack/react-query'; -import { dummyCall } from "./contract.api"; +import { dummyCall } from './contract.api'; -export const query = useQuery({ queryKey: ["test"], queryFn: dummyCall }); +export const query = useQuery({ queryKey: ['test'], queryFn: dummyCall }); diff --git a/bs-game-wip/src/assets/contract/address.json b/bs-game-wip/src/assets/contract/address.json index 40baba3e..9eb612d9 100644 --- a/bs-game-wip/src/assets/contract/address.json +++ b/bs-game-wip/src/assets/contract/address.json @@ -1 +1 @@ -{ "address": "0x96dD05c4b0e517A64b4627b33673b7051f5b52f1" } +{ "address": "0x59fe79A559a952b23E407bA5ADd4f5f4c425D556" } diff --git a/bs-game-wip/src/components/AnimatedText/AnimatedText.tsx b/bs-game-wip/src/components/AnimatedText/AnimatedText.tsx index c872c5f7..ba5d9a51 100644 --- a/bs-game-wip/src/components/AnimatedText/AnimatedText.tsx +++ b/bs-game-wip/src/components/AnimatedText/AnimatedText.tsx @@ -1,50 +1,50 @@ -import { useEffect, useState } from "react"; +import { useEffect, useState } from 'react'; -import { animate, motion, useMotionValue, useTransform } from "framer-motion"; +import { animate, motion, useMotionValue, useTransform } from 'framer-motion'; -import styles from "./styles.module.scss"; +import styles from './styles.module.scss'; type Props = { - text: string; - delay?: number; - speed?: number; - classes?: string; - onComplete?: () => void; + text: string; + delay?: number; + speed?: number; + classes?: string; + onComplete?: () => void; }; export default function AnimatedText({ - text, - delay = 0, - speed = 0.05, - classes, - onComplete, + text, + delay = 0, + speed = 0.05, + classes, + onComplete, }: Props) { - const [done, setDone] = useState(false); - const count = useMotionValue(0); - const rounded = useTransform(count, (latest) => Math.round(latest)); - - const displayText = useTransform(rounded, (latest) => text.slice(0, latest)); - - const handleLineCompletion = () => { - setDone(true); - onComplete && onComplete(); - }; - - useEffect(() => { - const controls = animate(count, text.length, { - type: "tween", - duration: text.length * speed, - ease: "easeInOut", - delay, - onComplete: () => handleLineCompletion(), - }); - return controls.stop; - }, []); - - return ( - <> - {displayText} - {!done && } - - ); + const [done, setDone] = useState(false); + const count = useMotionValue(0); + const rounded = useTransform(count, (latest) => Math.round(latest)); + + const displayText = useTransform(rounded, (latest) => text.slice(0, latest)); + + const handleLineCompletion = () => { + setDone(true); + onComplete && onComplete(); + }; + + useEffect(() => { + const controls = animate(count, text.length, { + type: 'tween', + duration: text.length * speed, + ease: 'easeInOut', + delay, + onComplete: () => handleLineCompletion(), + }); + return controls.stop; + }, []); + + return ( + <> + {displayText} + {!done && } + + ); } diff --git a/bs-game-wip/src/components/AnimatedText/styles.module.scss b/bs-game-wip/src/components/AnimatedText/styles.module.scss index 9dbd1779..85b461f8 100644 --- a/bs-game-wip/src/components/AnimatedText/styles.module.scss +++ b/bs-game-wip/src/components/AnimatedText/styles.module.scss @@ -1,26 +1,26 @@ .cursor { - display: inline-block; - width: 0.6em; - background: currentColor; - height: 1em; + display: inline-block; + width: 0.6em; + background: currentColor; + height: 1em; - &.withFlash { - opacity: 0; - animation: CursorFlash 1s linear infinite; - } + &.withFlash { + opacity: 0; + animation: CursorFlash 1s linear infinite; + } } @keyframes CursorFlash { - 0% { - opacity: 0; - } - 25% { - opacity: 1; - } - 75% { - opacity: 1; - } - 75% { - opacity: 0; - } + 0% { + opacity: 0; + } + 25% { + opacity: 1; + } + 75% { + opacity: 1; + } + 75% { + opacity: 0; + } } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGrid.tsx b/bs-game-wip/src/components/BattleGrid/BattleGrid.tsx index 8d04b01f..113d8a8b 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGrid.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGrid.tsx @@ -1,71 +1,67 @@ -import { useEffect, useState } from "react"; +import { useEffect, useState } from 'react'; -import { motion } from "framer-motion"; +import { motion } from 'framer-motion'; -import AnimatedText from "@/components/AnimatedText/AnimatedText"; -import HudWindow from "@/components/HudWindow/HudWindow"; -import { useWalletStore } from "@/stores/walletStore"; +import AnimatedText from '@/components/AnimatedText/AnimatedText'; +import HudWindow from '@/components/HudWindow/HudWindow'; +import { useWalletStore } from '@/stores/walletStore'; -import BattleGridContainer from "./BattleGridContainer"; -import BattleGridCurrentCoordinates from "./BattleGridCurrentCoordinates"; +import BattleGridContainer from './BattleGridContainer'; +import BattleGridCurrentCoordinates from './BattleGridCurrentCoordinates'; export default function BattleGrid() { - const isConnected = useWalletStore((state) => state.isConnected); - const [displayGrid, setDisplayGrid] = useState(false); + const isConnected = useWalletStore((state) => state.isConnected); + const [displayGrid, setDisplayGrid] = useState(false); - useEffect(() => { - if (isConnected) { - setTimeout(() => { - setDisplayGrid(true); - }, 3000); - } - }, [isConnected]); + useEffect(() => { + if (isConnected) { + setTimeout(() => { + setDisplayGrid(true); + }, 3000); + } + }, [isConnected]); - const animation = { - initial: { opacity: 0 }, - animate: { opacity: 1 }, - exit: { opacity: 0 }, - transition: { delay: 0, duration: 1 }, - }; + const animation = { + initial: { opacity: 0 }, + animate: { opacity: 1 }, + exit: { opacity: 0 }, + transition: { delay: 0, duration: 1 }, + }; - const Disconnected = ( -
-
-

SYSTEM OFFLINE.

-

- -

-

- -

-
-
- ); + const Disconnected = ( +
+
+

SYSTEM OFFLINE.

+

+ +

+

+ +

+
+
+ ); - return ( - -
- {displayGrid ? ( - - - - - ) : ( -

Loading Grid.

- )} -
-
- ); + return ( + +
+ {displayGrid ? ( + + + + + ) : ( +

Loading Grid.

+ )} +
+
+ ); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx index cb37f9ae..d79494cb 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx @@ -1,51 +1,51 @@ -import { useMemo } from "react"; +import { useMemo } from 'react'; -import { BloomFilter } from "@pixi/filter-bloom"; -import { Container, Stage } from "@pixi/react"; +import { BloomFilter } from '@pixi/filter-bloom'; +import { Container, Stage } from '@pixi/react'; -import { HEX_HEIGHT, HEX_WIDTH, HEX_GRID_MARGIN } from "@/lib/constants"; +import { HEX_GRID_MARGIN, HEX_HEIGHT, HEX_WIDTH } from '@/lib/constants'; -import BattleGridCell from "./BattleGridCell"; -import BattleGridCursor from "./BattleGridCursor"; -import BattleGridHits from "./BattleGridHits"; -import BattleGridMisses from "./BattleGridMisses"; +import BattleGridCell from './BattleGridCell'; +import BattleGridCursor from './BattleGridCursor'; +import BattleGridHits from './BattleGridHits'; +import BattleGridMisses from './BattleGridMisses'; export default function BattleGridCanvas({ grid, width, height }) { - const bloomFilter = new BloomFilter(3, 3, 2); + const bloomFilter = new BloomFilter(3, 3, 2); - const gridCells = useMemo( - () => - grid.map(({ row, col, x, y }) => ( - - )), - [grid], - ); + const gridCells = useMemo( + () => + grid.map(({ row, col, x, y }) => ( + + )), + [grid] + ); - return ( - - - {gridCells} - - - - - - - - ); + return ( + + + {gridCells} + + + + + + + + ); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx index 5cf3bdec..0ae385a3 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx @@ -1,33 +1,33 @@ -import { Graphics } from "@pixi/react"; +import { Graphics } from '@pixi/react'; -import { hexHitArea } from "@/lib/constants"; +import { hexHitArea } from '@/lib/constants'; export default function BattleGridCell({ col, row, x, y, state }) { - return ( - <> - { - g.position.set(x, y); - g.clear(); + return ( + <> + { + g.position.set(x, y); + g.clear(); - if (state === "UNTOUCHED") { - g.beginFill(0xd9d9d9, 0); - g.lineStyle(1, 0x464646, 1); - } - if (state === "MISSED") { - g.beginFill(0x5a5a5a, 1); - g.lineStyle(1, 0x4f4f4f, 1); - } - if (state === "HIT") { - g.beginFill(0xe16f6f, 1); - g.lineStyle(1, 0xe16f6f, 1); - } + if (state === 'UNTOUCHED') { + g.beginFill(0xd9d9d9, 0); + g.lineStyle(1, 0x464646, 1); + } + if (state === 'MISSED') { + g.beginFill(0x5a5a5a, 1); + g.lineStyle(1, 0x4f4f4f, 1); + } + if (state === 'HIT') { + g.beginFill(0xe16f6f, 1); + g.lineStyle(1, 0xe16f6f, 1); + } - g.drawPolygon(hexHitArea); - g.endFill(); - }} - /> - - ); + g.drawPolygon(hexHitArea); + g.endFill(); + }} + /> + + ); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx index 4ca5c291..af6b6bc8 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx @@ -1,72 +1,70 @@ -import React, { useEffect, useRef } from "react"; +import React, { useEffect, useRef } from 'react'; -import { COLS, CONTAINER_HEIGHT, ROWS } from "@/lib/constants"; -import { useBattleGridStore } from "@/stores/battleGridStore"; +import { COLS, CONTAINER_HEIGHT, ROWS } from '@/lib/constants'; +import { useBattleGridStore } from '@/stores/battleGridStore'; -import BattleGridCanvas from "./BattleGridCanvas"; +import BattleGridCanvas from './BattleGridCanvas'; const styles = { - container: { - width: "100%", - height: CONTAINER_HEIGHT + "px", - overflow: "auto", - }, + container: { + width: '100%', + height: CONTAINER_HEIGHT + 'px', + overflow: 'auto', + }, }; export default function BattleGridContainer() { - const setMousePosition = useBattleGridStore( - (state) => state.setMousePosition, - ); - const initGrid = useBattleGridStore((state) => state.initGrid); - const grid = useBattleGridStore((state) => state.grid); - const selectCell = useBattleGridStore((state) => state.selectCell); + const setMousePosition = useBattleGridStore((state) => state.setMousePosition); + const initGrid = useBattleGridStore((state) => state.initGrid); + const grid = useBattleGridStore((state) => state.grid); + const selectCell = useBattleGridStore((state) => state.selectCell); - // const {handleCellSelection} = useCellSelection() + // const {handleCellSelection} = useCellSelection() - useEffect(() => { - initGrid(COLS, ROWS); - }, []); + useEffect(() => { + initGrid(COLS, ROWS); + }, []); - const lastScrollPosition = useRef({ top: 0, left: 0 }); - const elementRef = useRef(null); + const lastScrollPosition = useRef({ top: 0, left: 0 }); + const elementRef = useRef(null); - const handleScroll = () => { - // if (elementRef.current) { - // const newScrollLeft = elementRef.current.scrollLeft; - // const newScrollTop = elementRef.current.scrollTop; - // if ( - // Math.abs(newScrollTop - lastScrollPosition.current.top) > threshold || - // Math.abs(newScrollLeft - lastScrollPosition.current.left) > threshold - // ) { - // setScrollPosition(newScrollLeft, newScrollTop); - // lastScrollPosition.current = { top: newScrollTop, left: newScrollLeft }; - // } - // } - }; + const handleScroll = () => { + // if (elementRef.current) { + // const newScrollLeft = elementRef.current.scrollLeft; + // const newScrollTop = elementRef.current.scrollTop; + // if ( + // Math.abs(newScrollTop - lastScrollPosition.current.top) > threshold || + // Math.abs(newScrollLeft - lastScrollPosition.current.left) > threshold + // ) { + // setScrollPosition(newScrollLeft, newScrollTop); + // lastScrollPosition.current = { top: newScrollTop, left: newScrollLeft }; + // } + // } + }; - const handleMouseMove = (event) => { - const rect = elementRef.current.getBoundingClientRect(); - const scrollLeft = elementRef.current.scrollLeft; - const scrollTop = elementRef.current.scrollTop; + const handleMouseMove = (event) => { + const rect = elementRef.current.getBoundingClientRect(); + const scrollLeft = elementRef.current.scrollLeft; + const scrollTop = elementRef.current.scrollTop; - const x = event.clientX - rect.left + scrollLeft; - const y = event.clientY - rect.top + scrollTop; - setMousePosition(x, y); - }; + const x = event.clientX - rect.left + scrollLeft; + const y = event.clientY - rect.top + scrollTop; + setMousePosition(x, y); + }; - const handleMouseClick = () => { - selectCell(); - }; + const handleMouseClick = () => { + selectCell(); + }; - return ( -
- -
- ); + return ( +
+ +
+ ); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx index a7f96c5d..ae4ac677 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx @@ -1,11 +1,11 @@ -import { useBattleGridStore } from "@/stores/battleGridStore"; +import { useBattleGridStore } from '@/stores/battleGridStore'; export default function BattleGridCurrentCoordinates() { - const currentHoveredCell = useBattleGridStore((state) => state.hoveredCell); + const currentHoveredCell = useBattleGridStore((state) => state.hoveredCell); - return ( -
- X:{currentHoveredCell?.col}, Y: {currentHoveredCell?.row} -
- ); + return ( +
+ X:{currentHoveredCell?.col}, Y: {currentHoveredCell?.row} +
+ ); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx index 65abc425..bba28714 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx @@ -1,64 +1,58 @@ -import React, { useRef } from "react"; +import React, { useRef } from 'react'; -import { Graphics, useTick } from "@pixi/react"; +import { Graphics, useTick } from '@pixi/react'; -import { - HEX_HEIGHT, - HEX_WIDTH, - VERTICAL_OFFSET, - hexHitArea, -} from "@/lib/constants"; -import { useBattleGridStore } from "@/stores/battleGridStore"; -import { useContractStore } from "@/stores/contractStore"; +import { HEX_HEIGHT, HEX_WIDTH, VERTICAL_OFFSET, hexHitArea } from '@/lib/constants'; +import { useBattleGridStore } from '@/stores/battleGridStore'; +import { useContractStore } from '@/stores/contractStore'; export default function BattleGridCursor() { - const [[x, y], hoveredCell] = useBattleGridStore((state) => [ - state.mousePosition, - state.hoveredCell, - ]); - const guessState = useContractStore((state) => state.guessState); - const isLoadingState = guessState !== "IDLE"; - const shapeRef = useRef(null); - const scaleRef = useRef(1); - const directionRef = useRef(1); - const timeRef = useRef(0); - - useTick((delta) => { - if (shapeRef.current) { - timeRef.current += delta; - const scaleSpeed = 0.1; - const rotationSpeed = 1; - const maxScale = 1; - const minScale = isLoadingState ? 0.7 : 0.9; - const scaleRange = (maxScale - minScale) / 2; - const midScale = (maxScale + minScale) / 2; - const newScale = - midScale + Math.sin(timeRef.current * scaleSpeed) * scaleRange; - - shapeRef.current.scale.set(newScale); - - if (isLoadingState) { - shapeRef.current.rotation += timeRef.current * rotationSpeed; - } else { - shapeRef.current.rotation = 0; - } + const [[x, y], hoveredCell] = useBattleGridStore((state) => [ + state.mousePosition, + state.hoveredCell, + ]); + const guessState = useContractStore((state) => state.guessState); + const isLoadingState = guessState !== 'IDLE'; + const shapeRef = useRef(null); + const scaleRef = useRef(1); + const directionRef = useRef(1); + const timeRef = useRef(0); + + useTick((delta) => { + if (shapeRef.current) { + timeRef.current += delta; + const scaleSpeed = 0.1; + const rotationSpeed = 1; + const maxScale = 1; + const minScale = isLoadingState ? 0.7 : 0.9; + const scaleRange = (maxScale - minScale) / 2; + const midScale = (maxScale + minScale) / 2; + const newScale = midScale + Math.sin(timeRef.current * scaleSpeed) * scaleRange; + + shapeRef.current.scale.set(newScale); + + if (isLoadingState) { + shapeRef.current.rotation += timeRef.current * rotationSpeed; + } else { + shapeRef.current.rotation = 0; + } + } + }); + + if (!hoveredCell) { + return null; } - }); - - if (!hoveredCell) { - return null; - } - return ( - { - g.position.set(x, y); - g.clear(); - g.lineStyle(1, 0xffffff, 1); - g.drawPolygon(hexHitArea); - g.endFill(); - }} - /> - ); + return ( + { + g.position.set(x, y); + g.clear(); + g.lineStyle(1, 0xffffff, 1); + g.drawPolygon(hexHitArea); + g.endFill(); + }} + /> + ); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx index 4996f4e5..517ae267 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx @@ -1,46 +1,20 @@ -import React, { useEffect, useMemo, useRef } from "react"; +import React, { useMemo } from 'react'; -import { GlowFilter } from "@pixi/filter-glow"; -import { Container, useTick } from "@pixi/react"; +import { Container } from '@pixi/react'; -import { QUERY_INTERVAL_MS } from "@/lib/constants"; -import { useBattleGridStore } from "@/stores/battleGridStore"; -import { useContractStore } from "@/stores/contractStore"; -import { useWalletStore } from "@/stores/walletStore"; +import { useBattleGridStore } from '@/stores/battleGridStore'; -import BattleGridCell from "./BattleGridCell"; +import BattleGridCell from './BattleGridCell'; export default function BattleGridHits() { - const hitCells = useBattleGridStore((state) => state.hitCells); - const isConnected = useWalletStore((state) => state.isConnected); - const getAllHits = useContractStore((state) => state.getAllHits); - const revealedGridCells = useMemo( - () => - hitCells.map(({ row, col, x, y }) => ( - - )), - [hitCells], - ); - - useEffect(() => { - let interval; - - if (isConnected) { - getAllHits(); - interval = setInterval(() => { - getAllHits(); - }, QUERY_INTERVAL_MS); - } - - return () => clearInterval(interval); - }, [isConnected]); - - return {revealedGridCells}; + const hitCells = useBattleGridStore((state) => state.hitCells); + const revealedGridCells = useMemo( + () => + hitCells.map(({ row, col, x, y }) => ( + + )), + [hitCells] + ); + + return {revealedGridCells}; } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx index 72a25404..0ed0b56c 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx @@ -1,45 +1,41 @@ -import React, { useEffect, useMemo } from "react"; +import React, { useMemo } from 'react'; -import { Container } from "@pixi/react"; +import { Container } from '@pixi/react'; -import { QUERY_INTERVAL_MS } from "@/lib/constants"; -import { useBattleGridStore } from "@/stores/battleGridStore"; -import { useContractStore } from "@/stores/contractStore"; -import { useWalletStore } from "@/stores/walletStore"; +import { useBattleGridStore } from '@/stores/battleGridStore'; -import BattleGridCell from "./BattleGridCell"; +import BattleGridCell from './BattleGridCell'; export default function BattleGridMisses() { - const missedCells = useBattleGridStore((state) => state.missedCells); - const isConnected = useWalletStore((state) => state.isConnected); - const getAllMisses = useContractStore((state) => state.getAllMisses); - const revealedGridCells = useMemo( - () => - missedCells.map(({ row, col, x, y }) => ( - - )), - [missedCells], - ); - - useEffect(() => { - let interval; - - if (isConnected) { - getAllMisses(); - interval = setInterval(() => { - getAllMisses(); - }, QUERY_INTERVAL_MS); - } - - return () => clearInterval(interval); - }, [isConnected]); - - return {revealedGridCells}; + const missedCells = useBattleGridStore((state) => state.missedCells); + + const revealedGridCells = useMemo( + () => + missedCells.map(({ row, col, x, y }) => ( + + )), + [missedCells] + ); + + // useEffect(() => { + // let interval; + // + // if (isConnected) { + // getAllMisses(); + // interval = setInterval(() => { + // getAllMisses(); + // }, QUERY_INTERVAL_MS); + // } + // + // return () => clearInterval(interval); + // }, [isConnected]); + + return {revealedGridCells}; } diff --git a/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx index 51c6418d..45405658 100644 --- a/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx +++ b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx @@ -1,34 +1,31 @@ -import HudWindow from "@/components/HudWindow/HudWindow"; -import { COLS, ROWS } from "@/lib/constants"; -import { useContractStore } from "@/stores/contractStore"; -import { useWalletStore } from "@/stores/walletStore"; +import HudWindow from '@/components/HudWindow/HudWindow'; +import { COLS, ROWS } from '@/lib/constants'; +import { useContractStore } from '@/stores/contractStore'; +import { useWalletStore } from '@/stores/walletStore'; export default function CellsRemaining() { - const [misses, hits] = useContractStore((state) => [ - state.misses, - state.hits, - ]); - const isConnected = useWalletStore((state) => state.isConnected); - const numberOfRevealedCells = misses.length + hits.length; - const totalCells = ROWS * COLS; + const [misses, hits] = useContractStore((state) => [state.misses, state.hits]); + const isConnected = useWalletStore((state) => state.isConnected); + const numberOfRevealedCells = misses.length + hits.length; + const totalCells = ROWS * COLS; - const Disconnected =

System Offline

; + const Disconnected =

System Offline

; - const Footer = ( -
-

- {totalCells - numberOfRevealedCells}/{totalCells} -

-

Cells remaining

-
- ); + const Footer = ( +
+

+ {totalCells - numberOfRevealedCells}/{totalCells} +

+

Cells remaining

+
+ ); - return ( - - ); + return ( + + ); } diff --git a/bs-game-wip/src/components/Graveyard/Graveyard.tsx b/bs-game-wip/src/components/Graveyard/Graveyard.tsx index 63acf0a3..5fccbebf 100644 --- a/bs-game-wip/src/components/Graveyard/Graveyard.tsx +++ b/bs-game-wip/src/components/Graveyard/Graveyard.tsx @@ -1,62 +1,44 @@ -import { useEffect } from "react"; - -import ShipFresh from "@/assets/shipFresh.svg"; -import ShipSunk from "@/assets/shipSunk.svg"; -import AnimatedText from "@/components/AnimatedText/AnimatedText"; -import HudWindow from "@/components/HudWindow/HudWindow"; -import { useContractStore } from "@/stores/contractStore"; -import { useWalletStore } from "@/stores/walletStore"; +import ShipFresh from '@/assets/shipFresh.svg'; +import ShipSunk from '@/assets/shipSunk.svg'; +import HudWindow from '@/components/HudWindow/HudWindow'; +import { useContractStore } from '@/stores/contractStore'; +import { useWalletStore } from '@/stores/walletStore'; export default function Graveyard() { - const [graveyard, getGraveyard, hits] = useContractStore((state) => [ - state.graveyard, - state.getGraveyard, - state.hits, - ]); - const isConnected = useWalletStore((state) => state.isConnected); - const sunkShipTotal = graveyard.reduce( - (nxt, cur) => (cur ? nxt : nxt + 1), - 0, - ); - const fleetHealth = (sunkShipTotal / graveyard.length) * 100; - - useEffect(() => { - if (isConnected) { - getGraveyard(); - } - }, [hits]); - - const Disconnected =

System Offline

; + const [graveyard] = useContractStore((state) => [state.graveyard]); + const isConnected = useWalletStore((state) => state.isConnected); + const sunkShipTotal = graveyard.reduce((nxt, cur) => (cur ? nxt : nxt + 1), 0); + const fleetHealth = (sunkShipTotal / graveyard.length) * 100; - const Footer = ( -
-
Fleet Strength
-

{fleetHealth.toFixed(1)}% PERC

-

- {sunkShipTotal}/{graveyard.length} -

-
Ships remaining
-
- ); + const Footer = ( +
+
Fleet Strength
+

{fleetHealth.toFixed(1)}% PERC

+

+ {sunkShipTotal}/{graveyard.length} +

+
Ships remaining
+
+ ); - return ( - -
- {graveyard.map((ship, i) => ( - Logo - ))} -
-
- ); + return ( + System Offline

} + > +
+ {graveyard.map((ship, i) => ( + Logo + ))} +
+
+ ); } diff --git a/bs-game-wip/src/components/HudWindow/HudWindow.tsx b/bs-game-wip/src/components/HudWindow/HudWindow.tsx index 3607354a..07975a8f 100644 --- a/bs-game-wip/src/components/HudWindow/HudWindow.tsx +++ b/bs-game-wip/src/components/HudWindow/HudWindow.tsx @@ -1,112 +1,105 @@ -import { ReactNode } from "react"; +import { ReactNode } from 'react'; -import { AnimatePresence, motion } from "framer-motion"; +import { AnimatePresence, motion } from 'framer-motion'; -import AnimatedText from "@/components/AnimatedText/AnimatedText"; +import AnimatedText from '@/components/AnimatedText/AnimatedText'; -import styles from "./styles.module.scss"; +import styles from './styles.module.scss'; type Props = { - children?: ReactNode; - footerContent?: ReactNode; - headerTitle: string; - isOpen?: boolean; - closedContent?: ReactNode; - speed?: number; + children?: ReactNode; + footerContent?: ReactNode; + headerTitle: string; + isOpen?: boolean; + closedContent?: ReactNode; + speed?: number; }; export default function HudWindow({ - children, - footerContent, - headerTitle, - isOpen = true, - closedContent, - speed = 1, + children, + footerContent, + headerTitle, + isOpen = true, + closedContent, + speed = 1, }: Props) { - const topDecorationAnimation = { - initial: { width: 0, height: 0 }, - animate: { width: "80%", height: "80%" }, - exit: { opacity: 0 }, - transition: { duration: 1 * speed }, - }; - const bottomDecorationAnimation = { - initial: { width: 0, height: 0 }, - animate: { width: "50px", height: "50px" }, - exit: { opacity: 0 }, - transition: { duration: 1 * speed }, - }; + const topDecorationAnimation = { + initial: { width: 0, height: 0 }, + animate: { width: '80%', height: '80%' }, + exit: { opacity: 0 }, + transition: { duration: 1 * speed }, + }; + const bottomDecorationAnimation = { + initial: { width: 0, height: 0 }, + animate: { width: '50px', height: '50px' }, + exit: { opacity: 0 }, + transition: { duration: 1 * speed }, + }; - const headerAnimation = { - initial: { opacity: 0, width: 0 }, - animate: { opacity: 1, width: "100%" }, - exit: { opacity: 0 }, - transition: { delay: 1, duration: 1 * speed }, - }; + const headerAnimation = { + initial: { opacity: 0, width: 0 }, + animate: { opacity: 1, width: '100%' }, + exit: { opacity: 0 }, + transition: { delay: 1, duration: 1 * speed }, + }; - const contentAnimation = { - initial: { opacity: 0 }, - animate: { opacity: 1 }, - exit: { opacity: 0 }, - transition: { delay: 2, duration: 1 * speed }, - }; + const contentAnimation = { + initial: { opacity: 0 }, + animate: { opacity: 1 }, + exit: { opacity: 0 }, + transition: { delay: 2, duration: 1 * speed }, + }; - const footerAnimation = { - initial: { opacity: 0, width: 0, right: 0, left: "auto" }, - animate: { opacity: 1, width: "100%", right: 0, left: "auto" }, - exit: { opacity: 0 }, - transition: { delay: 1, duration: 1 * speed }, - }; + const footerAnimation = { + initial: { opacity: 0, width: 0, right: 0, left: 'auto' }, + animate: { opacity: 1, width: '100%', right: 0, left: 'auto' }, + exit: { opacity: 0 }, + transition: { delay: 1, duration: 1 * speed }, + }; - const footerContentAnimation = { - initial: { opacity: 0 }, - animate: { opacity: 1 }, - exit: { opacity: 0 }, - transition: { delay: 3, duration: 1 * speed }, - }; + const footerContentAnimation = { + initial: { opacity: 0 }, + animate: { opacity: 1 }, + exit: { opacity: 0 }, + transition: { delay: 3, duration: 1 * speed }, + }; - const closedScreenAnimation = { - initial: { opacity: 0 }, - animate: { opacity: 1 }, - exit: { opacity: 0 }, - transition: { delay: 3, duration: 1 * speed }, - }; + const closedScreenAnimation = { + initial: { opacity: 0 }, + animate: { opacity: 1 }, + exit: { opacity: 0 }, + transition: { delay: 3, duration: 1 * speed }, + }; - return ( - -
- - -
- -
-
+ return ( + +
+ + +
+ +
+
- {!isOpen && ( - {closedContent} - )} + {!isOpen && {closedContent}} - {isOpen && {children}} + {isOpen && {children}} - {footerContent && isOpen && ( - <> - - - {footerContent} - - - - - )} -
-
- ); + {footerContent && isOpen && ( + <> + + {footerContent} + + + + )} +
+
+ ); } diff --git a/bs-game-wip/src/components/HudWindow/styles.module.scss b/bs-game-wip/src/components/HudWindow/styles.module.scss index 66238efc..71d50180 100644 --- a/bs-game-wip/src/components/HudWindow/styles.module.scss +++ b/bs-game-wip/src/components/HudWindow/styles.module.scss @@ -1,182 +1,182 @@ .glow { - box-shadow: 0 0 7px rgba(231, 76, 60, 0.6); + box-shadow: 0 0 7px rgba(231, 76, 60, 0.6); } .topLeftDecoration { - width: 80%; - height: 80%; - position: absolute; - left: 0; - top: 0; - border: solid 1px rgb(var(--color-accent)); - border-bottom: none; - border-right: none; - pointer-events: none; - - &::before { - content: ""; - width: 0%; - height: 0%; + width: 80%; + height: 80%; position: absolute; - left: -1px; - top: -1px; - border-left: solid 1px #ffaba5; - animation: anim1 3s linear infinite; - box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); - } + left: 0; + top: 0; + border: solid 1px rgb(var(--color-accent)); + border-bottom: none; + border-right: none; + pointer-events: none; - &::after { - content: ""; - width: 0%; - height: 0%; - position: absolute; - left: -1px; - top: -1px; - border-top: solid 1px #ffaba5; - animation: anim2 3s linear infinite; - box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); - } + &::before { + content: ''; + width: 0%; + height: 0%; + position: absolute; + left: -1px; + top: -1px; + border-left: solid 1px #ffaba5; + animation: anim1 3s linear infinite; + box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); + } + + &::after { + content: ''; + width: 0%; + height: 0%; + position: absolute; + left: -1px; + top: -1px; + border-top: solid 1px #ffaba5; + animation: anim2 3s linear infinite; + box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); + } } .bottomRightDecoration { - width: 50px; - height: 50px; - position: absolute; - bottom: 0; - right: 0; - border: solid 1px rgb(var(--color-accent)); - border-top: none; - border-left: none; - pointer-events: none; - - &::before { - content: ""; - width: 0%; - height: 0%; + width: 50px; + height: 50px; position: absolute; - right: -1px; - top: -1px; - border-left: solid 1px #ffaba5; - animation: anim3 3s linear infinite; - box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); - } + bottom: 0; + right: 0; + border: solid 1px rgb(var(--color-accent)); + border-top: none; + border-left: none; + pointer-events: none; - &::after { - content: ""; - width: 0%; - height: 0%; - position: absolute; - right: -1px; - bottom: -1px; - border-top: solid 1px #ffaba5; - animation: anim4 3s linear infinite; - box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); - } + &::before { + content: ''; + width: 0%; + height: 0%; + position: absolute; + right: -1px; + top: -1px; + border-left: solid 1px #ffaba5; + animation: anim3 3s linear infinite; + box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); + } + + &::after { + content: ''; + width: 0%; + height: 0%; + position: absolute; + right: -1px; + bottom: -1px; + border-top: solid 1px #ffaba5; + animation: anim4 3s linear infinite; + box-shadow: 0 0 7px rgba(231, 76, 60, 0.8); + } } @keyframes anim1 { - 0% { - height: 0; - width: 0; - bottom: -1px; - top: auto; - } - 25% { - height: 100%; - bottom: -1px; - width: 0; - top: auto; - } - 26% { - bottom: auto; - top: 1px; - height: 100%; - } - 50% { - top: -1px; - height: 0; - } - 100% { - top: -1px; - height: 0; - } + 0% { + height: 0; + width: 0; + bottom: -1px; + top: auto; + } + 25% { + height: 100%; + bottom: -1px; + width: 0; + top: auto; + } + 26% { + bottom: auto; + top: 1px; + height: 100%; + } + 50% { + top: -1px; + height: 0; + } + 100% { + top: -1px; + height: 0; + } } @keyframes anim2 { - 0% { - width: 0; - left: -1px; - } - 25% { - width: 0; - left: -1px; - } - 50% { - width: 100%; - left: -1px; - } - 51% { - right: -1px; - left: auto; - width: 100%; - } - 100% { - right: -1px; - left: auto; - width: 0; - } + 0% { + width: 0; + left: -1px; + } + 25% { + width: 0; + left: -1px; + } + 50% { + width: 100%; + left: -1px; + } + 51% { + right: -1px; + left: auto; + width: 100%; + } + 100% { + right: -1px; + left: auto; + width: 0; + } } @keyframes anim3 { - 0% { - height: 0; - width: 0; - } - 25% { - height: 100%; - top: -1px; - } - 26% { - bottom: -1px; - top: auto; - height: 100%; - } - 50% { - bottom: -1px; - top: auto; - height: 0; - } - 100% { - bottom: -1px; - top: auto; - height: 0; - } + 0% { + height: 0; + width: 0; + } + 25% { + height: 100%; + top: -1px; + } + 26% { + bottom: -1px; + top: auto; + height: 100%; + } + 50% { + bottom: -1px; + top: auto; + height: 0; + } + 100% { + bottom: -1px; + top: auto; + height: 0; + } } @keyframes anim4 { - 0% { - width: 0; - right: -1px; - left: auto; - } - 25% { - width: 0; - right: -1px; - left: auto; - } - 50% { - width: 100%; - right: -1px; - left: auto; - } - 51% { - left: -1px; - right: auto; - width: 100%; - } - 100% { - left: -1px; - right: auto; - width: 0; - } + 0% { + width: 0; + right: -1px; + left: auto; + } + 25% { + width: 0; + right: -1px; + left: auto; + } + 50% { + width: 100%; + right: -1px; + left: auto; + } + 51% { + left: -1px; + right: auto; + width: 100%; + } + 100% { + left: -1px; + right: auto; + width: 0; + } } diff --git a/bs-game-wip/src/components/MessageLog/MessageLog.tsx b/bs-game-wip/src/components/MessageLog/MessageLog.tsx index 6e27f921..e5850087 100644 --- a/bs-game-wip/src/components/MessageLog/MessageLog.tsx +++ b/bs-game-wip/src/components/MessageLog/MessageLog.tsx @@ -1,57 +1,57 @@ -import { useEffect, useState } from "react"; +import { useEffect, useState } from 'react'; -import AnimatedText from "@/components/AnimatedText/AnimatedText"; -import HudWindow from "@/components/HudWindow/HudWindow"; -import { useMessageStore } from "@/stores/messageStore"; +import AnimatedText from '@/components/AnimatedText/AnimatedText'; +import HudWindow from '@/components/HudWindow/HudWindow'; +import { useMessageStore } from '@/stores/messageStore'; -import styles from "./styles.module.scss"; +import styles from './styles.module.scss'; const ANIMATION_DURATION = 1000; export default function MessageLog() { - const [messages] = useMessageStore((state) => [state.messages]); - const [displayedItems, setDisplayedItems] = useState([]); - const [currentIndex, setCurrentIndex] = useState(0); - const [readyForNewLine, setReadyForNewLine] = useState(true); + const [messages] = useMessageStore((state) => [state.messages]); + const [displayedItems, setDisplayedItems] = useState([]); + const [currentIndex, setCurrentIndex] = useState(0); + const [readyForNewLine, setReadyForNewLine] = useState(true); - useEffect(() => { - if (currentIndex < messages.length && readyForNewLine) { - setReadyForNewLine(false); - setDisplayedItems((prev) => [...prev, messages[currentIndex]]); - setCurrentIndex((prev) => prev + 1); - } - }, [messages, readyForNewLine]); + useEffect(() => { + if (currentIndex < messages.length && readyForNewLine) { + setReadyForNewLine(false); + setDisplayedItems((prev) => [...prev, messages[currentIndex]]); + setCurrentIndex((prev) => prev + 1); + } + }, [messages, readyForNewLine]); - const handleCompletedLine = () => { - setReadyForNewLine(true); - }; + const handleCompletedLine = () => { + setReadyForNewLine(true); + }; - return ( - -
-
    - {displayedItems.map((message, i) => ( -
  • - -
  • - ))} - {readyForNewLine && ( -
  • - -
  • - )} -
-
-
- ); + return ( + +
+
    + {displayedItems.map((message, i) => ( +
  • + +
  • + ))} + {readyForNewLine && ( +
  • + +
  • + )} +
+
+
+ ); } diff --git a/bs-game-wip/src/components/MessageLog/styles.module.scss b/bs-game-wip/src/components/MessageLog/styles.module.scss index f450ab29..4a754fa7 100644 --- a/bs-game-wip/src/components/MessageLog/styles.module.scss +++ b/bs-game-wip/src/components/MessageLog/styles.module.scss @@ -1,32 +1,32 @@ .line { - background: rgba(255, 255, 255, 0.02); - margin: 0 5px 5px 0; - padding-left: 5px; + background: rgba(255, 255, 255, 0.02); + margin: 0 5px 5px 0; + padding-left: 5px; } .cursor { - display: inline-block; - width: 0.6em; - background: white; - height: 1em; + display: inline-block; + width: 0.6em; + background: white; + height: 1em; - &.withFlash { - opacity: 0; - animation: CursorFlash 1s linear infinite; - } + &.withFlash { + opacity: 0; + animation: CursorFlash 1s linear infinite; + } } @keyframes CursorFlash { - 0% { - opacity: 0; - } - 25% { - opacity: 1; - } - 75% { - opacity: 1; - } - 75% { - opacity: 0; - } + 0% { + opacity: 0; + } + 25% { + opacity: 1; + } + 75% { + opacity: 1; + } + 75% { + opacity: 0; + } } diff --git a/bs-game-wip/src/components/MetaMask/MetaMask.tsx b/bs-game-wip/src/components/MetaMask/MetaMask.tsx index ead6142c..ccb27445 100644 --- a/bs-game-wip/src/components/MetaMask/MetaMask.tsx +++ b/bs-game-wip/src/components/MetaMask/MetaMask.tsx @@ -1,42 +1,42 @@ -import metaMaskLogo from "@/assets/metamask-logo.svg"; -import HudWindow from "@/components/HudWindow/HudWindow"; -import { useMessageStore } from "@/stores/messageStore"; -import { useWalletStore } from "@/stores/walletStore"; +import metaMaskLogo from '@/assets/metamask-logo.svg'; +import HudWindow from '@/components/HudWindow/HudWindow'; +import { useMessageStore } from '@/stores/messageStore'; +import { useWalletStore } from '@/stores/walletStore'; export default function MetaMask() { - const [provider, address, setAddress] = useWalletStore((state) => [ - state.provider, - state.address, - state.setAddress, - ]); - const addNewMessage = useMessageStore((state) => state.addNewMessage); + const [provider, address, setAddress] = useWalletStore((state) => [ + state.provider, + state.address, + state.setAddress, + ]); + const addNewMessage = useMessageStore((state) => state.addNewMessage); - const connectAccount = async () => { - if (provider) { - try { - const accounts = await window.ethereum.request({ - method: "eth_requestAccounts", - }); - setAddress(accounts[0]); - } catch (error) { - addNewMessage("User rejected the request.", "ERROR"); - } - } - }; + const connectAccount = async () => { + if (provider) { + try { + const accounts = await window.ethereum.request({ + method: 'eth_requestAccounts', + }); + setAddress(accounts[0]); + } catch (error) { + addNewMessage('User rejected the request.', 'ERROR'); + } + } + }; - return ( - - - {address ? ( -

MetaMask Connected

- ) : ( - - )} -
- } - > - ); + return ( + + + {address ? ( +

MetaMask Connected

+ ) : ( + + )} +
+ } + >
+ ); } diff --git a/bs-game-wip/src/components/PrizePool/PrizePool.tsx b/bs-game-wip/src/components/PrizePool/PrizePool.tsx index 49af636a..842cceab 100644 --- a/bs-game-wip/src/components/PrizePool/PrizePool.tsx +++ b/bs-game-wip/src/components/PrizePool/PrizePool.tsx @@ -1,40 +1,20 @@ -import { useEffect, useState } from "react"; - -import HudWindow from "@/components/HudWindow/HudWindow"; -import { useContractStore } from "@/stores/contractStore"; -import { useWalletStore } from "@/stores/walletStore"; +import HudWindow from '@/components/HudWindow/HudWindow'; +import { useContractStore } from '@/stores/contractStore'; +import { useWalletStore } from '@/stores/walletStore'; export default function PrizePool() { - const [hits, misses, prizePool, getPrizePool] = useContractStore((state) => [ - state.hits, - state.misses, - state.prizePool, - state.getPrizePool, - ]); - const isConnected = useWalletStore((state) => state.isConnected); - const [totalGuesses, setTotalGuesses] = useState(hits.length + misses.length); - - useEffect(() => { - setTotalGuesses(hits.length + misses.length); - }, [hits, misses]); - - useEffect(() => { - if (isConnected) { - getPrizePool(); - } - }, [totalGuesses]); - - const Disconnected =

System Offline

; + const [prizePool] = useContractStore((state) => [state.prizePool]); + const isConnected = useWalletStore((state) => state.isConnected); - return ( - -

- {prizePool} ETH -

-
- ); + return ( + System Offline

} + > +

+ {prizePool} ETH +

+
+ ); } diff --git a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx index 6baf3763..ab3fcecc 100644 --- a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx +++ b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx @@ -1,104 +1,132 @@ -import { AnimatePresence, motion } from "framer-motion"; +import { AnimatePresence, motion } from 'framer-motion'; -import HudWindow from "@/components/HudWindow/HudWindow"; -import { useContractStore } from "@/stores/contractStore"; +import HudWindow from '@/components/HudWindow/HudWindow'; +import { useContractStore } from '@/stores/contractStore'; -import styles from "./styles.module.scss"; +import styles from './styles.module.scss'; export default function ProcessingNotification() { - const [guessState, lastError, resetGuessState] = useContractStore((state) => [ - state.guessState, - state.lastError, - state.resetGuessState, - ]); - let footerContent =
; - let bodyContent =
; - const handleClose = () => { - resetGuessState(); - }; + const [guessState, lastError, resetGuessState] = useContractStore((state) => [ + state.guessState, + state.lastError, + state.resetGuessState, + ]); - if (guessState === "IDLE") return null; + let footerContent =
; + let bodyContent =
; - if (guessState === "STARTED") { - footerContent =

Processing...

; - bodyContent = ( -
-

- Target locked and confirmed. -

-

- Initiating plasma cannon sequence. -

-
- ); - } + const handleClose = () => { + resetGuessState(); + }; - if (guessState === "ERROR") { - footerContent = ; - bodyContent = ( -
-

- WEAPON ACTIVATION FAILED -

-

Error detected.

-

{lastError}

-
- ); - } + const CloseButton = ; - if (guessState === "TRANSACTION_SUCCESS") { - footerContent =

CANNONS FIRED...

; - bodyContent = ( -
-

- Ordinance en route to target. -

-

- Monitor for impact confirmation. -

-
- ); - } + if (guessState === 'IDLE') return null; + + if (guessState === 'STARTED') { + footerContent =

Processing...

; + bodyContent = ( +
+

+ Target locked and confirmed. +

+

Initiating plasma cannon sequence

+
+ ); + } + + if (guessState === 'ERROR') { + footerContent =
{CloseButton}
; + bodyContent = ( +
+

WEAPON ACTIVATION FAILED

+

Error detected

+

{lastError}

+
+ ); + } - console.log(guessState); + if (guessState === 'TRANSACTION_SUCCESS') { + footerContent =

CANNONS FIRED...

; + bodyContent = ( +
+

+ Ordinance en route to target +

+

+ Monitor for impact confirmation +

+
+ ); + } - const variants = { - initial: { opacity: 0, y: -20 }, - animate: { opacity: 1, y: 0 }, - exit: { opacity: 0, y: 20 }, - }; + if (guessState === 'MISS') { + footerContent =
{CloseButton}
; + bodyContent = ( +
+

Miss detected

+

+ Shot failed to find target +

+

+ Initiate trajectory analysis and recalibrate targeting systems +

+
+ ); + } - return ( -
- - {CloseButton}
; + bodyContent = ( +
+

DIRECT HIT

+

Impact confirmed

+

+ Assess damage and prepare for immediate re-engagement +

+
+ ); + } + + console.log(guessState); + + const variants = { + initial: { opacity: 0, y: -20 }, + animate: { opacity: 1, y: 0 }, + exit: { opacity: 0, y: 20 }, + }; + + return ( +
+ + + {footerContent} + +
+ } > - {footerContent} - -
- } - > - - - {bodyContent} - - - -
- ); + + + {bodyContent} + + + +
+ ); } diff --git a/bs-game-wip/src/components/ProcessingNotification/styles.module.scss b/bs-game-wip/src/components/ProcessingNotification/styles.module.scss index d2f8eba1..6d2dec1a 100644 --- a/bs-game-wip/src/components/ProcessingNotification/styles.module.scss +++ b/bs-game-wip/src/components/ProcessingNotification/styles.module.scss @@ -1,6 +1,6 @@ .container { - position: absolute; - top: 30vh; - left: 50vw; - transform: translateX(-50%); + position: absolute; + top: 30vh; + left: 50vw; + transform: translateX(-50%); } diff --git a/bs-game-wip/src/contexts/EventContext.tsx b/bs-game-wip/src/contexts/EventContext.tsx index 2757d5ea..c2a9a885 100644 --- a/bs-game-wip/src/contexts/EventContext.tsx +++ b/bs-game-wip/src/contexts/EventContext.tsx @@ -1,17 +1,15 @@ -import React, { createContext, useState } from "react"; +import React, { createContext, useState } from 'react'; export const EventContext = createContext(undefined); export const EventProvider = ({ children }) => { - const [event, setEvent] = useState(null); + const [event, setEvent] = useState(null); - const triggerEvent = (eventData) => { - setEvent(eventData); - }; + const triggerEvent = (eventData) => { + setEvent(eventData); + }; - return ( - - {children} - - ); + return ( + {children} + ); }; diff --git a/bs-game-wip/src/helpers/formatAddress.ts b/bs-game-wip/src/helpers/formatAddress.ts index fe5fd7ab..d509b6e5 100644 --- a/bs-game-wip/src/helpers/formatAddress.ts +++ b/bs-game-wip/src/helpers/formatAddress.ts @@ -1,7 +1,7 @@ export default function formatAddress(address: string) { - const afterX = address.substring(2); - const firstFourCharacters = afterX.substring(0, 4); - const lastFourCharacters = afterX.slice(-4); + const afterX = address.substring(2); + const firstFourCharacters = afterX.substring(0, 4); + const lastFourCharacters = afterX.slice(-4); - return `0x${firstFourCharacters}...${lastFourCharacters}`; + return `0x${firstFourCharacters}...${lastFourCharacters}`; } diff --git a/bs-game-wip/src/helpers/getCellXY.ts b/bs-game-wip/src/helpers/getCellXY.ts index 522405b7..6b356926 100644 --- a/bs-game-wip/src/helpers/getCellXY.ts +++ b/bs-game-wip/src/helpers/getCellXY.ts @@ -1,16 +1,15 @@ import { - HEX_GRID_MARGIN, - HEX_HEIGHT, - HEX_WIDTH, - HORIZONTAL_OFFSET, - VERTICAL_OFFSET, -} from "../lib/constants"; + HEX_GRID_MARGIN, + HEX_HEIGHT, + HEX_WIDTH, + HORIZONTAL_OFFSET, + VERTICAL_OFFSET, +} from '../lib/constants'; export default function getCellXY(col: number, row: number) { - const x = - HEX_GRID_MARGIN + - (((row % 2) * HEX_WIDTH) / 2 + col * (HEX_WIDTH - HORIZONTAL_OFFSET)); - const y = HEX_GRID_MARGIN + row * (HEX_HEIGHT - VERTICAL_OFFSET); + const x = + HEX_GRID_MARGIN + (((row % 2) * HEX_WIDTH) / 2 + col * (HEX_WIDTH - HORIZONTAL_OFFSET)); + const y = HEX_GRID_MARGIN + row * (HEX_HEIGHT - VERTICAL_OFFSET); - return [x, y]; + return [x, y]; } diff --git a/bs-game-wip/src/helpers/isInViewport.ts b/bs-game-wip/src/helpers/isInViewport.ts index 22ba0798..4b872228 100644 --- a/bs-game-wip/src/helpers/isInViewport.ts +++ b/bs-game-wip/src/helpers/isInViewport.ts @@ -1,10 +1,10 @@ -import { DRAW_THRESHOLD, HEX_HEIGHT, HEX_WIDTH } from "../lib/constants"; +import { DRAW_THRESHOLD, HEX_HEIGHT, HEX_WIDTH } from '../lib/constants'; export default function isInViewport(x, y, viewport, scrollPosition) { - return ( - x > -HEX_WIDTH + scrollPosition[0] - DRAW_THRESHOLD && - x < viewport.width + HEX_WIDTH + scrollPosition[0] + DRAW_THRESHOLD && - y > -HEX_HEIGHT + scrollPosition[1] && - y < viewport.height + HEX_HEIGHT + scrollPosition[1] - ); + return ( + x > -HEX_WIDTH + scrollPosition[0] - DRAW_THRESHOLD && + x < viewport.width + HEX_WIDTH + scrollPosition[0] + DRAW_THRESHOLD && + y > -HEX_HEIGHT + scrollPosition[1] && + y < viewport.height + HEX_HEIGHT + scrollPosition[1] + ); } diff --git a/bs-game-wip/src/index.css b/bs-game-wip/src/index.css index 864493c9..d4087e5e 100644 --- a/bs-game-wip/src/index.css +++ b/bs-game-wip/src/index.css @@ -1,47 +1,47 @@ :root { - font-family: "Space Mono", monospace; - line-height: 1.5; - font-weight: 100; - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #1e1e1e; - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; + font-family: 'Space Mono', monospace; + line-height: 1.5; + font-weight: 100; + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #1e1e1e; + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; + font-weight: 500; + color: #646cff; + text-decoration: inherit; } a:hover { - color: #535bf2; + color: #535bf2; } body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; } h1 { - font-size: 3.2em; - line-height: 1.1; + font-size: 3.2em; + line-height: 1.1; } @media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } } diff --git a/bs-game-wip/src/lib/constants.ts b/bs-game-wip/src/lib/constants.ts index 7acfda74..65bf6336 100644 --- a/bs-game-wip/src/lib/constants.ts +++ b/bs-game-wip/src/lib/constants.ts @@ -1,7 +1,7 @@ -import formatAddress from "@/helpers/formatAddress"; -import createHexagon from "@/utils/createHexagon"; +import formatAddress from '@/helpers/formatAddress'; +import createHexagon from '@/utils/createHexagon'; -export const MOVE_FEE: string = "0.0443"; +export const MOVE_FEE: string = '0.0443'; export const TOTAL_SHIPS: number = 249; export const HEX_WIDTH = 32; export const HEX_HEIGHT = 32; diff --git a/bs-game-wip/src/lib/trackEvent.ts b/bs-game-wip/src/lib/trackEvent.ts index 7c8a433b..4dbbfeb9 100644 --- a/bs-game-wip/src/lib/trackEvent.ts +++ b/bs-game-wip/src/lib/trackEvent.ts @@ -1,6 +1,6 @@ export function trackEvent(eventName, eventData) { - if (!window.gtag) { - return; - } - window.gtag("event", eventName, eventData); + if (!window.gtag) { + return; + } + window.gtag('event', eventName, eventData); } diff --git a/bs-game-wip/src/main.tsx b/bs-game-wip/src/main.tsx index a58d1c13..caecce48 100644 --- a/bs-game-wip/src/main.tsx +++ b/bs-game-wip/src/main.tsx @@ -1,13 +1,13 @@ -import React from "react"; +import React from 'react'; -import ReactDOM from "react-dom/client"; +import ReactDOM from 'react-dom/client'; -import App from "./App.tsx"; -import "./index.css"; -import "./tailwind.css"; +import App from './App.tsx'; +import './index.css'; +import './tailwind.css'; -ReactDOM.createRoot(document.getElementById("root")!).render( - - - , +ReactDOM.createRoot(document.getElementById('root')!).render( + + + ); diff --git a/bs-game-wip/src/services/web3service.js b/bs-game-wip/src/services/web3service.js deleted file mode 100644 index 2a81561e..00000000 --- a/bs-game-wip/src/services/web3service.js +++ /dev/null @@ -1,123 +0,0 @@ -import { ethers } from "ethers"; - -import ContractAddress from "@/assets/contract/address.json"; -import BattleshipGameJson from "@/assets/contract/artifacts/contracts/BattleshipGame.sol/BattleshipGame.json"; -import { MOVE_FEE } from "@/lib/constants"; -import { useMessageStore } from "@/stores/messageStore"; - -export default class Web3Service { - constructor(signer) { - this.contract = new ethers.Contract( - ContractAddress.address, - BattleshipGameJson.abi, - signer, - ); - this.signer = signer; - } - - async submitGuess(x, y) { - // const messageStore = useMessageStore() - // messageStore.addMessage('Issuing Guess...') - const moveFee = ethers.parseEther(MOVE_FEE); - - try { - const submitTx = await this.contract.hit(x, y, { - value: moveFee, - }); - const receipt = await submitTx.wait(); - // messageStore.addMessage('Issued Guess tx: ' + receipt.transactionHash) - console.log(receipt); - return receipt; - } catch (e) { - if (e) { - // messageStore.addMessage('Failed to issue Guess - ' + e.reason + ' ...') - } - throw new Error(e); - - // messageStore.addMessage( - // 'Failed to issue Guess - unexpected error occurred, check the console logs...' - // ) - } - } - - async getAllShipPositions() { - const messageStore = useMessageStore(); - try { - const ships = await this.contract.getAllShipPositions(); - return ships; - } catch (error) { - console.error("Failed to get ship properties - ", error); - messageStore.addMessage( - "Failed to get ship properties - " + error.reason + " ...", - ); - } - } - - async getShipAtPosition(x, y) { - const messageStore = useMessageStore(); - try { - const ship = await this.contract.getShipAtPosition(x, y); - return ship; - } catch (error) { - console.error("Failed to get ship at position - ", error); - messageStore.addMessage( - "Failed to get ship at position - " + error.reason + " ...", - ); - } - } - - async getGraveyard() { - const messageStore = useMessageStore(); - try { - const ships = await this.contract.getGraveyard(); - return ships; - } catch (error) { - console.error("Failed to get graveyard - ", error); - messageStore.addMessage( - "Failed to get graveyard - " + error.reason + " ...", - ); - } - } - - async isCellHit(x, y) { - const addToMessageStore = useMessageStore((state) => state.addNewMessage); - try { - const isHit = await this.contract.isHit(x, y); - return isHit; - } catch (error) { - console.error("Failed to get cell hit status - ", error); - addToMessageStore( - "Failed to get cell hit status - " + error.reason + " ...", - ); - } - } - - async isShipSunk(shipIndex) { - const addToMessageStore = useMessageStore((state) => state.addNewMessage); - try { - const isSunk = await this.contract.isSunk(shipIndex); - return isSunk; - } catch (error) { - console.error("Failed to get ship sunk status - ", error); - addToMessageStore( - "Failed to get ship sunk status - " + error.reason + " ...", - ); - } - } - - async isGameOver() { - const addToMessageStore = useMessageStore((state) => state.addNewMessage); - // const battleStore = useBattleStore() - // try { - // const isGameOver = await this.contract.gameOver() - // if (isGameOver) { - // messageStore.addMessage('The game is over!') - // battleStore.gameOver = true - // } - // return isGameOver - // } catch (error) { - // console.error('Failed to get ship sunk status - ', error) - // messageStore.addMessage('Failed to get ship sunk status - ' + error.reason + ' ...') - // } - } -} diff --git a/bs-game-wip/src/stores/contractStore.ts b/bs-game-wip/src/stores/contractStore.ts index 798fe506..b8525301 100644 --- a/bs-game-wip/src/stores/contractStore.ts +++ b/bs-game-wip/src/stores/contractStore.ts @@ -1,226 +1,172 @@ -import { ethers, formatUnits } from "ethers"; -import { create } from "zustand"; +import { ethers, formatUnits } from 'ethers'; +import { create } from 'zustand'; -import ContractAddress from "@/assets/contract/address.json"; -import BattleshipGameJson from "@/assets/contract/artifacts/contracts/BattleshipGame.sol/BattleshipGame.json"; -import { TOTAL_SHIPS } from "@/lib/constants"; -import { MOVE_FEE } from "@/lib/constants"; -import { useMessageStore } from "@/stores/messageStore"; -import { useWalletStore } from "@/stores/walletStore"; +import ContractAddress from '@/assets/contract/address.json'; +import BattleshipGameJson from '@/assets/contract/artifacts/contracts/BattleshipGame.sol/BattleshipGame.json'; +import getCellXY from '@/helpers/getCellXY'; +import { TOTAL_SHIPS } from '@/lib/constants'; +import { MOVE_FEE } from '@/lib/constants'; +import { useMessageStore } from '@/stores/messageStore'; +import { useWalletStore } from '@/stores/walletStore'; -import getCellXY from "../helpers/getCellXY"; -import handleMetaMaskError from "../utils/handleMetaMaskError"; -import { useBattleGridStore } from "./battleGridStore"; +import { useBattleGridStore } from './battleGridStore'; export interface IContractStore { - hits: any[]; - misses: any[]; - graveyard: any[]; - gameOver: boolean; - prizePool: number; - guessState: GuessState; - lastError: string; - submitGuess: (x: number, y: number) => Promise; - resetGuessState: () => void; - getPrizePool: () => Promise; - getAllHits: () => Promise; - getAllMisses: () => Promise; - getGraveyard: () => Promise; + hits: any[]; + misses: any[]; + graveyard: any[]; + gameOver: boolean; + prizePool: string; + guessState: GuessState; + lastError: string; + submitGuess: (x: number, y: number) => Promise; + resetGuessState: () => void; + setPrizePool: (pp: string) => void; + setHits: (h: any[]) => void; + setMisses: (m: any[]) => void; + setGraveyard: (g: any[]) => void; } export type GuessState = - | "IDLE" - | "STARTED" - | "ERROR" - | "TRANSACTION_SUCCESS" - | "RECEIVED_RECEIPT" - | "HIT" - | "MISS"; + | 'IDLE' + | 'STARTED' + | 'ERROR' + | 'TRANSACTION_SUCCESS' + | 'RECEIVED_RECEIPT' + | 'HIT' + | 'MISS'; export const useContractStore = create((set, get) => ({ - hits: [], - misses: [], - graveyard: new Array(TOTAL_SHIPS).fill(false), - gameOver: false, - prizePool: 0, - guessState: "IDLE" as GuessState, - lastError: "", - - submitGuess: async (x: number, y: number) => { - const signer = useWalletStore.getState().signer; - const addNewMessage = useMessageStore.getState().addNewMessage; - - if (!signer) { - throw new Error("No signer available."); - return; - } - - set({ guessState: "STARTED" }); - - addNewMessage("Issuing Guess..."); - const contract = new ethers.Contract( - ContractAddress.address, - BattleshipGameJson.abi, - signer, - ); - const moveFee = ethers.parseEther(MOVE_FEE); - try { - const submitTx = await contract.hit(x, y, { - value: moveFee, - }); - set({ guessState: "TRANSACTION_SUCCESS" }); - const receipt = await submitTx.wait(); - addNewMessage("Issued Guess tx: " + receipt.hash); - - //Record last transaction has and make these calls from another location when the hash changes - useContractStore.getState().getAllHits(); - useContractStore.getState().getAllMisses(); - } catch (e) { - set({ guessState: "ERROR" }); - if (e.reason) { - addNewMessage("Failed to issue Guess - " + e.reason + " ...", "ERROR"); - set({ lastError: "Failed to issue Guess - " + e.reason }); - } else { - addNewMessage( - "Failed to issue Guess - unexpected error occurred, check the console logs...", - "ERROR", + hits: [], + misses: [], + graveyard: new Array(TOTAL_SHIPS).fill(false), + gameOver: false, + prizePool: '', + guessState: 'IDLE' as GuessState, + lastError: '', + + submitGuess: async (x: number, y: number) => { + const signer = useWalletStore.getState().signer; + const addNewMessage = useMessageStore.getState().addNewMessage; + + if (!signer) { + throw new Error('No signer available.'); + return; + } + + set({ guessState: 'STARTED' }); + + addNewMessage('Issuing Guess...'); + const contract = new ethers.Contract( + ContractAddress.address, + BattleshipGameJson.abi, + signer + ); + const moveFee = ethers.parseEther(MOVE_FEE); + try { + const submitTx = await contract.hit(x, y, { + value: moveFee, + }); + console.log(submitTx); + set({ guessState: 'TRANSACTION_SUCCESS' }); + const receipt = await submitTx.wait(); + addNewMessage('Issued Guess tx: ' + receipt.hash); + const { allHits, allMisses, graveyard, prizePool, success } = + receipt.logs[0].args.toObject(); + console.log(receipt, receipt.logs[0].args.toObject()); + + get().setHits(allHits); + get().setMisses(allMisses); + get().setGraveyard(graveyard); + get().setPrizePool(prizePool); + set({ guessState: success ? 'HIT' : 'MISS' }); + } catch (e) { + set({ guessState: 'ERROR' }); + if (e.reason) { + addNewMessage('Failed to issue Guess - ' + e.reason + ' ...', 'ERROR'); + set({ lastError: 'Failed to issue Guess - ' + e.reason }); + } else { + addNewMessage( + 'Failed to issue Guess - unexpected error occurred, check the console logs...', + 'ERROR' + ); + set({ lastError: 'Failed to issue Guess - unexpected error occurred' }); + throw new Error(e); + } + } + }, + + resetGuessState: () => + set({ + guessState: 'IDLE', + }), + + setGraveyard: (latestGraveyard: any[]) => { + const addNewMessage = useMessageStore.getState().addNewMessage; + + const graveyardHasUpdated = get().graveyard.some( + (value, index) => value !== latestGraveyard[index] ); - set({ lastError: "Failed to issue Guess - unexpected error occurred" }); - throw new Error(e); - } - } - }, - - resetGuessState: () => - set({ - guessState: "IDLE", - }), - - getGraveyard: async () => { - const signer = useWalletStore.getState().signer; - const addNewMessage = useMessageStore.getState().addNewMessage; - const contract = new ethers.Contract( - ContractAddress.address, - BattleshipGameJson.abi, - signer, - ); - - try { - const latestGraveyard = await contract.getGraveyard(); - const graveyardHasUpdated = get().graveyard.some( - (value, index) => value !== latestGraveyard[index], - ); - - if (graveyardHasUpdated) { - set({ graveyard: latestGraveyard }); - } - } catch (error) { - console.error(error); - addNewMessage( - "Failed to get graveyard - " + error.reason + " ...", - "ERROR", - ); - } - }, - - getAllMisses: async () => { - const currentMisses = useBattleGridStore.getState().missedCells; - const signer = useWalletStore.getState().signer; - const addNewMessage = useMessageStore.getState().addNewMessage; - const contract = new ethers.Contract( - ContractAddress.address, - BattleshipGameJson.abi, - signer, - ); - - try { - const latestMisses = await contract.getAllMisses(); - const missesHaveUpdated = latestMisses.length !== currentMisses.length; - - if (missesHaveUpdated) { - const a = latestMisses.map((entry) => { - const [x, y] = getCellXY(parseInt(entry[0]), parseInt(entry[1])); - return { - col: parseInt(entry[0]), - row: parseInt(entry[1]), - x, - y, - state: "MISSED", - }; - }); - - set({ misses: latestMisses }); - useBattleGridStore.setState({ missedCells: a }); - } - } catch (e) { - console.error(e); - if (e.reason) { + + if (graveyardHasUpdated) { + set({ graveyard: latestGraveyard }); + addNewMessage('Graveyard info updated.'); + } + }, + + setMisses: (latestMisses: any[]) => { + const currentMisses = useBattleGridStore.getState().missedCells; + const addNewMessage = useMessageStore.getState().addNewMessage; + const missesHaveUpdated = latestMisses.length !== currentMisses.length; + + if (missesHaveUpdated) { + const a = latestMisses.map((entry) => { + const [x, y] = getCellXY(parseInt(entry[0]), parseInt(entry[1])); + return { + col: parseInt(entry[0]), + row: parseInt(entry[1]), + x, + y, + state: 'MISSED', + }; + }); + + set({ misses: latestMisses }); + useBattleGridStore.setState({ missedCells: a }); + addNewMessage('Missed. Shot failed to find target.'); + } + }, + + //TODO: Given the similarity of the methods here might be worth combining with the above. + setHits: (latestHits: any[]) => { + const currentHits = useBattleGridStore.getState().hitCells; + const addNewMessage = useMessageStore.getState().addNewMessage; + const hitsHaveUpdated = latestHits.length !== currentHits.length; + + if (hitsHaveUpdated) { + const a = latestHits.map((entry) => { + const [x, y] = getCellXY(parseInt(entry[0]), parseInt(entry[1])); + return { + col: parseInt(entry[0]), + row: parseInt(entry[1]), + x, + y, + state: 'MISSED', + }; + }); + + set({ hits: latestHits }); + useBattleGridStore.setState({ hitCells: a }); + addNewMessage('DIRECT HIT. Shot successfully found target.', 'SUCCESS'); + } + }, + + setPrizePool: (prizePool: string) => { + const addNewMessage = useMessageStore.getState().addNewMessage; + addNewMessage( - "Failed to get graveyard - " + e.reason + " ...", - "ERROR", + `[BattleshipGame Contract] Prize pool at: ${formatUnits(prizePool, 'ether')} ETH` ); - } - } - }, - //TODO: Given the similarity of the methods here might be worth combining with the above. - getAllHits: async () => { - const currentHits = useBattleGridStore.getState().hitCells; - const signer = useWalletStore.getState().signer; - const addNewMessage = useMessageStore.getState().addNewMessage; - const contract = new ethers.Contract( - ContractAddress.address, - BattleshipGameJson.abi, - signer, - ); - - try { - const latestHits = await contract.getAllHits(); - const hitsHaveUpdated = latestHits.length !== currentHits.length; - - if (hitsHaveUpdated) { - const a = latestHits.map((entry) => { - const [x, y] = getCellXY(parseInt(entry[0]), parseInt(entry[1])); - return { - col: parseInt(entry[0]), - row: parseInt(entry[1]), - x, - y, - state: "MISSED", - }; - }); - - set({ hits: latestHits }); - useBattleGridStore.setState({ hitCells: a }); - } - } catch (e) { - console.error(e); - addNewMessage("Failed to get graveyard - " + e.reason + " ...", "ERROR"); - } - }, - - getPrizePool: async () => { - const signer = useWalletStore.getState().signer; - const addNewMessage = useMessageStore.getState().addNewMessage; - const contract = new ethers.Contract( - ContractAddress.address, - BattleshipGameJson.abi, - signer, - ); - try { - const prizePool = await contract.prizePool(); - addNewMessage( - `[BattleshipGame Contract] Prize pool at: ${formatUnits( - prizePool, - "ether", - )} ETH`, - ); - set({ prizePool: formatUnits(prizePool, "ether") }); - } catch (e) { - console.error("Error fetching prize pool:", e); - const errorMessage = handleMetaMaskError(e); - if (errorMessage) { - return addNewMessage(errorMessage, "ERROR"); - } - } - }, + set({ prizePool: formatUnits(prizePool, 'ether') }); + }, })); diff --git a/bs-game-wip/src/stores/messageStore.ts b/bs-game-wip/src/stores/messageStore.ts index c9c4e2e3..fe568d49 100644 --- a/bs-game-wip/src/stores/messageStore.ts +++ b/bs-game-wip/src/stores/messageStore.ts @@ -1,29 +1,29 @@ -import { create } from "zustand"; +import { create } from 'zustand'; export interface IMessageStore { - messages: { id: number; text: string; type: MessageType }[]; - errorMessage: string; - addNewMessage: (msg: string, type?: MessageType) => void; + messages: { id: number; text: string; type: MessageType }[]; + errorMessage: string; + addNewMessage: (msg: string, type?: MessageType) => void; } -type MessageType = "INFO" | "ERROR" | "SUCCESS"; +type MessageType = 'INFO' | 'ERROR' | 'SUCCESS'; export const useMessageStore = create((set) => ({ - messages: [], - errorMessage: "", + messages: [], + errorMessage: '', - addNewMessage: (text, type = "INFO") => { - set((state) => ({ - messages: [ - ...state.messages, - { - id: Date.now(), - text: text, - type, - }, - ], - })); - }, + addNewMessage: (text, type = 'INFO') => { + set((state) => ({ + messages: [ + ...state.messages, + { + id: Date.now(), + text: text, + type, + }, + ], + })); + }, })); // diff --git a/bs-game-wip/src/stores/walletStore.ts b/bs-game-wip/src/stores/walletStore.ts index e76b46c6..31d72d01 100644 --- a/bs-game-wip/src/stores/walletStore.ts +++ b/bs-game-wip/src/stores/walletStore.ts @@ -1,36 +1,34 @@ -import { ethers } from "ethers"; -import { create } from "zustand"; +import { ethers } from 'ethers'; +import type { JsonRpcSigner } from 'ethers/lib.commonjs/providers/provider-jsonrpc'; +import { Eip1193Provider } from 'ethers/src.ts/providers/provider-browser'; +import { create } from 'zustand'; -import ContractAddress from "@/assets/contract/address.json"; -import { useMessageStore } from "@/stores/messageStore"; -import {Eip1193Provider} from "ethers/src.ts/providers/provider-browser"; -import type {JsonRpcSigner} from "ethers/lib.commonjs/providers/provider-jsonrpc"; +import ContractAddress from '@/assets/contract/address.json'; +import { useMessageStore } from '@/stores/messageStore'; export interface IWalletStore { - provider: Eip1193Provider|null - signer: JsonRpcSigner|null - address: string|null - isConnected: boolean - setProvider: (provider: Eip1193Provider) => Promise - setAddress: (address:string) => void + provider: Eip1193Provider | null; + signer: JsonRpcSigner | null; + address: string | null; + isConnected: boolean; + setProvider: (provider: Eip1193Provider) => Promise; + setAddress: (address: string) => void; } export const useWalletStore = create((set) => ({ - provider: null, - signer: null, - address: null, - isConnected: false, - setProvider: async (provider) => { - const signer = await new ethers.BrowserProvider(provider).getSigner(); - const addNewMessage = useMessageStore.getState().addNewMessage; - addNewMessage( - `[BattleshipGame Contract] Contract Address: ${ContractAddress.address}`, - ); - set({ - provider, - signer, - isConnected: true, - }); - }, - setAddress: (address) => set({ address }), + provider: null, + signer: null, + address: null, + isConnected: false, + setProvider: async (provider) => { + const signer = await new ethers.BrowserProvider(provider).getSigner(); + const addNewMessage = useMessageStore.getState().addNewMessage; + addNewMessage(`[BattleshipGame Contract] Contract Address: ${ContractAddress.address}`); + set({ + provider, + signer, + isConnected: true, + }); + }, + setAddress: (address) => set({ address }), })); diff --git a/bs-game-wip/src/tailwind.css b/bs-game-wip/src/tailwind.css index e017931f..8aa23323 100644 --- a/bs-game-wip/src/tailwind.css +++ b/bs-game-wip/src/tailwind.css @@ -3,7 +3,7 @@ @tailwind utilities; @layer base { - :root { - --color-accent: 255 111 111; - } + :root { + --color-accent: 255 111 111; + } } diff --git a/bs-game-wip/src/utils/createHexagon.ts b/bs-game-wip/src/utils/createHexagon.ts index ae7b9660..12d9b937 100644 --- a/bs-game-wip/src/utils/createHexagon.ts +++ b/bs-game-wip/src/utils/createHexagon.ts @@ -1,19 +1,19 @@ -import * as PIXI from "pixi.js"; +import * as PIXI from 'pixi.js'; export default function createHexagon(width, height) { - const hex = new PIXI.Polygon([ - 0, - -height / 2, - width / 2, - -height / 4, - width / 2, - height / 4, - 0, - height / 2, - -width / 2, - height / 4, - -width / 2, - -height / 4, - ]); - return hex; + const hex = new PIXI.Polygon([ + 0, + -height / 2, + width / 2, + -height / 4, + width / 2, + height / 4, + 0, + height / 2, + -width / 2, + height / 4, + -width / 2, + -height / 4, + ]); + return hex; } diff --git a/bs-game-wip/src/utils/getSnappedMousePosition.ts b/bs-game-wip/src/utils/getSnappedMousePosition.ts index a4697119..8c1ac0e7 100644 --- a/bs-game-wip/src/utils/getSnappedMousePosition.ts +++ b/bs-game-wip/src/utils/getSnappedMousePosition.ts @@ -1,23 +1,16 @@ -import { - HEX_GRID_MARGIN, - HEX_HEIGHT, - HEX_WIDTH, - VERTICAL_OFFSET, -} from "@/lib/constants"; +import { HEX_GRID_MARGIN, HEX_HEIGHT, HEX_WIDTH, VERTICAL_OFFSET } from '@/lib/constants'; export default function getSnappedMousePosition(x: number, y: number) { - const snappedY = - Math.round(y / (HEX_HEIGHT - VERTICAL_OFFSET)) * - (HEX_HEIGHT - VERTICAL_OFFSET) + - HEX_GRID_MARGIN / 4; - let snappedX = 0; + const snappedY = + Math.round(y / (HEX_HEIGHT - VERTICAL_OFFSET)) * (HEX_HEIGHT - VERTICAL_OFFSET) + + HEX_GRID_MARGIN / 4; + let snappedX = 0; - if (snappedY % ((HEX_HEIGHT - VERTICAL_OFFSET) * 2) === HEX_GRID_MARGIN) { - snappedX = Math.round(x / HEX_WIDTH) * HEX_WIDTH; - } else { - snappedX = - Math.round((x + HEX_WIDTH / 2) / HEX_WIDTH) * HEX_WIDTH - HEX_WIDTH / 2; - } + if (snappedY % ((HEX_HEIGHT - VERTICAL_OFFSET) * 2) === HEX_GRID_MARGIN) { + snappedX = Math.round(x / HEX_WIDTH) * HEX_WIDTH; + } else { + snappedX = Math.round((x + HEX_WIDTH / 2) / HEX_WIDTH) * HEX_WIDTH - HEX_WIDTH / 2; + } - return [snappedX, snappedY]; + return [snappedX, snappedY]; } diff --git a/bs-game-wip/src/utils/handleMetaMaskError.ts b/bs-game-wip/src/utils/handleMetaMaskError.ts index 472ccd18..5455701d 100644 --- a/bs-game-wip/src/utils/handleMetaMaskError.ts +++ b/bs-game-wip/src/utils/handleMetaMaskError.ts @@ -1,30 +1,25 @@ -import { serializeError } from "@metamask/rpc-errors"; +import { serializeError } from '@metamask/rpc-errors'; export default function handleMetaMaskError(error) { - if (!error) { - return "Unknown error"; - } + if (!error) { + return 'Unknown error'; + } - if (!error.code) { - return error.message || error; - } + if (!error.code) { + return error.message || error; + } - const serializedError = serializeError(error); - const errorMessage = - serializedError?.data?.cause?.error?.data?.message || - serializedError?.data?.message; + const serializedError = serializeError(error); + const errorMessage = + serializedError?.data?.cause?.error?.data?.message || serializedError?.data?.message; - if (errorMessage?.includes("no signed viewing keys")) { - return `Missing viewing key. It looks like you may not have registered through the gateway`; - } + if (errorMessage?.includes('no signed viewing keys')) { + return `Missing viewing key. It looks like you may not have registered through the gateway`; + } - if ( - errorMessage?.includes( - "invalid viewing key signature for requested address", - ) - ) { - return `Invalid viewing key. Please ensure the connected account is also authenticated via the gateway here`; - } + if (errorMessage?.includes('invalid viewing key signature for requested address')) { + return `Invalid viewing key. Please ensure the connected account is also authenticated via the gateway here`; + } - return errorMessage; + return errorMessage; } diff --git a/bs-game-wip/todos.md b/bs-game-wip/todos.md index b0f1d6e0..140da10a 100644 --- a/bs-game-wip/todos.md +++ b/bs-game-wip/todos.md @@ -7,7 +7,7 @@ - ~~shot pending notification/overlay~~ - ~~offset grid to make edge cells entirely visible~~ - Make responsive for mobile? -- Prevent shots being placed on cells which are already hit +- Prevent shots being placed on cells which are already displayed as hit - minimap - map legend - look into code organization. Separate API calls from store methods. @@ -20,8 +20,11 @@ - ~~finish connection window~~ - move contract address var to env var ~~- Fetch game data on connection~~ -- improve x,y coords. +- improve x,y coords display - detect metamask disconnection +- ~~Update contract and UI as per discussion~~ +- Persist game state on page reloads +- empty game state Game mechanics notes From 3e81662339ea750e9f7000dda1edc328487ab3ec Mon Sep 17 00:00:00 2001 From: PeterB Date: Sat, 13 Jul 2024 22:25:00 +0100 Subject: [PATCH 05/22] WIP: Add some extra polish around guess states adding cursor effects and explosions --- .../BattleGrid/BattleGridCanvas.tsx | 20 ++- .../BattleGrid/BattleGridCursor.tsx | 37 +++--- .../BattleGrid/BattleGridExplosion.tsx | 58 +++++++++ .../BattleGridExplosionParticle.tsx | 47 +++++++ .../components/BattleGrid/BattleGridHits.tsx | 2 +- .../CellHighlight/CellHighlight.tsx | 62 ++++++++++ .../CellHighlight/CellHighlightParticle.tsx | 48 ++++++++ .../CellHighlight/CellHighlightStates.ts | 115 ++++++++++++++++++ .../ProcessingNotification.tsx | 2 - bs-game-wip/src/stores/battleGridStore.ts | 1 + bs-game-wip/src/stores/contractStore.ts | 10 +- bs-game-wip/todos.md | 9 +- 12 files changed, 372 insertions(+), 39 deletions(-) create mode 100644 bs-game-wip/src/components/BattleGrid/BattleGridExplosion.tsx create mode 100644 bs-game-wip/src/components/BattleGrid/BattleGridExplosionParticle.tsx create mode 100644 bs-game-wip/src/components/CellHighlight/CellHighlight.tsx create mode 100644 bs-game-wip/src/components/CellHighlight/CellHighlightParticle.tsx create mode 100644 bs-game-wip/src/components/CellHighlight/CellHighlightStates.ts diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx index d79494cb..6b8c2ba9 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx @@ -1,18 +1,16 @@ import { useMemo } from 'react'; -import { BloomFilter } from '@pixi/filter-bloom'; import { Container, Stage } from '@pixi/react'; import { HEX_GRID_MARGIN, HEX_HEIGHT, HEX_WIDTH } from '@/lib/constants'; import BattleGridCell from './BattleGridCell'; import BattleGridCursor from './BattleGridCursor'; +import BattleGridExplosion from './BattleGridExplosion'; import BattleGridHits from './BattleGridHits'; import BattleGridMisses from './BattleGridMisses'; export default function BattleGridCanvas({ grid, width, height }) { - const bloomFilter = new BloomFilter(3, 3, 2); - const gridCells = useMemo( () => grid.map(({ row, col, x, y }) => ( @@ -35,17 +33,15 @@ export default function BattleGridCanvas({ grid, width, height }) { options={{ backgroundAlpha: 0, antialias: true, - resolution: window.devicePixelRatio, + resolution: Math.floor(window.devicePixelRatio), + autoDensity: true, }} > - - {gridCells} - - - - - - + {gridCells} + + + + ); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx index bba28714..757593f3 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx @@ -1,11 +1,14 @@ -import React, { useRef } from 'react'; +import { useRef } from 'react'; -import { Graphics, useTick } from '@pixi/react'; +import { BloomFilter } from '@pixi/filter-bloom'; +import { Container, Graphics, useTick } from '@pixi/react'; -import { HEX_HEIGHT, HEX_WIDTH, VERTICAL_OFFSET, hexHitArea } from '@/lib/constants'; +import { hexHitArea } from '@/lib/constants'; import { useBattleGridStore } from '@/stores/battleGridStore'; import { useContractStore } from '@/stores/contractStore'; +import CellHighlight from '../CellHighlight/CellHighlight'; + export default function BattleGridCursor() { const [[x, y], hoveredCell] = useBattleGridStore((state) => [ state.mousePosition, @@ -17,6 +20,7 @@ export default function BattleGridCursor() { const scaleRef = useRef(1); const directionRef = useRef(1); const timeRef = useRef(0); + const bloomFilter = new BloomFilter(3, 3, 2); useTick((delta) => { if (shapeRef.current) { @@ -24,14 +28,14 @@ export default function BattleGridCursor() { const scaleSpeed = 0.1; const rotationSpeed = 1; const maxScale = 1; - const minScale = isLoadingState ? 0.7 : 0.9; + const minScale = isLoadingState && guessState !== 'ERROR' ? 0.5 : 0.95; const scaleRange = (maxScale - minScale) / 2; const midScale = (maxScale + minScale) / 2; const newScale = midScale + Math.sin(timeRef.current * scaleSpeed) * scaleRange; shapeRef.current.scale.set(newScale); - if (isLoadingState) { + if (isLoadingState && guessState !== 'ERROR') { shapeRef.current.rotation += timeRef.current * rotationSpeed; } else { shapeRef.current.rotation = 0; @@ -44,15 +48,18 @@ export default function BattleGridCursor() { } return ( - { - g.position.set(x, y); - g.clear(); - g.lineStyle(1, 0xffffff, 1); - g.drawPolygon(hexHitArea); - g.endFill(); - }} - /> + + { + g.position.set(x, y); + g.clear(); + g.lineStyle(1, guessState !== 'ERROR' ? 0xffffff : 0xdc2626, 1); + g.drawPolygon(hexHitArea); + g.endFill(); + }} + /> + + ); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridExplosion.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridExplosion.tsx new file mode 100644 index 00000000..cdb147d5 --- /dev/null +++ b/bs-game-wip/src/components/BattleGrid/BattleGridExplosion.tsx @@ -0,0 +1,58 @@ +import { useEffect, useState } from 'react'; + +import { BloomFilter } from '@pixi/filter-bloom'; +import { Container } from '@pixi/react'; + +import { useBattleGridStore } from '../../stores/battleGridStore.ts'; +import { useContractStore } from '../../stores/contractStore.ts'; +import BattleGridExplosionParticle from './BattleGridExplosionParticle'; + +export default function BattleGridExplosion({ particleCount, duration }) { + const [lastGuessCoords, guessState] = useContractStore((state) => [ + state.lastGuessCoords, + state.guessState, + ]); + const selectedCell = useBattleGridStore((state) => state.selectedCell); + const [particles, setParticles] = useState([]); + const [isAnimating, setIsAnimating] = useState(true); + const hide = !['HIT'].includes(guessState); + // const hide = !selectedCell + + useEffect(() => { + if (hide) return; + + const newParticles = []; + const { x, y } = selectedCell; + for (let i = 0; i < particleCount; i++) { + const angle = Math.random() * Math.PI * 2; + const speed = Math.random() * 5 + 2; + const rotationSpeed = (Math.random() - 0.5) * 0.1; // Random rotation speed + newParticles.push({ + x, + y, + vx: Math.cos(angle) * speed, + vy: Math.sin(angle) * speed, + rotationSpeed, + duration, + angle, + }); + } + setParticles(newParticles); + + const timeout = setTimeout(() => { + setIsAnimating(false); + }, duration); + + return () => clearTimeout(timeout); + }, [guessState, selectedCell, particleCount, duration]); + + if (hide) return null; + + return ( + + {particles.map((p, i) => ( + + ))} + + ); +} diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridExplosionParticle.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridExplosionParticle.tsx new file mode 100644 index 00000000..4e5bc8c6 --- /dev/null +++ b/bs-game-wip/src/components/BattleGrid/BattleGridExplosionParticle.tsx @@ -0,0 +1,47 @@ +import { useRef, useState } from 'react'; + +import { Graphics, Sprite, useTick } from '@pixi/react'; + +export default function BattleGridExplosionParticle({ + x, + y, + vx, + vy, + angle, + rotationSpeed, + duration, +}) { + const graphicRef = useRef(); + + const [age, setAge] = useState(0); + + const startHeight = 0; + const endHeight = 400; + + useTick((delta) => { + if (graphicRef.current) { + graphicRef.current.x += vx * age; + graphicRef.current.y += vy * age; + graphicRef.current.rotation = angle; + graphicRef.current.width = Math.min(startHeight + age * 2, endHeight); + setAge((prevAge) => prevAge + delta); + + const opacity = Math.max(1 - age / (duration / 5), 0); + graphicRef.current.alpha = opacity; + } + }); + + return ( + { + g.clear(); + g.beginFill(0xff8181); + g.drawRect(0, 0, 1, 1); // Draw a line instead of a particle + g.endFill(); + }} + x={x} + y={y} + /> + ); +} diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx index 517ae267..d93974c9 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import { useMemo } from 'react'; import { Container } from '@pixi/react'; diff --git a/bs-game-wip/src/components/CellHighlight/CellHighlight.tsx b/bs-game-wip/src/components/CellHighlight/CellHighlight.tsx new file mode 100644 index 00000000..d5bf114d --- /dev/null +++ b/bs-game-wip/src/components/CellHighlight/CellHighlight.tsx @@ -0,0 +1,62 @@ +import { useEffect, useState } from 'react'; + +import { Container } from '@pixi/react'; + +import { useBattleGridStore } from '@/stores/battleGridStore'; +import { useContractStore } from '@/stores/contractStore'; + +import CellHighlightParticle from './CellHighlightParticle'; +import { + DefaultHighlightState, + ErrorHighlightState, + HitHighlightState, + MissHighlightState, +} from './CellHighlightStates'; + +export default function CellHighlight({ duration }) { + const [lastGuessCoords, guessState] = useContractStore((state) => [ + state.lastGuessCoords, + state.guessState, + ]); + const selectedCell = useBattleGridStore((state) => state.selectedCell); + const [particles, setParticles] = useState([]); + const [isAnimating, setIsAnimating] = useState(true); + const hide = guessState === 'IDLE'; + + useEffect(() => { + if (hide) return; + let particles = []; + + if (guessState === 'STARTED') { + setParticles(DefaultHighlightState(selectedCell.x, selectedCell.y, duration)); + } + + if (guessState === 'ERROR') { + setParticles(ErrorHighlightState(selectedCell.x, selectedCell.y, duration)); + } + + if (guessState === 'MISS') { + setParticles(MissHighlightState(selectedCell.x, selectedCell.y, duration)); + } + + if (guessState === 'HIT') { + setParticles(HitHighlightState(selectedCell.x, selectedCell.y, duration)); + } + + const timeout = setTimeout(() => { + setIsAnimating(false); + }, duration); + + return () => clearTimeout(timeout); + }, [selectedCell, guessState, duration]); + + if (hide) return null; + + return ( + + {particles.map((p, i) => ( + + ))} + + ); +} diff --git a/bs-game-wip/src/components/CellHighlight/CellHighlightParticle.tsx b/bs-game-wip/src/components/CellHighlight/CellHighlightParticle.tsx new file mode 100644 index 00000000..5ee5966c --- /dev/null +++ b/bs-game-wip/src/components/CellHighlight/CellHighlightParticle.tsx @@ -0,0 +1,48 @@ +import { useRef, useState } from 'react'; + +import { Graphics, useTick } from '@pixi/react'; + +export default function CellhighLightParticle(p) { + const graphicRef = useRef(); + const [currentAngle, setCurrentAngle] = useState(p.angle); + const [age, setAge] = useState(0); + const [ageReset, setAgeReset] = useState(false); + + useTick((delta) => { + if (graphicRef.current) { + // Update the angle + if (p.ageReset && !ageReset) { + setAge(p.age); + setAgeReset(true); + } + + setCurrentAngle((prevAngle) => prevAngle + p.rotationSpeed * delta); + setAge((prevAge) => prevAge + delta); + + const radius = Math.max(p.startRadius - age * 6, p.endRadius); + const height = Math.max(p.startHeight - age * 1.3, p.endHeight); + const x = p.x + radius * Math.cos(currentAngle); + const y = p.y + radius * Math.sin(currentAngle); + + graphicRef.current.x = x; + graphicRef.current.y = y; + graphicRef.current.height = height; + graphicRef.current.rotation = currentAngle + Math.PI / 2; + + const opacity = Math.max(1 - age / p.duration, 0); + // graphicRef.current.alpha = opacity; + } + }); + + return ( + { + g.clear(); + g.beginFill(p.color); + g.drawRect(0, 0, 1, 10); // Draw a line instead of a particle + g.endFill(); + }} + /> + ); +} diff --git a/bs-game-wip/src/components/CellHighlight/CellHighlightStates.ts b/bs-game-wip/src/components/CellHighlight/CellHighlightStates.ts new file mode 100644 index 00000000..32765f14 --- /dev/null +++ b/bs-game-wip/src/components/CellHighlight/CellHighlightStates.ts @@ -0,0 +1,115 @@ +export function DefaultHighlightState(x, y, duration) { + const newParticles = []; + const particleCount = 24; + const angleIncrement = (Math.PI * 2) / particleCount; // Evenly distributed angles + for (let i = 0; i < particleCount; i++) { + const angle = angleIncrement * i; + const rotationSpeed = 0.02; // Random rotation speed + const startRadius = 400; + const endRadius = i % 4 === 0 ? 48 : 32; + const startHeight = 100; + const endHeight = i % 4 === 0 ? 30 : 10; + newParticles.push({ + x, + y, + angle, + rotationSpeed, + startRadius, + endRadius, + startHeight, + endHeight, + duration, + color: 0xffffff, + }); + } + + return newParticles; +} + +export function ErrorHighlightState(x, y, duration) { + const newParticles = []; + const particleCount = 24; + const angleIncrement = (Math.PI * 2) / particleCount; // Evenly distributed angles + for (let i = 0; i < particleCount; i++) { + const angle = angleIncrement * i; + const rotationSpeed = 0.02; // Random rotation speed + const startRadius = 400; + const endRadius = 32; + const startHeight = 100; + const endHeight = 2; + newParticles.push({ + x, + y, + angle, + rotationSpeed, + startRadius, + endRadius, + startHeight, + endHeight, + duration, + color: 0xdc2626, + }); + } + + return newParticles; +} + +export function MissHighlightState(x, y, duration) { + const newParticles = []; + const particleCount = 24; + const angleIncrement = (Math.PI * 2) / particleCount; // Evenly distributed angles + for (let i = 0; i < particleCount; i++) { + const angle = angleIncrement * i; + const rotationSpeed = 0; // Random rotation speed + const startRadius = 400; + const endRadius = -800; + const startHeight = 100; + const endHeight = 10; + newParticles.push({ + x, + y, + angle, + rotationSpeed, + startRadius, + endRadius, + startHeight, + endHeight, + duration, + color: 0xffffff, + age: 60, + ageReset: true, + }); + } + + return newParticles; +} + +export function HitHighlightState(x, y, duration) { + const newParticles = []; + const particleCount = 24; + const angleIncrement = (Math.PI * 2) / particleCount; // Evenly distributed angles + for (let i = 0; i < particleCount; i++) { + const angle = angleIncrement * i; + const rotationSpeed = 0; // Random rotation speed + const startRadius = 400; + const endRadius = -800; + const startHeight = 100; + const endHeight = 80; + newParticles.push({ + x, + y, + angle, + rotationSpeed, + startRadius, + endRadius, + startHeight, + endHeight, + duration, + color: 0xe16f6f, + age: 50, + ageReset: true, + }); + } + + return newParticles; +} diff --git a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx index ab3fcecc..ca047ac8 100644 --- a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx +++ b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx @@ -88,8 +88,6 @@ export default function ProcessingNotification() { ); } - console.log(guessState); - const variants = { initial: { opacity: 0, y: -20 }, animate: { opacity: 1, y: 0 }, diff --git a/bs-game-wip/src/stores/battleGridStore.ts b/bs-game-wip/src/stores/battleGridStore.ts index 74e1dda4..2df374bb 100644 --- a/bs-game-wip/src/stores/battleGridStore.ts +++ b/bs-game-wip/src/stores/battleGridStore.ts @@ -47,5 +47,6 @@ export const useBattleGridStore = create((set, get) => ({ set({ selectedCell }); const submitGuess = useContractStore.getState().submitGuess; submitGuess(selectedCell.col, selectedCell.row); + // useContractStore.setState({lastGuessCoords: [selectedCell.x, selectedCell.y]}); }, })); diff --git a/bs-game-wip/src/stores/contractStore.ts b/bs-game-wip/src/stores/contractStore.ts index b8525301..d7b76466 100644 --- a/bs-game-wip/src/stores/contractStore.ts +++ b/bs-game-wip/src/stores/contractStore.ts @@ -18,6 +18,7 @@ export interface IContractStore { gameOver: boolean; prizePool: string; guessState: GuessState; + lastGuessCoords: number[] | null; lastError: string; submitGuess: (x: number, y: number) => Promise; resetGuessState: () => void; @@ -25,6 +26,7 @@ export interface IContractStore { setHits: (h: any[]) => void; setMisses: (m: any[]) => void; setGraveyard: (g: any[]) => void; + setLastGuessCoords: (g: any) => void; } export type GuessState = @@ -44,6 +46,7 @@ export const useContractStore = create((set, get) => ({ prizePool: '', guessState: 'IDLE' as GuessState, lastError: '', + lastGuessCoords: null, submitGuess: async (x: number, y: number) => { const signer = useWalletStore.getState().signer; @@ -71,7 +74,7 @@ export const useContractStore = create((set, get) => ({ set({ guessState: 'TRANSACTION_SUCCESS' }); const receipt = await submitTx.wait(); addNewMessage('Issued Guess tx: ' + receipt.hash); - const { allHits, allMisses, graveyard, prizePool, success } = + const { allHits, allMisses, graveyard, prizePool, success, guessedCoords } = receipt.logs[0].args.toObject(); console.log(receipt, receipt.logs[0].args.toObject()); @@ -80,6 +83,7 @@ export const useContractStore = create((set, get) => ({ get().setGraveyard(graveyard); get().setPrizePool(prizePool); set({ guessState: success ? 'HIT' : 'MISS' }); + get().setLastGuessCoords(guessedCoords); } catch (e) { set({ guessState: 'ERROR' }); if (e.reason) { @@ -169,4 +173,8 @@ export const useContractStore = create((set, get) => ({ ); set({ prizePool: formatUnits(prizePool, 'ether') }); }, + + setLastGuessCoords: (coords: any) => { + set({ lastGuessCoords: [parseInt(coords[0]), parseInt(coords[1])] }); + }, })); diff --git a/bs-game-wip/todos.md b/bs-game-wip/todos.md index 140da10a..7138fa09 100644 --- a/bs-game-wip/todos.md +++ b/bs-game-wip/todos.md @@ -10,7 +10,6 @@ - Prevent shots being placed on cells which are already displayed as hit - minimap - map legend -- look into code organization. Separate API calls from store methods. - ~~Animate message log entries~~ - ~~animate hud windows~~ - highlight errors in message log @@ -25,10 +24,4 @@ - ~~Update contract and UI as per discussion~~ - Persist game state on page reloads - empty game state - - -Game mechanics notes --Seeing all hits/misses before playing gives teh first mover a disadvantage. Result, no one makes the first move --not being able to see the game state until after placing a bet makes interacting with an -almost complete board a frustrating experience. -- perhaps a portion of the pool can be received after a ship is sunk \ No newline at end of file +- modify UI and contract to inform user if ship was sunk on hit/guess From 2409efde37be891841677fa65e303b81a8b99c34 Mon Sep 17 00:00:00 2001 From: PeterB Date: Sat, 13 Jul 2024 22:57:26 +0100 Subject: [PATCH 06/22] WIP: Add Unknown game state to components. Fix layout bug in the HUD window footer. --- .../CellsRemaining/CellsRemaining.tsx | 8 ++-- .../src/components/Graveyard/Graveyard.tsx | 40 +++++++++++-------- .../src/components/HudWindow/HudWindow.tsx | 4 +- .../src/components/PrizePool/PrizePool.tsx | 3 +- .../ProcessingNotification.tsx | 2 +- bs-game-wip/src/stores/contractStore.ts | 4 +- 6 files changed, 34 insertions(+), 27 deletions(-) diff --git a/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx index 45405658..c4e38b57 100644 --- a/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx +++ b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx @@ -8,15 +8,15 @@ export default function CellsRemaining() { const isConnected = useWalletStore((state) => state.isConnected); const numberOfRevealedCells = misses.length + hits.length; const totalCells = ROWS * COLS; - + const unknownState = (misses.length + hits.length) === 0 const Disconnected =

System Offline

; const Footer = (
-

- {totalCells - numberOfRevealedCells}/{totalCells} +

+ {unknownState ? "?????" : totalCells - numberOfRevealedCells}/{totalCells}

-

Cells remaining

+

Cells remaining

); diff --git a/bs-game-wip/src/components/Graveyard/Graveyard.tsx b/bs-game-wip/src/components/Graveyard/Graveyard.tsx index 5fccbebf..66797d19 100644 --- a/bs-game-wip/src/components/Graveyard/Graveyard.tsx +++ b/bs-game-wip/src/components/Graveyard/Graveyard.tsx @@ -9,15 +9,17 @@ export default function Graveyard() { const isConnected = useWalletStore((state) => state.isConnected); const sunkShipTotal = graveyard.reduce((nxt, cur) => (cur ? nxt : nxt + 1), 0); const fleetHealth = (sunkShipTotal / graveyard.length) * 100; + const unknownState = graveyard.length === 0; + const Footer = (
-
Fleet Strength
-

{fleetHealth.toFixed(1)}% PERC

-

- {sunkShipTotal}/{graveyard.length} -

-
Ships remaining
+

Fleet Strength

+

{unknownState ? '???' : fleetHealth.toFixed(1)}% PERC

+

+ {unknownState ? '???' : sunkShipTotal}/{unknownState ? '???' : graveyard.length} +

+

Ships remaining

); @@ -28,17 +30,21 @@ export default function Graveyard() { footerContent={Footer} closedContent={

System Offline

} > -
- {graveyard.map((ship, i) => ( - Logo - ))} -
+ {unknownState ? ( +

No Data

+ ) : ( +
+ {graveyard.map((ship, i) => ( + Logo + ))} +
+ )} ); } diff --git a/bs-game-wip/src/components/HudWindow/HudWindow.tsx b/bs-game-wip/src/components/HudWindow/HudWindow.tsx index 07975a8f..14fb2bd6 100644 --- a/bs-game-wip/src/components/HudWindow/HudWindow.tsx +++ b/bs-game-wip/src/components/HudWindow/HudWindow.tsx @@ -51,8 +51,8 @@ export default function HudWindow({ }; const footerAnimation = { - initial: { opacity: 0, width: 0, right: 0, left: 'auto' }, - animate: { opacity: 1, width: '100%', right: 0, left: 'auto' }, + initial: { opacity: 0, width: 0,}, + animate: { opacity: 1, width: '100%'}, exit: { opacity: 0 }, transition: { delay: 1, duration: 1 * speed }, }; diff --git a/bs-game-wip/src/components/PrizePool/PrizePool.tsx b/bs-game-wip/src/components/PrizePool/PrizePool.tsx index 842cceab..c6c361d0 100644 --- a/bs-game-wip/src/components/PrizePool/PrizePool.tsx +++ b/bs-game-wip/src/components/PrizePool/PrizePool.tsx @@ -5,6 +5,7 @@ import { useWalletStore } from '@/stores/walletStore'; export default function PrizePool() { const [prizePool] = useContractStore((state) => [state.prizePool]); const isConnected = useWalletStore((state) => state.isConnected); + const unknownState = prizePool === ''; return ( System Offline

} >

- {prizePool} ETH + {unknownState ? "???.????" : prizePool} ETH

); diff --git a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx index ca047ac8..dd6edb50 100644 --- a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx +++ b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx @@ -64,7 +64,7 @@ export default function ProcessingNotification() { footerContent =
{CloseButton}
; bodyContent = (
-

Miss detected

+

Miss detected

Shot failed to find target

diff --git a/bs-game-wip/src/stores/contractStore.ts b/bs-game-wip/src/stores/contractStore.ts index d7b76466..e951473b 100644 --- a/bs-game-wip/src/stores/contractStore.ts +++ b/bs-game-wip/src/stores/contractStore.ts @@ -41,7 +41,7 @@ export type GuessState = export const useContractStore = create((set, get) => ({ hits: [], misses: [], - graveyard: new Array(TOTAL_SHIPS).fill(false), + graveyard: [], gameOver: false, prizePool: '', guessState: 'IDLE' as GuessState, @@ -108,7 +108,7 @@ export const useContractStore = create((set, get) => ({ setGraveyard: (latestGraveyard: any[]) => { const addNewMessage = useMessageStore.getState().addNewMessage; - const graveyardHasUpdated = get().graveyard.some( + const graveyardHasUpdated = get().graveyard.length !== latestGraveyard.length|| get().graveyard.some( (value, index) => value !== latestGraveyard[index] ); From de93b114e82dc6986c7983356217431a14799fb8 Mon Sep 17 00:00:00 2001 From: PeterB Date: Sat, 13 Jul 2024 23:41:38 +0100 Subject: [PATCH 07/22] WIP: Persist data between page reloads by saving state to local storage. --- bs-game-wip/src/stores/battleGridStore.ts | 7 ++++++- bs-game-wip/src/stores/contractStore.ts | 14 +++++++++----- bs-game-wip/src/stores/messageStore.ts | 21 +-------------------- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/bs-game-wip/src/stores/battleGridStore.ts b/bs-game-wip/src/stores/battleGridStore.ts index 2df374bb..457b4dc5 100644 --- a/bs-game-wip/src/stores/battleGridStore.ts +++ b/bs-game-wip/src/stores/battleGridStore.ts @@ -4,8 +4,9 @@ import getCellXY from '@/helpers/getCellXY'; import getSnappedMousePosition from '@/utils/getSnappedMousePosition'; import { useContractStore } from './contractStore'; +import {createJSONStorage, persist} from "zustand/middleware"; -export const useBattleGridStore = create((set, get) => ({ +export const useBattleGridStore = create(persist((set, get) => ({ grid: [], missedCells: [], hitCells: [], @@ -49,4 +50,8 @@ export const useBattleGridStore = create((set, get) => ({ submitGuess(selectedCell.col, selectedCell.row); // useContractStore.setState({lastGuessCoords: [selectedCell.x, selectedCell.y]}); }, +}), { + name: 'battle-grid-storage', + storage: createJSONStorage(() => localStorage), + partialize: (state) => ({ hitCells: state.hitCells, missedCells: state.missedCells }) })); diff --git a/bs-game-wip/src/stores/contractStore.ts b/bs-game-wip/src/stores/contractStore.ts index e951473b..2e21e0f4 100644 --- a/bs-game-wip/src/stores/contractStore.ts +++ b/bs-game-wip/src/stores/contractStore.ts @@ -1,10 +1,10 @@ import { ethers, formatUnits } from 'ethers'; import { create } from 'zustand'; +import {createJSONStorage, persist} from 'zustand/middleware'; import ContractAddress from '@/assets/contract/address.json'; import BattleshipGameJson from '@/assets/contract/artifacts/contracts/BattleshipGame.sol/BattleshipGame.json'; import getCellXY from '@/helpers/getCellXY'; -import { TOTAL_SHIPS } from '@/lib/constants'; import { MOVE_FEE } from '@/lib/constants'; import { useMessageStore } from '@/stores/messageStore'; import { useWalletStore } from '@/stores/walletStore'; @@ -38,7 +38,7 @@ export type GuessState = | 'HIT' | 'MISS'; -export const useContractStore = create((set, get) => ({ +export const useContractStore = create(persist((set, get) => ({ hits: [], misses: [], graveyard: [], @@ -108,9 +108,9 @@ export const useContractStore = create((set, get) => ({ setGraveyard: (latestGraveyard: any[]) => { const addNewMessage = useMessageStore.getState().addNewMessage; - const graveyardHasUpdated = get().graveyard.length !== latestGraveyard.length|| get().graveyard.some( - (value, index) => value !== latestGraveyard[index] - ); + const graveyardHasUpdated = + get().graveyard.length !== latestGraveyard.length || + get().graveyard.some((value, index) => value !== latestGraveyard[index]); if (graveyardHasUpdated) { set({ graveyard: latestGraveyard }); @@ -177,4 +177,8 @@ export const useContractStore = create((set, get) => ({ setLastGuessCoords: (coords: any) => { set({ lastGuessCoords: [parseInt(coords[0]), parseInt(coords[1])] }); }, +}), { + name: 'contract-storage', + storage: createJSONStorage(() => localStorage), + partialize: (state) => ({ prizePool: state.prizePool, graveyard: state.graveyard }) })); diff --git a/bs-game-wip/src/stores/messageStore.ts b/bs-game-wip/src/stores/messageStore.ts index fe568d49..21fb1b8f 100644 --- a/bs-game-wip/src/stores/messageStore.ts +++ b/bs-game-wip/src/stores/messageStore.ts @@ -8,7 +8,7 @@ export interface IMessageStore { type MessageType = 'INFO' | 'ERROR' | 'SUCCESS'; -export const useMessageStore = create((set) => ({ +export const useMessageStore = create((set) => ({ messages: [], errorMessage: '', @@ -26,22 +26,3 @@ export const useMessageStore = create((set) => ({ }, })); -// -// create({ - -// -// setNewMessage: (text) => set({ -// -// return ({messages: []}) -// this.messages.push({ - -// }) -// }), -// addErrorMessage(text) { -// this.errorMessage = text -// }, -// clearErrorMessage() { -// this.errorMessage = '' -// } -// } -// }) From 00880d044064341941291a45fc293ff893e1604b Mon Sep 17 00:00:00 2001 From: PeterB Date: Mon, 15 Jul 2024 00:17:06 +0100 Subject: [PATCH 08/22] WIP: Added unknown state. Added battle store types. Added additional helper functions. --- .../BattleGrid/BattleGridCanvas.tsx | 8 +- .../components/BattleGrid/BattleGridCell.tsx | 18 +- .../BattleGrid/BattleGridCursor.tsx | 5 +- .../BattleGrid/BattleGridExplosion.tsx | 21 +- .../BattleGridExplosionParticle.tsx | 4 +- .../BattleGrid/BattleGridMisses.tsx | 15 +- .../BattleGrid/BattleGridUnknowns.tsx | 32 ++ .../CellHighlight/CellHighlight.tsx | 16 +- .../CellHighlight/CellHighlightStates.ts | 6 +- .../CellsRemaining/CellsRemaining.tsx | 12 +- .../src/components/Graveyard/Graveyard.tsx | 5 +- .../src/components/HudWindow/HudWindow.tsx | 4 +- .../src/components/PrizePool/PrizePool.tsx | 2 +- .../src/{utils => helpers}/createHexagon.ts | 0 .../src/helpers/getCellCoordsFromXY.ts | 11 + bs-game-wip/src/helpers/getCellXY.ts | 2 +- bs-game-wip/src/helpers/getIndexFromCoords.ts | 5 + .../getSnappedMousePosition.ts | 0 .../{utils => helpers}/handleMetaMaskError.ts | 0 bs-game-wip/src/lib/constants.ts | 2 +- bs-game-wip/src/stores/battleGridStore.ts | 182 ++++++++--- bs-game-wip/src/stores/contractStore.ts | 298 +++++++++--------- bs-game-wip/src/stores/messageStore.ts | 1 - bs-game-wip/todos.md | 7 +- 24 files changed, 390 insertions(+), 266 deletions(-) create mode 100644 bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx rename bs-game-wip/src/{utils => helpers}/createHexagon.ts (100%) create mode 100644 bs-game-wip/src/helpers/getCellCoordsFromXY.ts create mode 100644 bs-game-wip/src/helpers/getIndexFromCoords.ts rename bs-game-wip/src/{utils => helpers}/getSnappedMousePosition.ts (100%) rename bs-game-wip/src/{utils => helpers}/handleMetaMaskError.ts (100%) diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx index 6b8c2ba9..c50f525b 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx @@ -2,6 +2,7 @@ import { useMemo } from 'react'; import { Container, Stage } from '@pixi/react'; +import CellHighlight from '@/components/CellHighlight/CellHighlight'; import { HEX_GRID_MARGIN, HEX_HEIGHT, HEX_WIDTH } from '@/lib/constants'; import BattleGridCell from './BattleGridCell'; @@ -9,6 +10,7 @@ import BattleGridCursor from './BattleGridCursor'; import BattleGridExplosion from './BattleGridExplosion'; import BattleGridHits from './BattleGridHits'; import BattleGridMisses from './BattleGridMisses'; +import BattleGridUnknowns from './BattleGridUnknowns'; export default function BattleGridCanvas({ grid, width, height }) { const gridCells = useMemo( @@ -33,14 +35,16 @@ export default function BattleGridCanvas({ grid, width, height }) { options={{ backgroundAlpha: 0, antialias: true, - resolution: Math.floor(window.devicePixelRatio), + resolution: 2, autoDensity: true, }} > {gridCells} + - + + ); diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx index 0ae385a3..31a4d9b8 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx @@ -1,7 +1,12 @@ -import { Graphics } from '@pixi/react'; +import { Graphics, Text } from '@pixi/react'; import { hexHitArea } from '@/lib/constants'; +const textStyle = { + fill: '#ffffff', + fontSize: 14, +}; + export default function BattleGridCell({ col, row, x, y, state }) { return ( <> @@ -12,7 +17,6 @@ export default function BattleGridCell({ col, row, x, y, state }) { g.clear(); if (state === 'UNTOUCHED') { - g.beginFill(0xd9d9d9, 0); g.lineStyle(1, 0x464646, 1); } if (state === 'MISSED') { @@ -23,11 +27,19 @@ export default function BattleGridCell({ col, row, x, y, state }) { g.beginFill(0xe16f6f, 1); g.lineStyle(1, 0xe16f6f, 1); } + if (state === 'UNKNOWN') { + g.beginFill(0xffffff, 0.05); + g.lineStyle(1, 0xffffff, 0.3); + } g.drawPolygon(hexHitArea); g.endFill(); }} - /> + > + {state === 'UNKNOWN' && ( + + )} + ); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx index 757593f3..554e1496 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx @@ -7,8 +7,6 @@ import { hexHitArea } from '@/lib/constants'; import { useBattleGridStore } from '@/stores/battleGridStore'; import { useContractStore } from '@/stores/contractStore'; -import CellHighlight from '../CellHighlight/CellHighlight'; - export default function BattleGridCursor() { const [[x, y], hoveredCell] = useBattleGridStore((state) => [ state.mousePosition, @@ -48,7 +46,7 @@ export default function BattleGridCursor() { } return ( - + { @@ -59,7 +57,6 @@ export default function BattleGridCursor() { g.endFill(); }} /> - ); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridExplosion.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridExplosion.tsx index cdb147d5..ba89d907 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridExplosion.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridExplosion.tsx @@ -1,22 +1,17 @@ import { useEffect, useState } from 'react'; -import { BloomFilter } from '@pixi/filter-bloom'; import { Container } from '@pixi/react'; -import { useBattleGridStore } from '../../stores/battleGridStore.ts'; -import { useContractStore } from '../../stores/contractStore.ts'; +import { useBattleGridStore } from '@/stores/battleGridStore'; +import { useContractStore } from '@/stores/contractStore'; + import BattleGridExplosionParticle from './BattleGridExplosionParticle'; export default function BattleGridExplosion({ particleCount, duration }) { - const [lastGuessCoords, guessState] = useContractStore((state) => [ - state.lastGuessCoords, - state.guessState, - ]); + const guessState = useContractStore((state) => state.guessState); const selectedCell = useBattleGridStore((state) => state.selectedCell); const [particles, setParticles] = useState([]); - const [isAnimating, setIsAnimating] = useState(true); - const hide = !['HIT'].includes(guessState); - // const hide = !selectedCell + const hide = guessState !== 'HIT'; useEffect(() => { if (hide) return; @@ -38,12 +33,6 @@ export default function BattleGridExplosion({ particleCount, duration }) { }); } setParticles(newParticles); - - const timeout = setTimeout(() => { - setIsAnimating(false); - }, duration); - - return () => clearTimeout(timeout); }, [guessState, selectedCell, particleCount, duration]); if (hide) return null; diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridExplosionParticle.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridExplosionParticle.tsx index 4e5bc8c6..4647dda9 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridExplosionParticle.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridExplosionParticle.tsx @@ -1,6 +1,6 @@ import { useRef, useState } from 'react'; -import { Graphics, Sprite, useTick } from '@pixi/react'; +import { Graphics, useTick } from '@pixi/react'; export default function BattleGridExplosionParticle({ x, @@ -12,9 +12,7 @@ export default function BattleGridExplosionParticle({ duration, }) { const graphicRef = useRef(); - const [age, setAge] = useState(0); - const startHeight = 0; const endHeight = 400; diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx index 0ed0b56c..2a6bf9eb 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import { useMemo } from 'react'; import { Container } from '@pixi/react'; @@ -24,18 +24,5 @@ export default function BattleGridMisses() { [missedCells] ); - // useEffect(() => { - // let interval; - // - // if (isConnected) { - // getAllMisses(); - // interval = setInterval(() => { - // getAllMisses(); - // }, QUERY_INTERVAL_MS); - // } - // - // return () => clearInterval(interval); - // }, [isConnected]); - return {revealedGridCells}; } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx new file mode 100644 index 00000000..a48736ed --- /dev/null +++ b/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx @@ -0,0 +1,32 @@ +import { useMemo } from 'react'; + +import { Container } from '@pixi/react'; + +import { useBattleGridStore } from '@/stores/battleGridStore'; + +import BattleGridCell from './BattleGridCell'; + +export default function BattleGridUnknowns() { + const unknownCells = useBattleGridStore((state) => state.unknownCells); + + const revealedGridCells = useMemo( + () => + unknownCells.map(({ row, col, x, y }) => ( + + )), + [unknownCells] + ); + + if (unknownCells.length === 0) { + return null; + } + + return {revealedGridCells}; +} diff --git a/bs-game-wip/src/components/CellHighlight/CellHighlight.tsx b/bs-game-wip/src/components/CellHighlight/CellHighlight.tsx index d5bf114d..eb240ab2 100644 --- a/bs-game-wip/src/components/CellHighlight/CellHighlight.tsx +++ b/bs-game-wip/src/components/CellHighlight/CellHighlight.tsx @@ -13,19 +13,15 @@ import { MissHighlightState, } from './CellHighlightStates'; -export default function CellHighlight({ duration }) { - const [lastGuessCoords, guessState] = useContractStore((state) => [ - state.lastGuessCoords, - state.guessState, - ]); +export default function CellHighlight() { + const guessState = useContractStore((state) => state.guessState); const selectedCell = useBattleGridStore((state) => state.selectedCell); const [particles, setParticles] = useState([]); - const [isAnimating, setIsAnimating] = useState(true); const hide = guessState === 'IDLE'; + const duration = 1000; useEffect(() => { if (hide) return; - let particles = []; if (guessState === 'STARTED') { setParticles(DefaultHighlightState(selectedCell.x, selectedCell.y, duration)); @@ -42,12 +38,6 @@ export default function CellHighlight({ duration }) { if (guessState === 'HIT') { setParticles(HitHighlightState(selectedCell.x, selectedCell.y, duration)); } - - const timeout = setTimeout(() => { - setIsAnimating(false); - }, duration); - - return () => clearTimeout(timeout); }, [selectedCell, guessState, duration]); if (hide) return null; diff --git a/bs-game-wip/src/components/CellHighlight/CellHighlightStates.ts b/bs-game-wip/src/components/CellHighlight/CellHighlightStates.ts index 32765f14..5d9ff9b2 100644 --- a/bs-game-wip/src/components/CellHighlight/CellHighlightStates.ts +++ b/bs-game-wip/src/components/CellHighlight/CellHighlightStates.ts @@ -93,8 +93,8 @@ export function HitHighlightState(x, y, duration) { const rotationSpeed = 0; // Random rotation speed const startRadius = 400; const endRadius = -800; - const startHeight = 100; - const endHeight = 80; + const startHeight = 30; + const endHeight = 10; newParticles.push({ x, y, @@ -105,7 +105,7 @@ export function HitHighlightState(x, y, duration) { startHeight, endHeight, duration, - color: 0xe16f6f, + color: 0xffffff, age: 50, ageReset: true, }); diff --git a/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx index c4e38b57..8150a84c 100644 --- a/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx +++ b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx @@ -1,20 +1,24 @@ +import { useShallow } from 'zustand/react/shallow'; + import HudWindow from '@/components/HudWindow/HudWindow'; import { COLS, ROWS } from '@/lib/constants'; -import { useContractStore } from '@/stores/contractStore'; +import { useBattleGridStore } from '@/stores/battleGridStore'; import { useWalletStore } from '@/stores/walletStore'; export default function CellsRemaining() { - const [misses, hits] = useContractStore((state) => [state.misses, state.hits]); + const [misses, hits] = useBattleGridStore( + useShallow((state) => [state.missedCells, state.hitCells]) + ); const isConnected = useWalletStore((state) => state.isConnected); const numberOfRevealedCells = misses.length + hits.length; const totalCells = ROWS * COLS; - const unknownState = (misses.length + hits.length) === 0 + const unknownState = misses.length + hits.length === 0; const Disconnected =

System Offline

; const Footer = (

- {unknownState ? "?????" : totalCells - numberOfRevealedCells}/{totalCells} + {unknownState ? '?????' : totalCells - numberOfRevealedCells}/{totalCells}

Cells remaining

diff --git a/bs-game-wip/src/components/Graveyard/Graveyard.tsx b/bs-game-wip/src/components/Graveyard/Graveyard.tsx index 66797d19..f0d03ade 100644 --- a/bs-game-wip/src/components/Graveyard/Graveyard.tsx +++ b/bs-game-wip/src/components/Graveyard/Graveyard.tsx @@ -11,11 +11,12 @@ export default function Graveyard() { const fleetHealth = (sunkShipTotal / graveyard.length) * 100; const unknownState = graveyard.length === 0; - const Footer = (

Fleet Strength

-

{unknownState ? '???' : fleetHealth.toFixed(1)}% PERC

+

+ {unknownState ? '???' : fleetHealth.toFixed(1)}% PERC +

{unknownState ? '???' : sunkShipTotal}/{unknownState ? '???' : graveyard.length}

diff --git a/bs-game-wip/src/components/HudWindow/HudWindow.tsx b/bs-game-wip/src/components/HudWindow/HudWindow.tsx index 14fb2bd6..f79205ff 100644 --- a/bs-game-wip/src/components/HudWindow/HudWindow.tsx +++ b/bs-game-wip/src/components/HudWindow/HudWindow.tsx @@ -51,8 +51,8 @@ export default function HudWindow({ }; const footerAnimation = { - initial: { opacity: 0, width: 0,}, - animate: { opacity: 1, width: '100%'}, + initial: { opacity: 0, width: 0 }, + animate: { opacity: 1, width: '100%' }, exit: { opacity: 0 }, transition: { delay: 1, duration: 1 * speed }, }; diff --git a/bs-game-wip/src/components/PrizePool/PrizePool.tsx b/bs-game-wip/src/components/PrizePool/PrizePool.tsx index c6c361d0..8475ca35 100644 --- a/bs-game-wip/src/components/PrizePool/PrizePool.tsx +++ b/bs-game-wip/src/components/PrizePool/PrizePool.tsx @@ -14,7 +14,7 @@ export default function PrizePool() { closedContent={

System Offline

} >

- {unknownState ? "???.????" : prizePool} ETH + {unknownState ? '???.????' : prizePool} ETH

); diff --git a/bs-game-wip/src/utils/createHexagon.ts b/bs-game-wip/src/helpers/createHexagon.ts similarity index 100% rename from bs-game-wip/src/utils/createHexagon.ts rename to bs-game-wip/src/helpers/createHexagon.ts diff --git a/bs-game-wip/src/helpers/getCellCoordsFromXY.ts b/bs-game-wip/src/helpers/getCellCoordsFromXY.ts new file mode 100644 index 00000000..6453e9bd --- /dev/null +++ b/bs-game-wip/src/helpers/getCellCoordsFromXY.ts @@ -0,0 +1,11 @@ +import { HEX_GRID_MARGIN, HEX_HEIGHT, HEX_WIDTH, VERTICAL_OFFSET } from '@/lib/constants'; + +import getSnappedMousePosition from './getSnappedMousePosition'; + +export default function getCellCoordsFromXY(x: number, y: number) { + const [sx, sy] = getSnappedMousePosition(x, y); + const row = (sy - HEX_GRID_MARGIN) / (HEX_HEIGHT - VERTICAL_OFFSET); + const col = (sx - (HEX_GRID_MARGIN + (row % 2) * (HEX_WIDTH / 2))) / HEX_WIDTH; + + return [col, row]; +} diff --git a/bs-game-wip/src/helpers/getCellXY.ts b/bs-game-wip/src/helpers/getCellXY.ts index 6b356926..44fbddfb 100644 --- a/bs-game-wip/src/helpers/getCellXY.ts +++ b/bs-game-wip/src/helpers/getCellXY.ts @@ -4,7 +4,7 @@ import { HEX_WIDTH, HORIZONTAL_OFFSET, VERTICAL_OFFSET, -} from '../lib/constants'; +} from '@/lib/constants'; export default function getCellXY(col: number, row: number) { const x = diff --git a/bs-game-wip/src/helpers/getIndexFromCoords.ts b/bs-game-wip/src/helpers/getIndexFromCoords.ts new file mode 100644 index 00000000..95476172 --- /dev/null +++ b/bs-game-wip/src/helpers/getIndexFromCoords.ts @@ -0,0 +1,5 @@ +import { COLS } from '@/lib/constants'; + +export default function getIndexFromCoords(x: number, y: number) { + return y * COLS + x; +} diff --git a/bs-game-wip/src/utils/getSnappedMousePosition.ts b/bs-game-wip/src/helpers/getSnappedMousePosition.ts similarity index 100% rename from bs-game-wip/src/utils/getSnappedMousePosition.ts rename to bs-game-wip/src/helpers/getSnappedMousePosition.ts diff --git a/bs-game-wip/src/utils/handleMetaMaskError.ts b/bs-game-wip/src/helpers/handleMetaMaskError.ts similarity index 100% rename from bs-game-wip/src/utils/handleMetaMaskError.ts rename to bs-game-wip/src/helpers/handleMetaMaskError.ts diff --git a/bs-game-wip/src/lib/constants.ts b/bs-game-wip/src/lib/constants.ts index 65bf6336..dd6591c9 100644 --- a/bs-game-wip/src/lib/constants.ts +++ b/bs-game-wip/src/lib/constants.ts @@ -1,5 +1,5 @@ +import createHexagon from '@/helpers/createHexagon'; import formatAddress from '@/helpers/formatAddress'; -import createHexagon from '@/utils/createHexagon'; export const MOVE_FEE: string = '0.0443'; export const TOTAL_SHIPS: number = 249; diff --git a/bs-game-wip/src/stores/battleGridStore.ts b/bs-game-wip/src/stores/battleGridStore.ts index 457b4dc5..69dc18ea 100644 --- a/bs-game-wip/src/stores/battleGridStore.ts +++ b/bs-game-wip/src/stores/battleGridStore.ts @@ -1,57 +1,139 @@ -import { create } from 'zustand'; +import { StateCreator, create } from 'zustand'; +import { createJSONStorage, persist } from 'zustand/middleware'; +import getCellCoordsFromXY from '@/helpers/getCellCoordsFromXY'; import getCellXY from '@/helpers/getCellXY'; -import getSnappedMousePosition from '@/utils/getSnappedMousePosition'; +import getIndexFromCoords from '@/helpers/getIndexFromCoords'; import { useContractStore } from './contractStore'; -import {createJSONStorage, persist} from "zustand/middleware"; - -export const useBattleGridStore = create(persist((set, get) => ({ - grid: [], - missedCells: [], - hitCells: [], - hoveredCell: null, - scrollPosition: [0, 0], - mousePosition: [0, 0], - selectedCell: null, - - initGrid: (height: number, width: number) => - set(() => { - const hexagons = []; - for (let row = 0; row < height; row++) { - for (let col = 0; col < width; col++) { - const [x, y] = getCellXY(col, row); - hexagons.push({ row, col, x, y, revealed: false }); + +export type Cell = { + row: number; + col: number; + x: number; + y: number; +}; + +export type RevealedCellType = 'HIT' | 'MISS' | 'UNKNOWN'; + +export type BattleGridState = { + grid: Cell[]; + missedCells: Cell[]; + hitCells: Cell[]; + unknownCells: Cell[]; + revealedCells: { [key: string]: RevealedCellType }; + hoveredCell: Cell | null; + scrollPosition: [number, number]; + mousePosition: [number, number]; + selectedCell: Cell | null; +}; + +export type BattleGridActions = { + initGrid: (height: number, width: number) => void; + setMousePosition: (x: number, y: number) => void; + selectCell: () => void; + setRevealedCells: (cells: [col: number, row: number][], type: RevealedCellType) => void; + setSingleRevealedCell: (x: number, y: number, type: RevealedCellType) => void; + addUnknownCell: (x: number, y: number) => void; + clearUnknownCells: () => void; +}; + +export type BattleGridStore = BattleGridState & BattleGridActions; + +export const useBattleGridStore = create( + persist( + (set, get) => ({ + grid: [], + missedCells: [], + hitCells: [], + unknownCells: [], + revealedCells: {}, + hoveredCell: null, + scrollPosition: [0, 0], + mousePosition: [0, 0], + selectedCell: null, + + initGrid: (height: number, width: number) => + set(() => { + const hexagons = []; + for (let row = 0; row < height; row++) { + for (let col = 0; col < width; col++) { + const [x, y] = getCellXY(col, row); + hexagons.push({ row, col, x, y }); + } + } + + return { grid: hexagons }; + }), + + setMousePosition: (x: number, y: number) => + set((state) => { + const guessState = useContractStore.getState().guessState; + + if (guessState !== 'IDLE') return {}; + + // const [sx, sy] = getSnappedMousePosition(x, y); + const [col, row] = getCellCoordsFromXY(x, y); + const hoveredCell = state.grid[getIndexFromCoords(col, row)]; + const isRevealed = !!state.revealedCells[`${col}_${row}`]; + + if (!hoveredCell || isRevealed) return {}; + + return { + hoveredCell: hoveredCell || null, + mousePosition: [hoveredCell.x, hoveredCell.y], + }; + }), + + selectCell: () => { + const selectedCell = get().hoveredCell; + if (!selectedCell || useContractStore.getState().guessState !== 'IDLE') return; + + set({ selectedCell }); + const submitGuess = useContractStore.getState().submitGuess; + submitGuess(selectedCell.col, selectedCell.row); + // useContractStore.setState({lastGuessCoords: [selectedCell.x, selectedCell.y]}); + }, + + setRevealedCells: ( + cells: [col: number, row: number][], + type: 'HIT' | 'MISS' | 'UNKNOWN' + ) => { + const newRevealedCells = { ...get().revealedCells }; + for (let i = 0; i < cells.length; i++) { + const key = `${cells[i][0]}_${cells[i][1]}`; + if (!newRevealedCells[key] || newRevealedCells[key] === 'UNKNOWN') { + newRevealedCells[key] = type; + } } - } - return { grid: hexagons }; - }), - setMousePosition: (x: number, y: number) => - set((state) => { - const guessState = useContractStore.getState().guessState; - if (guessState !== 'IDLE') return {}; - - const [sx, sy] = getSnappedMousePosition(x, y); - const hoveredCell = state.grid.find((cell) => sx === cell.x && sy === cell.y); - - return { - hoveredCell: hoveredCell || null, - mousePosition: getSnappedMousePosition(sx, sy), - }; - }), + set({ revealedCells: newRevealedCells }); + }, + + setSingleRevealedCell: (x: number, y: number, type: 'HIT' | 'MISS' | 'UNKNOWN') => { + const newRevealedCells = { ...get().revealedCells }; + newRevealedCells[`${x}_${y}`] = type; + set({ revealedCells: newRevealedCells }); + }, + + addUnknownCell: (x: number, y: number) => + set((state) => { + state.setSingleRevealedCell(x, y, 'UNKNOWN'); - selectCell: () => { - const selectedCell = get().hoveredCell; - if (!selectedCell || useContractStore.getState().guessState !== 'IDLE') return; - - set({ selectedCell }); - const submitGuess = useContractStore.getState().submitGuess; - submitGuess(selectedCell.col, selectedCell.row); - // useContractStore.setState({lastGuessCoords: [selectedCell.x, selectedCell.y]}); - }, -}), { - name: 'battle-grid-storage', - storage: createJSONStorage(() => localStorage), - partialize: (state) => ({ hitCells: state.hitCells, missedCells: state.missedCells }) -})); + return { unknownCells: [...state.unknownCells, { ...state.hoveredCell }] }; + }), + + clearUnknownCells: () => set({ unknownCells: [] }), + }), + { + name: 'battle-grid-storage', + storage: createJSONStorage(() => localStorage), + partialize: ({ hitCells, missedCells, revealedCells, unknownCells }) => ({ + hitCells, + missedCells, + revealedCells, + unknownCells, + }), + } + ) as StateCreator +); diff --git a/bs-game-wip/src/stores/contractStore.ts b/bs-game-wip/src/stores/contractStore.ts index 2e21e0f4..3e7626a7 100644 --- a/bs-game-wip/src/stores/contractStore.ts +++ b/bs-game-wip/src/stores/contractStore.ts @@ -1,6 +1,6 @@ import { ethers, formatUnits } from 'ethers'; -import { create } from 'zustand'; -import {createJSONStorage, persist} from 'zustand/middleware'; +import { StateCreator, create } from 'zustand'; +import { createJSONStorage, persist } from 'zustand/middleware'; import ContractAddress from '@/assets/contract/address.json'; import BattleshipGameJson from '@/assets/contract/artifacts/contracts/BattleshipGame.sol/BattleshipGame.json'; @@ -11,10 +11,10 @@ import { useWalletStore } from '@/stores/walletStore'; import { useBattleGridStore } from './battleGridStore'; -export interface IContractStore { +export type ContractStore = { hits: any[]; misses: any[]; - graveyard: any[]; + graveyard: boolean[]; gameOver: boolean; prizePool: string; guessState: GuessState; @@ -27,7 +27,7 @@ export interface IContractStore { setMisses: (m: any[]) => void; setGraveyard: (g: any[]) => void; setLastGuessCoords: (g: any) => void; -} +}; export type GuessState = | 'IDLE' @@ -38,147 +38,159 @@ export type GuessState = | 'HIT' | 'MISS'; -export const useContractStore = create(persist((set, get) => ({ - hits: [], - misses: [], - graveyard: [], - gameOver: false, - prizePool: '', - guessState: 'IDLE' as GuessState, - lastError: '', - lastGuessCoords: null, - - submitGuess: async (x: number, y: number) => { - const signer = useWalletStore.getState().signer; - const addNewMessage = useMessageStore.getState().addNewMessage; - - if (!signer) { - throw new Error('No signer available.'); - return; - } +export const useContractStore = create( + persist( + (set, get) => ({ + hits: [], + misses: [], + graveyard: [], + gameOver: false, + prizePool: '', + guessState: 'IDLE' as GuessState, + lastError: '', + lastGuessCoords: null, + + submitGuess: async (x: number, y: number) => { + const signer = useWalletStore.getState().signer; + const addNewMessage = useMessageStore.getState().addNewMessage; + + if (!signer) { + throw new Error('No signer available.'); + return; + } + + set({ guessState: 'STARTED' }); + + addNewMessage('Issuing Guess...'); + const contract = new ethers.Contract( + ContractAddress.address, + BattleshipGameJson.abi, + signer + ); + const moveFee = ethers.parseEther(MOVE_FEE); + try { + const submitTx = await contract.hit(x, y, { + value: moveFee, + }); + console.log(submitTx); + set({ guessState: 'TRANSACTION_SUCCESS' }); + const receipt = await submitTx.wait(); + addNewMessage('Issued Guess tx: ' + receipt.hash); + const { allHits, allMisses, graveyard, prizePool, success, guessedCoords } = + receipt.logs[0].args.toObject(); + console.log(receipt, receipt.logs[0].args.toObject()); + + get().setHits(allHits); + get().setMisses(allMisses); + get().setGraveyard(graveyard); + get().setPrizePool(prizePool); + set({ guessState: success ? 'HIT' : 'MISS' }); + get().setLastGuessCoords(guessedCoords); + } catch (e) { + set({ guessState: 'ERROR' }); + if (e.reason) { + addNewMessage('Failed to issue Guess - ' + e.reason + ' ...', 'ERROR'); + set({ lastError: 'Failed to issue Guess - ' + e.reason }); + + if (e.reason === 'Cell already hit') { + useBattleGridStore.getState().addUnknownCell(x, y); + } + } else { + addNewMessage( + 'Failed to issue Guess - unexpected error occurred, check the console logs...', + 'ERROR' + ); + set({ lastError: 'Failed to issue Guess - unexpected error occurred' }); + throw new Error(e); + } + } + }, + + resetGuessState: () => + set({ + guessState: 'IDLE', + }), + + setGraveyard: (latestGraveyard: any[]) => { + const addNewMessage = useMessageStore.getState().addNewMessage; + + const graveyardHasUpdated = + get().graveyard.length !== latestGraveyard.length || + get().graveyard.some((value, index) => value !== latestGraveyard[index]); + + if (graveyardHasUpdated) { + set({ graveyard: latestGraveyard }); + addNewMessage('Graveyard info updated.'); + } + }, + + setMisses: (latestMisses: any[]) => { + const currentMisses = useBattleGridStore.getState().missedCells; + const addNewMessage = useMessageStore.getState().addNewMessage; + const missesHaveUpdated = latestMisses.length !== currentMisses.length; + + if (missesHaveUpdated) { + const missedCells = latestMisses.map((entry) => { + const [x, y] = getCellXY(parseInt(entry[0]), parseInt(entry[1])); + return { + col: parseInt(entry[0]), + row: parseInt(entry[1]), + x, + y, + state: 'MISSED', + }; + }); + + set({ misses: latestMisses }); + useBattleGridStore.setState({ missedCells }); + useBattleGridStore.getState().setRevealedCells(latestMisses, 'MISS'); + useBattleGridStore.getState().clearUnknownCells(); + addNewMessage('Missed. Shot failed to find target.'); + } + }, + + //TODO: Given the similarity of the methods here might be worth combining with the above. + setHits: (latestHits: any[]) => { + const currentHits = useBattleGridStore.getState().hitCells; + const addNewMessage = useMessageStore.getState().addNewMessage; + const hitsHaveUpdated = latestHits.length !== currentHits.length; + + if (hitsHaveUpdated) { + const hitCells = latestHits.map((entry) => { + const [x, y] = getCellXY(parseInt(entry[0]), parseInt(entry[1])); + return { + col: parseInt(entry[0]), + row: parseInt(entry[1]), + x, + y, + state: 'MISSED', + }; + }); + + set({ hits: latestHits }); + useBattleGridStore.setState({ hitCells }); + useBattleGridStore.getState().setRevealedCells(latestHits, 'HIT'); + addNewMessage('DIRECT HIT. Shot successfully found target.', 'SUCCESS'); + } + }, + + setPrizePool: (prizePool: string) => { + const addNewMessage = useMessageStore.getState().addNewMessage; - set({ guessState: 'STARTED' }); - - addNewMessage('Issuing Guess...'); - const contract = new ethers.Contract( - ContractAddress.address, - BattleshipGameJson.abi, - signer - ); - const moveFee = ethers.parseEther(MOVE_FEE); - try { - const submitTx = await contract.hit(x, y, { - value: moveFee, - }); - console.log(submitTx); - set({ guessState: 'TRANSACTION_SUCCESS' }); - const receipt = await submitTx.wait(); - addNewMessage('Issued Guess tx: ' + receipt.hash); - const { allHits, allMisses, graveyard, prizePool, success, guessedCoords } = - receipt.logs[0].args.toObject(); - console.log(receipt, receipt.logs[0].args.toObject()); - - get().setHits(allHits); - get().setMisses(allMisses); - get().setGraveyard(graveyard); - get().setPrizePool(prizePool); - set({ guessState: success ? 'HIT' : 'MISS' }); - get().setLastGuessCoords(guessedCoords); - } catch (e) { - set({ guessState: 'ERROR' }); - if (e.reason) { - addNewMessage('Failed to issue Guess - ' + e.reason + ' ...', 'ERROR'); - set({ lastError: 'Failed to issue Guess - ' + e.reason }); - } else { addNewMessage( - 'Failed to issue Guess - unexpected error occurred, check the console logs...', - 'ERROR' + `[BattleshipGame Contract] Prize pool at: ${formatUnits(prizePool, 'ether')} ETH` ); - set({ lastError: 'Failed to issue Guess - unexpected error occurred' }); - throw new Error(e); - } - } - }, + set({ prizePool: formatUnits(prizePool, 'ether') }); + }, - resetGuessState: () => - set({ - guessState: 'IDLE', + setLastGuessCoords: (coords: any) => { + set({ lastGuessCoords: [parseInt(coords[0]), parseInt(coords[1])] }); + }, }), - - setGraveyard: (latestGraveyard: any[]) => { - const addNewMessage = useMessageStore.getState().addNewMessage; - - const graveyardHasUpdated = - get().graveyard.length !== latestGraveyard.length || - get().graveyard.some((value, index) => value !== latestGraveyard[index]); - - if (graveyardHasUpdated) { - set({ graveyard: latestGraveyard }); - addNewMessage('Graveyard info updated.'); - } - }, - - setMisses: (latestMisses: any[]) => { - const currentMisses = useBattleGridStore.getState().missedCells; - const addNewMessage = useMessageStore.getState().addNewMessage; - const missesHaveUpdated = latestMisses.length !== currentMisses.length; - - if (missesHaveUpdated) { - const a = latestMisses.map((entry) => { - const [x, y] = getCellXY(parseInt(entry[0]), parseInt(entry[1])); - return { - col: parseInt(entry[0]), - row: parseInt(entry[1]), - x, - y, - state: 'MISSED', - }; - }); - - set({ misses: latestMisses }); - useBattleGridStore.setState({ missedCells: a }); - addNewMessage('Missed. Shot failed to find target.'); - } - }, - - //TODO: Given the similarity of the methods here might be worth combining with the above. - setHits: (latestHits: any[]) => { - const currentHits = useBattleGridStore.getState().hitCells; - const addNewMessage = useMessageStore.getState().addNewMessage; - const hitsHaveUpdated = latestHits.length !== currentHits.length; - - if (hitsHaveUpdated) { - const a = latestHits.map((entry) => { - const [x, y] = getCellXY(parseInt(entry[0]), parseInt(entry[1])); - return { - col: parseInt(entry[0]), - row: parseInt(entry[1]), - x, - y, - state: 'MISSED', - }; - }); - - set({ hits: latestHits }); - useBattleGridStore.setState({ hitCells: a }); - addNewMessage('DIRECT HIT. Shot successfully found target.', 'SUCCESS'); + { + name: 'contract-storage', + storage: createJSONStorage(() => localStorage), + partialize: (state) => ({ prizePool: state.prizePool, graveyard: state.graveyard }), } - }, - - setPrizePool: (prizePool: string) => { - const addNewMessage = useMessageStore.getState().addNewMessage; - - addNewMessage( - `[BattleshipGame Contract] Prize pool at: ${formatUnits(prizePool, 'ether')} ETH` - ); - set({ prizePool: formatUnits(prizePool, 'ether') }); - }, - - setLastGuessCoords: (coords: any) => { - set({ lastGuessCoords: [parseInt(coords[0]), parseInt(coords[1])] }); - }, -}), { - name: 'contract-storage', - storage: createJSONStorage(() => localStorage), - partialize: (state) => ({ prizePool: state.prizePool, graveyard: state.graveyard }) -})); + ) as StateCreator +); diff --git a/bs-game-wip/src/stores/messageStore.ts b/bs-game-wip/src/stores/messageStore.ts index 21fb1b8f..fedcb010 100644 --- a/bs-game-wip/src/stores/messageStore.ts +++ b/bs-game-wip/src/stores/messageStore.ts @@ -25,4 +25,3 @@ export const useMessageStore = create((set) => ({ })); }, })); - diff --git a/bs-game-wip/todos.md b/bs-game-wip/todos.md index 7138fa09..8c4b3aff 100644 --- a/bs-game-wip/todos.md +++ b/bs-game-wip/todos.md @@ -13,7 +13,7 @@ - ~~Animate message log entries~~ - ~~animate hud windows~~ - highlight errors in message log -- display Remaining Cells chart +- ~~display Remaining Cells~~ - add ability to scale teh map - percentage bar for fleet strength - ~~finish connection window~~ @@ -22,6 +22,7 @@ - improve x,y coords display - detect metamask disconnection - ~~Update contract and UI as per discussion~~ -- Persist game state on page reloads -- empty game state +- ~~Persist game state on page reloads~~ +- ~~empty game state~~ - modify UI and contract to inform user if ship was sunk on hit/guess +- Game rules/how to play window \ No newline at end of file From b361c5905d91b6e00173f97d6067ad72bfa28857 Mon Sep 17 00:00:00 2001 From: PeterB Date: Mon, 15 Jul 2024 12:04:10 +0100 Subject: [PATCH 09/22] WIP: Vastly improve performance by significantly reducing the number of graphic nodes draw on the canvas fo the battle grid. --- .../BattleGrid/BattleGridCanvas.tsx | 40 ++++++++--------- .../components/BattleGrid/BattleGridCell.tsx | 45 ------------------- .../BattleGrid/BattleGridContainer.tsx | 38 +++++----------- .../BattleGrid/BattleGridCursor.tsx | 11 +++-- .../components/BattleGrid/BattleGridHits.tsx | 14 ++---- .../BattleGrid/BattleGridMisses.tsx | 21 ++------- .../BattleGrid/BattleGridUnknowns.tsx | 23 +++------- bs-game-wip/src/helpers/createHexagon.ts | 29 ++++++------ bs-game-wip/src/helpers/drawGridCells.ts | 34 ++++++++++++++ bs-game-wip/src/lib/constants.ts | 4 -- bs-game-wip/todos.md | 27 ++++++----- 11 files changed, 110 insertions(+), 176 deletions(-) delete mode 100644 bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx create mode 100644 bs-game-wip/src/helpers/drawGridCells.ts diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx index c50f525b..95c8fcfb 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx @@ -1,32 +1,26 @@ import { useMemo } from 'react'; -import { Container, Stage } from '@pixi/react'; +import { Container, Graphics, Stage } from '@pixi/react'; import CellHighlight from '@/components/CellHighlight/CellHighlight'; +import drawGridCells from '@/helpers/drawGridCells'; import { HEX_GRID_MARGIN, HEX_HEIGHT, HEX_WIDTH } from '@/lib/constants'; +import { Cell } from '@/stores/battleGridStore'; -import BattleGridCell from './BattleGridCell'; import BattleGridCursor from './BattleGridCursor'; import BattleGridExplosion from './BattleGridExplosion'; import BattleGridHits from './BattleGridHits'; import BattleGridMisses from './BattleGridMisses'; import BattleGridUnknowns from './BattleGridUnknowns'; -export default function BattleGridCanvas({ grid, width, height }) { - const gridCells = useMemo( - () => - grid.map(({ row, col, x, y }) => ( - - )), - [grid] - ); +type Props = { + grid: Cell[]; + width: number; + height: number; +}; + +export default function BattleGridCanvas({ grid, width, height }: Props) { + const gridCells = useMemo(() => drawGridCells(g, grid)} />, [grid]); return ( - {gridCells} - - - - + + {gridCells} + + + + + diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx deleted file mode 100644 index 31a4d9b8..00000000 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCell.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { Graphics, Text } from '@pixi/react'; - -import { hexHitArea } from '@/lib/constants'; - -const textStyle = { - fill: '#ffffff', - fontSize: 14, -}; - -export default function BattleGridCell({ col, row, x, y, state }) { - return ( - <> - { - g.position.set(x, y); - g.clear(); - - if (state === 'UNTOUCHED') { - g.lineStyle(1, 0x464646, 1); - } - if (state === 'MISSED') { - g.beginFill(0x5a5a5a, 1); - g.lineStyle(1, 0x4f4f4f, 1); - } - if (state === 'HIT') { - g.beginFill(0xe16f6f, 1); - g.lineStyle(1, 0xe16f6f, 1); - } - if (state === 'UNKNOWN') { - g.beginFill(0xffffff, 0.05); - g.lineStyle(1, 0xffffff, 0.3); - } - - g.drawPolygon(hexHitArea); - g.endFill(); - }} - > - {state === 'UNKNOWN' && ( - - )} - - - ); -} diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx index af6b6bc8..e6203a38 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useRef } from 'react'; +import { MouseEvent, useEffect, useRef } from 'react'; import { COLS, CONTAINER_HEIGHT, ROWS } from '@/lib/constants'; import { useBattleGridStore } from '@/stores/battleGridStore'; @@ -19,37 +19,22 @@ export default function BattleGridContainer() { const grid = useBattleGridStore((state) => state.grid); const selectCell = useBattleGridStore((state) => state.selectCell); - // const {handleCellSelection} = useCellSelection() - useEffect(() => { initGrid(COLS, ROWS); }, []); - const lastScrollPosition = useRef({ top: 0, left: 0 }); - const elementRef = useRef(null); - - const handleScroll = () => { - // if (elementRef.current) { - // const newScrollLeft = elementRef.current.scrollLeft; - // const newScrollTop = elementRef.current.scrollTop; - // if ( - // Math.abs(newScrollTop - lastScrollPosition.current.top) > threshold || - // Math.abs(newScrollLeft - lastScrollPosition.current.left) > threshold - // ) { - // setScrollPosition(newScrollLeft, newScrollTop); - // lastScrollPosition.current = { top: newScrollTop, left: newScrollLeft }; - // } - // } - }; + const elementRef = useRef(null); - const handleMouseMove = (event) => { - const rect = elementRef.current.getBoundingClientRect(); - const scrollLeft = elementRef.current.scrollLeft; - const scrollTop = elementRef.current.scrollTop; + const handleMouseMove = (event: MouseEvent) => { + if (elementRef?.current) { + const rect = elementRef.current.getBoundingClientRect(); + const scrollLeft = elementRef.current.scrollLeft; + const scrollTop = elementRef.current.scrollTop; - const x = event.clientX - rect.left + scrollLeft; - const y = event.clientY - rect.top + scrollTop; - setMousePosition(x, y); + const x = event.clientX - rect.left + scrollLeft; + const y = event.clientY - rect.top + scrollTop; + setMousePosition(x, y); + } }; const handleMouseClick = () => { @@ -62,7 +47,6 @@ export default function BattleGridContainer() { style={styles.container} onMouseMove={handleMouseMove} onClick={handleMouseClick} - onScroll={handleScroll} >
diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx index 554e1496..e34505bc 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx @@ -1,12 +1,14 @@ import { useRef } from 'react'; -import { BloomFilter } from '@pixi/filter-bloom'; import { Container, Graphics, useTick } from '@pixi/react'; -import { hexHitArea } from '@/lib/constants'; +import createHexagon from '@/helpers/createHexagon'; +import { HEX_HEIGHT, HEX_WIDTH } from '@/lib/constants'; import { useBattleGridStore } from '@/stores/battleGridStore'; import { useContractStore } from '@/stores/contractStore'; +const hexagon = createHexagon(HEX_WIDTH, HEX_HEIGHT); + export default function BattleGridCursor() { const [[x, y], hoveredCell] = useBattleGridStore((state) => [ state.mousePosition, @@ -15,10 +17,7 @@ export default function BattleGridCursor() { const guessState = useContractStore((state) => state.guessState); const isLoadingState = guessState !== 'IDLE'; const shapeRef = useRef(null); - const scaleRef = useRef(1); - const directionRef = useRef(1); const timeRef = useRef(0); - const bloomFilter = new BloomFilter(3, 3, 2); useTick((delta) => { if (shapeRef.current) { @@ -53,7 +52,7 @@ export default function BattleGridCursor() { g.position.set(x, y); g.clear(); g.lineStyle(1, guessState !== 'ERROR' ? 0xffffff : 0xdc2626, 1); - g.drawPolygon(hexHitArea); + g.drawPolygon(hexagon); g.endFill(); }} /> diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx index d93974c9..f9267272 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx @@ -1,20 +1,12 @@ import { useMemo } from 'react'; -import { Container } from '@pixi/react'; +import { Graphics } from '@pixi/react'; +import drawGridCells from '@/helpers/drawGridCells'; import { useBattleGridStore } from '@/stores/battleGridStore'; -import BattleGridCell from './BattleGridCell'; - export default function BattleGridHits() { const hitCells = useBattleGridStore((state) => state.hitCells); - const revealedGridCells = useMemo( - () => - hitCells.map(({ row, col, x, y }) => ( - - )), - [hitCells] - ); - return {revealedGridCells}; + return useMemo(() => drawGridCells(g, hitCells, 'HIT')} />, [hitCells]); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx index 2a6bf9eb..e77b778f 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx @@ -1,28 +1,15 @@ import { useMemo } from 'react'; -import { Container } from '@pixi/react'; +import { Graphics } from '@pixi/react'; +import drawGridCells from '@/helpers/drawGridCells'; import { useBattleGridStore } from '@/stores/battleGridStore'; -import BattleGridCell from './BattleGridCell'; - export default function BattleGridMisses() { const missedCells = useBattleGridStore((state) => state.missedCells); - const revealedGridCells = useMemo( - () => - missedCells.map(({ row, col, x, y }) => ( - - )), + return useMemo( + () => drawGridCells(g, missedCells, 'MISS')} />, [missedCells] ); - - return {revealedGridCells}; } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx index a48736ed..f30fcc1c 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx @@ -1,32 +1,21 @@ import { useMemo } from 'react'; -import { Container } from '@pixi/react'; +import { Graphics } from '@pixi/react'; +import drawGridCells from '@/helpers/drawGridCells'; import { useBattleGridStore } from '@/stores/battleGridStore'; -import BattleGridCell from './BattleGridCell'; - export default function BattleGridUnknowns() { const unknownCells = useBattleGridStore((state) => state.unknownCells); - const revealedGridCells = useMemo( - () => - unknownCells.map(({ row, col, x, y }) => ( - - )), - [unknownCells] + const gridCells = useMemo( + () => drawGridCells(g, unknownCells, 'UNKNOWN')} />, + [unknownCells, unknownCells] ); if (unknownCells.length === 0) { return null; } - return {revealedGridCells}; + return gridCells; } diff --git a/bs-game-wip/src/helpers/createHexagon.ts b/bs-game-wip/src/helpers/createHexagon.ts index 12d9b937..3406a3cc 100644 --- a/bs-game-wip/src/helpers/createHexagon.ts +++ b/bs-game-wip/src/helpers/createHexagon.ts @@ -1,19 +1,18 @@ import * as PIXI from 'pixi.js'; -export default function createHexagon(width, height) { - const hex = new PIXI.Polygon([ - 0, - -height / 2, - width / 2, - -height / 4, - width / 2, - height / 4, - 0, - height / 2, - -width / 2, - height / 4, - -width / 2, - -height / 4, +export default function createHexagon(width: number, height: number, x = 0, y = 0) { + return new PIXI.Polygon([ + x, + y - height / 2, + x + width / 2, + y - height / 4, + x + width / 2, + y + height / 4, + x, + y + height / 2, + x - width / 2, + y + height / 4, + x - width / 2, + y - height / 4, ]); - return hex; } diff --git a/bs-game-wip/src/helpers/drawGridCells.ts b/bs-game-wip/src/helpers/drawGridCells.ts new file mode 100644 index 00000000..1416b046 --- /dev/null +++ b/bs-game-wip/src/helpers/drawGridCells.ts @@ -0,0 +1,34 @@ +import { Graphics as PixiGraphics } from '@pixi/graphics'; + +import { HEX_HEIGHT, HEX_WIDTH } from '@/lib/constants'; +import { RevealedCellType } from '@/stores/battleGridStore'; + +import createHexagon from './createHexagon'; + +export default function drawGridCells( + g: PixiGraphics, + cells: { x: number; y: number }[], + state?: RevealedCellType +) { + g.clear(); + g.position.set(0, 0); + cells.forEach(({ x, y }) => { + if (!state) { + g.lineStyle(1, 0x464646, 1); + } + if (state === 'MISS') { + g.beginFill(0x5a5a5a, 1); + g.lineStyle(1, 0x4f4f4f, 1); + } + if (state === 'HIT') { + g.beginFill(0xe16f6f, 1); + g.lineStyle(1, 0xe16f6f, 1); + } + if (state === 'UNKNOWN') { + g.beginFill(0xffffff, 0.05); + g.lineStyle(1, 0xffffff, 0.3); + } + + g.drawPolygon(createHexagon(HEX_WIDTH, HEX_HEIGHT, x, y)); + }); +} diff --git a/bs-game-wip/src/lib/constants.ts b/bs-game-wip/src/lib/constants.ts index dd6591c9..7815dfc9 100644 --- a/bs-game-wip/src/lib/constants.ts +++ b/bs-game-wip/src/lib/constants.ts @@ -1,13 +1,9 @@ -import createHexagon from '@/helpers/createHexagon'; -import formatAddress from '@/helpers/formatAddress'; - export const MOVE_FEE: string = '0.0443'; export const TOTAL_SHIPS: number = 249; export const HEX_WIDTH = 32; export const HEX_HEIGHT = 32; export const VERTICAL_OFFSET = 8; export const HORIZONTAL_OFFSET = 0; -export const hexHitArea = createHexagon(HEX_WIDTH, HEX_HEIGHT); export const DRAW_THRESHOLD = 100; export const CONTAINER_WIDTH = 600; export const CONTAINER_HEIGHT = 500; diff --git a/bs-game-wip/todos.md b/bs-game-wip/todos.md index 8c4b3aff..516d32c8 100644 --- a/bs-game-wip/todos.md +++ b/bs-game-wip/todos.md @@ -1,28 +1,31 @@ -- ~~intro screen/state~~ + - gameover screen/state - explosion effect/notification when ship is sunk - Stress test - Get started help - component help tips -- ~~shot pending notification/overlay~~ -- ~~offset grid to make edge cells entirely visible~~ - Make responsive for mobile? -- Prevent shots being placed on cells which are already displayed as hit -- minimap - map legend -- ~~Animate message log entries~~ -- ~~animate hud windows~~ - highlight errors in message log -- ~~display Remaining Cells~~ - add ability to scale teh map - percentage bar for fleet strength -- ~~finish connection window~~ - move contract address var to env var -~~- Fetch game data on connection~~ - improve x,y coords display - detect metamask disconnection +- improve performance +- display age of gameboard +- modify UI and contract to inform user if ship was sunk on hit/guess +- Game rules/how to play window + - ~~Update contract and UI as per discussion~~ - ~~Persist game state on page reloads~~ - ~~empty game state~~ -- modify UI and contract to inform user if ship was sunk on hit/guess -- Game rules/how to play window \ No newline at end of file +- ~~- Fetch game data on connection~~ +- ~~finish connection window~~ +- ~~display Remaining Cells~~ +- - ~~shot pending notification/overlay~~ +- ~~offset grid to make edge cells entirely visible~~ +- ~~- Prevent shots being placed on cells which are already displayed as hit~~ +- ~~Animate message log entries~~ +- ~~animate hud windows~~ +- - ~~intro screen/state~~ \ No newline at end of file From 25cea55a5e450ef133e2c3044b08f742fe1cadb8 Mon Sep 17 00:00:00 2001 From: PeterB Date: Mon, 15 Jul 2024 12:27:02 +0100 Subject: [PATCH 10/22] WIP: Fix missing question marks due to last commit. --- .../BattleGrid/BattleGridUnknowns.tsx | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx index f30fcc1c..a662b5bc 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx @@ -1,9 +1,12 @@ import { useMemo } from 'react'; -import { Graphics } from '@pixi/react'; +import {Container, Graphics, Text} from '@pixi/react'; import drawGridCells from '@/helpers/drawGridCells'; import { useBattleGridStore } from '@/stores/battleGridStore'; +import {TextStyle} from "pixi.js"; + +const style = new TextStyle({fontSize: 12, fill: 0xffffff}) export default function BattleGridUnknowns() { const unknownCells = useBattleGridStore((state) => state.unknownCells); @@ -13,9 +16,23 @@ export default function BattleGridUnknowns() { [unknownCells, unknownCells] ); + const questionMarks = useMemo(() => unknownCells.map(({x, y}) => ), [unknownCells]) + if (unknownCells.length === 0) { return null; } - return gridCells; + return ( + + {gridCells} + {questionMarks} + + ) } From 0e79849ede0fd0b25de69c7aecbde6a8e336137a Mon Sep 17 00:00:00 2001 From: PeterB Date: Mon, 15 Jul 2024 17:16:19 +0100 Subject: [PATCH 11/22] WIP: Adds how to play page. --- bs-game-wip/package-lock.json | 6 ++ bs-game-wip/package.json | 1 + bs-game-wip/src/App.tsx | 24 +++--- .../BattleGrid/BattleGridCanvas.tsx | 2 +- .../BattleGrid/BattleGridContainer.tsx | 10 +-- .../BattleGridCurrentCoordinates.tsx | 4 +- .../BattleGrid/BattleGridCursor.tsx | 7 +- .../BattleGrid/BattleGridExplosion.tsx | 4 +- .../components/BattleGrid/BattleGridHits.tsx | 4 +- .../BattleGrid/BattleGridMisses.tsx | 4 +- .../BattleGrid/BattleGridUnknowns.tsx | 34 ++++---- bs-game-wip/src/components/Button/Button.tsx | 23 ++++++ .../src/components/Button/styles.module.scss | 16 ++++ .../CellHighlight/CellHighlight.tsx | 4 +- .../CellHighlight/CellHighlightStates.ts | 6 +- .../CellsRemaining/CellsRemaining.tsx | 6 +- .../src/components/HelpWindow/HelpWindow.tsx | 71 ++++++++++++++++ .../src/components/HudWindow/HudWindow.tsx | 70 +++++++++------- .../components/HudWindow/styles.module.scss | 7 ++ .../src/components/PageHeader/PageHeader.tsx | 17 ++++ .../ProcessingNotification.tsx | 82 ++++++++----------- .../ProcessingNotification/styles.module.scss | 6 -- bs-game-wip/src/helpers/drawGridCells.ts | 2 +- bs-game-wip/src/index.css | 4 +- bs-game-wip/src/stores/contractStore.ts | 20 ++--- .../{battleGridStore.ts => gameStore.ts} | 23 ++++-- bs-game-wip/src/stores/messageStore.ts | 6 +- bs-game-wip/src/tailwind.css | 2 + bs-game-wip/tailwind.config.js | 4 +- 29 files changed, 311 insertions(+), 158 deletions(-) create mode 100644 bs-game-wip/src/components/Button/Button.tsx create mode 100644 bs-game-wip/src/components/Button/styles.module.scss create mode 100644 bs-game-wip/src/components/HelpWindow/HelpWindow.tsx create mode 100644 bs-game-wip/src/components/PageHeader/PageHeader.tsx delete mode 100644 bs-game-wip/src/components/ProcessingNotification/styles.module.scss rename bs-game-wip/src/stores/{battleGridStore.ts => gameStore.ts} (88%) diff --git a/bs-game-wip/package-lock.json b/bs-game-wip/package-lock.json index 5765944d..1428cc6b 100644 --- a/bs-game-wip/package-lock.json +++ b/bs-game-wip/package-lock.json @@ -16,6 +16,7 @@ "@pixi/graphics-extras": "^7.4.2", "@pixi/react": "^7.1.2", "autoprefixer": "^10.4.19", + "classnames": "^2.5.1", "framer-motion": "^11.3.0", "pixi.js": "^7.1.4", "react": "^18.3.1", @@ -4984,6 +4985,11 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", diff --git a/bs-game-wip/package.json b/bs-game-wip/package.json index 5ef6dcae..f471775c 100644 --- a/bs-game-wip/package.json +++ b/bs-game-wip/package.json @@ -18,6 +18,7 @@ "@pixi/graphics-extras": "^7.4.2", "@pixi/react": "^7.1.2", "autoprefixer": "^10.4.19", + "classnames": "^2.5.1", "framer-motion": "^11.3.0", "pixi.js": "^7.1.4", "react": "^18.3.1", diff --git a/bs-game-wip/src/App.tsx b/bs-game-wip/src/App.tsx index c1c022c6..43e09dfb 100644 --- a/bs-game-wip/src/App.tsx +++ b/bs-game-wip/src/App.tsx @@ -2,19 +2,20 @@ import { useEffect, useState } from 'react'; import detectEthereumProvider from '@metamask/detect-provider'; -import logo from '@/assets/white_logotype.png'; +import BattleGrid from '@/components/BattleGrid/BattleGrid'; +import CellsRemaining from '@/components/CellsRemaining/CellsRemaining'; +import Graveyard from '@/components/Graveyard/Graveyard'; +import HelpWindow from '@/components/HelpWindow/HelpWindow'; import MessageLog from '@/components/MessageLog/MessageLog'; import MetaMask from '@/components/MetaMask/MetaMask'; +import PageHeader from '@/components/PageHeader/PageHeader'; +import PrizePool from '@/components/PrizePool/PrizePool'; +import ProcessingNotification from '@/components/ProcessingNotification/ProcessingNotification'; +import { trackEvent } from '@/lib/trackEvent'; +import { useMessageStore } from '@/stores/messageStore'; +import { useWalletStore } from '@/stores/walletStore'; import './App.css'; -import BattleGrid from './components/BattleGrid/BattleGrid'; -import CellsRemaining from './components/CellsRemaining/CellsRemaining'; -import Graveyard from './components/Graveyard/Graveyard'; -import PrizePool from './components/PrizePool/PrizePool'; -import ProcessingNotification from './components/ProcessingNotification/ProcessingNotification'; -import { trackEvent } from './lib/trackEvent'; -import { useMessageStore } from './stores/messageStore'; -import { useWalletStore } from './stores/walletStore'; function App() { const [setProvider, address, setAddress] = useWalletStore((state) => [ @@ -70,9 +71,7 @@ function App() { return ( <> -
- test -
+
@@ -90,6 +89,7 @@ function App() {
+ ); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx index 95c8fcfb..ff766408 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCanvas.tsx @@ -5,7 +5,7 @@ import { Container, Graphics, Stage } from '@pixi/react'; import CellHighlight from '@/components/CellHighlight/CellHighlight'; import drawGridCells from '@/helpers/drawGridCells'; import { HEX_GRID_MARGIN, HEX_HEIGHT, HEX_WIDTH } from '@/lib/constants'; -import { Cell } from '@/stores/battleGridStore'; +import { Cell } from '@/stores/gameStore'; import BattleGridCursor from './BattleGridCursor'; import BattleGridExplosion from './BattleGridExplosion'; diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx index e6203a38..c3671b15 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridContainer.tsx @@ -1,7 +1,7 @@ import { MouseEvent, useEffect, useRef } from 'react'; import { COLS, CONTAINER_HEIGHT, ROWS } from '@/lib/constants'; -import { useBattleGridStore } from '@/stores/battleGridStore'; +import { useGameStore } from '@/stores/gameStore'; import BattleGridCanvas from './BattleGridCanvas'; @@ -14,10 +14,10 @@ const styles = { }; export default function BattleGridContainer() { - const setMousePosition = useBattleGridStore((state) => state.setMousePosition); - const initGrid = useBattleGridStore((state) => state.initGrid); - const grid = useBattleGridStore((state) => state.grid); - const selectCell = useBattleGridStore((state) => state.selectCell); + const setMousePosition = useGameStore((state) => state.setMousePosition); + const initGrid = useGameStore((state) => state.initGrid); + const grid = useGameStore((state) => state.grid); + const selectCell = useGameStore((state) => state.selectCell); useEffect(() => { initGrid(COLS, ROWS); diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx index ae4ac677..5eb3e3a9 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx @@ -1,7 +1,7 @@ -import { useBattleGridStore } from '@/stores/battleGridStore'; +import { useGameStore } from '@/stores/gameStore'; export default function BattleGridCurrentCoordinates() { - const currentHoveredCell = useBattleGridStore((state) => state.hoveredCell); + const currentHoveredCell = useGameStore((state) => state.hoveredCell); return (
diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx index e34505bc..a69f3edc 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridCursor.tsx @@ -4,16 +4,13 @@ import { Container, Graphics, useTick } from '@pixi/react'; import createHexagon from '@/helpers/createHexagon'; import { HEX_HEIGHT, HEX_WIDTH } from '@/lib/constants'; -import { useBattleGridStore } from '@/stores/battleGridStore'; import { useContractStore } from '@/stores/contractStore'; +import { useGameStore } from '@/stores/gameStore'; const hexagon = createHexagon(HEX_WIDTH, HEX_HEIGHT); export default function BattleGridCursor() { - const [[x, y], hoveredCell] = useBattleGridStore((state) => [ - state.mousePosition, - state.hoveredCell, - ]); + const [[x, y], hoveredCell] = useGameStore((state) => [state.mousePosition, state.hoveredCell]); const guessState = useContractStore((state) => state.guessState); const isLoadingState = guessState !== 'IDLE'; const shapeRef = useRef(null); diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridExplosion.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridExplosion.tsx index ba89d907..23d99768 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridExplosion.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridExplosion.tsx @@ -2,14 +2,14 @@ import { useEffect, useState } from 'react'; import { Container } from '@pixi/react'; -import { useBattleGridStore } from '@/stores/battleGridStore'; import { useContractStore } from '@/stores/contractStore'; +import { useGameStore } from '@/stores/gameStore'; import BattleGridExplosionParticle from './BattleGridExplosionParticle'; export default function BattleGridExplosion({ particleCount, duration }) { const guessState = useContractStore((state) => state.guessState); - const selectedCell = useBattleGridStore((state) => state.selectedCell); + const selectedCell = useGameStore((state) => state.selectedCell); const [particles, setParticles] = useState([]); const hide = guessState !== 'HIT'; diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx index f9267272..e1d60b66 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridHits.tsx @@ -3,10 +3,10 @@ import { useMemo } from 'react'; import { Graphics } from '@pixi/react'; import drawGridCells from '@/helpers/drawGridCells'; -import { useBattleGridStore } from '@/stores/battleGridStore'; +import { useGameStore } from '@/stores/gameStore'; export default function BattleGridHits() { - const hitCells = useBattleGridStore((state) => state.hitCells); + const hitCells = useGameStore((state) => state.hitCells); return useMemo(() => drawGridCells(g, hitCells, 'HIT')} />, [hitCells]); } diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx index e77b778f..464e49ef 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridMisses.tsx @@ -3,10 +3,10 @@ import { useMemo } from 'react'; import { Graphics } from '@pixi/react'; import drawGridCells from '@/helpers/drawGridCells'; -import { useBattleGridStore } from '@/stores/battleGridStore'; +import { useGameStore } from '@/stores/gameStore'; export default function BattleGridMisses() { - const missedCells = useBattleGridStore((state) => state.missedCells); + const missedCells = useGameStore((state) => state.missedCells); return useMemo( () => drawGridCells(g, missedCells, 'MISS')} />, diff --git a/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx b/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx index a662b5bc..bb71312e 100644 --- a/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx +++ b/bs-game-wip/src/components/BattleGrid/BattleGridUnknowns.tsx @@ -1,29 +1,35 @@ import { useMemo } from 'react'; -import {Container, Graphics, Text} from '@pixi/react'; +import { Container, Graphics, Text } from '@pixi/react'; +import { TextStyle } from 'pixi.js'; import drawGridCells from '@/helpers/drawGridCells'; -import { useBattleGridStore } from '@/stores/battleGridStore'; -import {TextStyle} from "pixi.js"; +import { useGameStore } from '@/stores/gameStore'; -const style = new TextStyle({fontSize: 12, fill: 0xffffff}) +const style = new TextStyle({ fontSize: 12, fill: 0xffffff }); export default function BattleGridUnknowns() { - const unknownCells = useBattleGridStore((state) => state.unknownCells); + const unknownCells = useGameStore((state) => state.unknownCells); const gridCells = useMemo( () => drawGridCells(g, unknownCells, 'UNKNOWN')} />, [unknownCells, unknownCells] ); - const questionMarks = useMemo(() => unknownCells.map(({x, y}) => ), [unknownCells]) + const questionMarks = useMemo( + () => + unknownCells.map(({ x, y }) => ( + + )), + [unknownCells] + ); if (unknownCells.length === 0) { return null; @@ -34,5 +40,5 @@ export default function BattleGridUnknowns() { {gridCells} {questionMarks} - ) + ); } diff --git a/bs-game-wip/src/components/Button/Button.tsx b/bs-game-wip/src/components/Button/Button.tsx new file mode 100644 index 00000000..0d71b290 --- /dev/null +++ b/bs-game-wip/src/components/Button/Button.tsx @@ -0,0 +1,23 @@ +import { ReactNode } from 'react'; + +import styles from './styles.module.scss'; + +type Props = { + onClick?: () => void; + variant?: 'light' | 'dark'; + children?: ReactNode; + classes?: string | string[]; +}; + +export default function Button({ onClick, variant = 'dark', children, classes = '' }: Props) { + return ( + + ); +} diff --git a/bs-game-wip/src/components/Button/styles.module.scss b/bs-game-wip/src/components/Button/styles.module.scss new file mode 100644 index 00000000..5d939b3b --- /dev/null +++ b/bs-game-wip/src/components/Button/styles.module.scss @@ -0,0 +1,16 @@ +.button { + padding: 5px 20px; + text-transform: uppercase; + background: var(--color-bg); + color: #fff; + border: none; + transition: background-color 0.2s; + &:hover { + background-color: rgb(var(--color-accent)); + } +} + +.--light { + color: var(--color-bg); + background: #fff; +} diff --git a/bs-game-wip/src/components/CellHighlight/CellHighlight.tsx b/bs-game-wip/src/components/CellHighlight/CellHighlight.tsx index eb240ab2..8bf54f24 100644 --- a/bs-game-wip/src/components/CellHighlight/CellHighlight.tsx +++ b/bs-game-wip/src/components/CellHighlight/CellHighlight.tsx @@ -2,8 +2,8 @@ import { useEffect, useState } from 'react'; import { Container } from '@pixi/react'; -import { useBattleGridStore } from '@/stores/battleGridStore'; import { useContractStore } from '@/stores/contractStore'; +import { useGameStore } from '@/stores/gameStore'; import CellHighlightParticle from './CellHighlightParticle'; import { @@ -15,7 +15,7 @@ import { export default function CellHighlight() { const guessState = useContractStore((state) => state.guessState); - const selectedCell = useBattleGridStore((state) => state.selectedCell); + const selectedCell = useGameStore((state) => state.selectedCell); const [particles, setParticles] = useState([]); const hide = guessState === 'IDLE'; const duration = 1000; diff --git a/bs-game-wip/src/components/CellHighlight/CellHighlightStates.ts b/bs-game-wip/src/components/CellHighlight/CellHighlightStates.ts index 5d9ff9b2..5c415f1b 100644 --- a/bs-game-wip/src/components/CellHighlight/CellHighlightStates.ts +++ b/bs-game-wip/src/components/CellHighlight/CellHighlightStates.ts @@ -62,7 +62,7 @@ export function MissHighlightState(x, y, duration) { const angle = angleIncrement * i; const rotationSpeed = 0; // Random rotation speed const startRadius = 400; - const endRadius = -800; + const endRadius = -1200; const startHeight = 100; const endHeight = 10; newParticles.push({ @@ -92,9 +92,9 @@ export function HitHighlightState(x, y, duration) { const angle = angleIncrement * i; const rotationSpeed = 0; // Random rotation speed const startRadius = 400; - const endRadius = -800; + const endRadius = -1200; const startHeight = 30; - const endHeight = 10; + const endHeight = 100; newParticles.push({ x, y, diff --git a/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx index 8150a84c..b7154528 100644 --- a/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx +++ b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx @@ -2,13 +2,11 @@ import { useShallow } from 'zustand/react/shallow'; import HudWindow from '@/components/HudWindow/HudWindow'; import { COLS, ROWS } from '@/lib/constants'; -import { useBattleGridStore } from '@/stores/battleGridStore'; +import { useGameStore } from '@/stores/gameStore'; import { useWalletStore } from '@/stores/walletStore'; export default function CellsRemaining() { - const [misses, hits] = useBattleGridStore( - useShallow((state) => [state.missedCells, state.hitCells]) - ); + const [misses, hits] = useGameStore(useShallow((state) => [state.missedCells, state.hitCells])); const isConnected = useWalletStore((state) => state.isConnected); const numberOfRevealedCells = misses.length + hits.length; const totalCells = ROWS * COLS; diff --git a/bs-game-wip/src/components/HelpWindow/HelpWindow.tsx b/bs-game-wip/src/components/HelpWindow/HelpWindow.tsx new file mode 100644 index 00000000..6c78d92c --- /dev/null +++ b/bs-game-wip/src/components/HelpWindow/HelpWindow.tsx @@ -0,0 +1,71 @@ +import Button from '@/components/Button/Button'; +import HudWindow from '@/components/HudWindow/HudWindow'; +import { useGameStore } from '@/stores/gameStore'; + +export default function HelpWindow() { + const [toggleHelpWindow, helpWindowOpen] = useGameStore((state) => [ + state.toggleHelpWindow, + state.helpWindowOpen, + ]); + + if (!helpWindowOpen) return null; + + const handleClose = () => { + toggleHelpWindow(); + }; + + return ( + + +
+ } + > +
+

Battleships Game Rules

+ +
+

Grid Visibility

+
    +
  • The game grid is hidden until you make a guess.
  • +
  • + After each guess, the grid will be updated to reflect the latest game + state. +
  • +
  • The board updates only after each guess is made.
  • +
+
+ +
+

Guessing and Placement

+
    +
  • + If you try to guess a cell that has already been chosen by another + player, your guess will be invalid, and the transaction will be + cancelled. +
  • +
+
+ +
+

Prize Pool

+
    +
  • Each time a player makes a guess, the prize pool increases.
  • +
  • + Once all ships have been sunk, the prize pool will be distributed among + the players. +
  • +
  • + The distribution of the prize pool will be based on the number of ships + each player has sunk. +
  • +
+
+
+ + ); +} diff --git a/bs-game-wip/src/components/HudWindow/HudWindow.tsx b/bs-game-wip/src/components/HudWindow/HudWindow.tsx index f79205ff..f6070303 100644 --- a/bs-game-wip/src/components/HudWindow/HudWindow.tsx +++ b/bs-game-wip/src/components/HudWindow/HudWindow.tsx @@ -1,5 +1,6 @@ import { ReactNode } from 'react'; +import classNames from 'classnames'; import { AnimatePresence, motion } from 'framer-motion'; import AnimatedText from '@/components/AnimatedText/AnimatedText'; @@ -13,6 +14,8 @@ type Props = { isOpen?: boolean; closedContent?: ReactNode; speed?: number; + modalMode?: boolean; + transparentOverlay?: boolean; }; export default function HudWindow({ @@ -22,6 +25,8 @@ export default function HudWindow({ isOpen = true, closedContent, speed = 1, + modalMode = false, + transparentOverlay = false, }: Props) { const topDecorationAnimation = { initial: { width: 0, height: 0 }, @@ -40,66 +45,73 @@ export default function HudWindow({ initial: { opacity: 0, width: 0 }, animate: { opacity: 1, width: '100%' }, exit: { opacity: 0 }, - transition: { delay: 1, duration: 1 * speed }, + transition: { delay: 1 * speed, duration: 1 * speed }, }; const contentAnimation = { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, - transition: { delay: 2, duration: 1 * speed }, + transition: { delay: 2 * speed, duration: 1 * speed }, }; const footerAnimation = { initial: { opacity: 0, width: 0 }, animate: { opacity: 1, width: '100%' }, exit: { opacity: 0 }, - transition: { delay: 1, duration: 1 * speed }, + transition: { delay: 1 * speed, duration: 1 * speed }, }; const footerContentAnimation = { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, - transition: { delay: 3, duration: 1 * speed }, + transition: { delay: 3 * speed, duration: 1 * speed }, }; const closedScreenAnimation = { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, - transition: { delay: 3, duration: 1 * speed }, + transition: { delay: 3 * speed, duration: 1 * speed }, }; + const modalClass = classNames({ + 'absolute inset-0 flex justify-center items-center -mt-40': modalMode, + 'bg-translucentBg': !transparentOverlay, + }); + return ( -
- - -
- -
-
+
+
+ + +
+ +
+
- {!isOpen && {closedContent}} + {!isOpen && {closedContent}} - {isOpen && {children}} + {isOpen && {children}} - {footerContent && isOpen && ( - <> - - {footerContent} - - - - )} -
+ {footerContent && isOpen && ( + <> + + {footerContent} + + + + )} +
+
); } diff --git a/bs-game-wip/src/components/HudWindow/styles.module.scss b/bs-game-wip/src/components/HudWindow/styles.module.scss index 71d50180..4220e0a3 100644 --- a/bs-game-wip/src/components/HudWindow/styles.module.scss +++ b/bs-game-wip/src/components/HudWindow/styles.module.scss @@ -2,6 +2,13 @@ box-shadow: 0 0 7px rgba(231, 76, 60, 0.6); } +.container { + position: absolute; + top: 30vh; + left: 50vw; + transform: translateX(-50%); +} + .topLeftDecoration { width: 80%; height: 80%; diff --git a/bs-game-wip/src/components/PageHeader/PageHeader.tsx b/bs-game-wip/src/components/PageHeader/PageHeader.tsx new file mode 100644 index 00000000..27813888 --- /dev/null +++ b/bs-game-wip/src/components/PageHeader/PageHeader.tsx @@ -0,0 +1,17 @@ +import logo from '@/assets/white_logotype.png'; +import { useGameStore } from '@/stores/gameStore'; + +export default function PageHeader() { + const toggleHelpWindow = useGameStore((state) => state.toggleHelpWindow); + + const handleShowGameRules = () => { + toggleHelpWindow(); + }; + + return ( +
+ test + How to play? +
+ ); +} diff --git a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx index dd6edb50..89d0f80b 100644 --- a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx +++ b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx @@ -1,10 +1,9 @@ import { AnimatePresence, motion } from 'framer-motion'; +import Button from '@/components/Button/Button'; import HudWindow from '@/components/HudWindow/HudWindow'; import { useContractStore } from '@/stores/contractStore'; -import styles from './styles.module.scss'; - export default function ProcessingNotification() { const [guessState, lastError, resetGuessState] = useContractStore((state) => [ state.guessState, @@ -19,7 +18,7 @@ export default function ProcessingNotification() { resetGuessState(); }; - const CloseButton = ; + const CloseButton = ; if (guessState === 'IDLE') return null; @@ -27,10 +26,8 @@ export default function ProcessingNotification() { footerContent =

Processing...

; bodyContent = (
-

- Target locked and confirmed. -

-

Initiating plasma cannon sequence

+

Target locked and confirmed.

+

Initiating plasma cannon sequence

); } @@ -40,8 +37,8 @@ export default function ProcessingNotification() { bodyContent = (

WEAPON ACTIVATION FAILED

-

Error detected

-

{lastError}

+

Error detected

+

{lastError}

); } @@ -50,12 +47,8 @@ export default function ProcessingNotification() { footerContent =

CANNONS FIRED...

; bodyContent = (
-

- Ordinance en route to target -

-

- Monitor for impact confirmation -

+

Ordinance en route to target

+

Monitor for impact confirmation

); } @@ -64,11 +57,8 @@ export default function ProcessingNotification() { footerContent =
{CloseButton}
; bodyContent = (
-

Miss detected

-

- Shot failed to find target -

-

+

Shot failed to find target

+

Initiate trajectory analysis and recalibrate targeting systems

@@ -79,9 +69,8 @@ export default function ProcessingNotification() { footerContent =
{CloseButton}
; bodyContent = (
-

DIRECT HIT

-

Impact confirmed

-

+

DIRECT HIT

+

Assess damage and prepare for immediate re-engagement

@@ -95,25 +84,13 @@ export default function ProcessingNotification() { }; return ( -
- - - {footerContent} - -
- } - > - + - {bodyContent} + {footerContent} - - -
+
+ } + > + + + {bodyContent} + + + ); } diff --git a/bs-game-wip/src/components/ProcessingNotification/styles.module.scss b/bs-game-wip/src/components/ProcessingNotification/styles.module.scss deleted file mode 100644 index 6d2dec1a..00000000 --- a/bs-game-wip/src/components/ProcessingNotification/styles.module.scss +++ /dev/null @@ -1,6 +0,0 @@ -.container { - position: absolute; - top: 30vh; - left: 50vw; - transform: translateX(-50%); -} diff --git a/bs-game-wip/src/helpers/drawGridCells.ts b/bs-game-wip/src/helpers/drawGridCells.ts index 1416b046..5952b9bc 100644 --- a/bs-game-wip/src/helpers/drawGridCells.ts +++ b/bs-game-wip/src/helpers/drawGridCells.ts @@ -1,7 +1,7 @@ import { Graphics as PixiGraphics } from '@pixi/graphics'; import { HEX_HEIGHT, HEX_WIDTH } from '@/lib/constants'; -import { RevealedCellType } from '@/stores/battleGridStore'; +import { RevealedCellType } from '@/stores/gameStore'; import createHexagon from './createHexagon'; diff --git a/bs-game-wip/src/index.css b/bs-game-wip/src/index.css index d4087e5e..2756b502 100644 --- a/bs-game-wip/src/index.css +++ b/bs-game-wip/src/index.css @@ -15,9 +15,11 @@ a { font-weight: 500; color: #646cff; text-decoration: inherit; + cursor: pointer; } a:hover { - color: #535bf2; + color: rgb(var(--color-accent)); + text-decoration: underline; } body { diff --git a/bs-game-wip/src/stores/contractStore.ts b/bs-game-wip/src/stores/contractStore.ts index 3e7626a7..a17c52bf 100644 --- a/bs-game-wip/src/stores/contractStore.ts +++ b/bs-game-wip/src/stores/contractStore.ts @@ -9,7 +9,7 @@ import { MOVE_FEE } from '@/lib/constants'; import { useMessageStore } from '@/stores/messageStore'; import { useWalletStore } from '@/stores/walletStore'; -import { useBattleGridStore } from './battleGridStore'; +import { useGameStore } from './gameStore'; export type ContractStore = { hits: any[]; @@ -72,13 +72,11 @@ export const useContractStore = create( const submitTx = await contract.hit(x, y, { value: moveFee, }); - console.log(submitTx); set({ guessState: 'TRANSACTION_SUCCESS' }); const receipt = await submitTx.wait(); addNewMessage('Issued Guess tx: ' + receipt.hash); const { allHits, allMisses, graveyard, prizePool, success, guessedCoords } = receipt.logs[0].args.toObject(); - console.log(receipt, receipt.logs[0].args.toObject()); get().setHits(allHits); get().setMisses(allMisses); @@ -93,7 +91,7 @@ export const useContractStore = create( set({ lastError: 'Failed to issue Guess - ' + e.reason }); if (e.reason === 'Cell already hit') { - useBattleGridStore.getState().addUnknownCell(x, y); + useGameStore.getState().addUnknownCell(x, y); } } else { addNewMessage( @@ -125,7 +123,7 @@ export const useContractStore = create( }, setMisses: (latestMisses: any[]) => { - const currentMisses = useBattleGridStore.getState().missedCells; + const currentMisses = useGameStore.getState().missedCells; const addNewMessage = useMessageStore.getState().addNewMessage; const missesHaveUpdated = latestMisses.length !== currentMisses.length; @@ -142,16 +140,16 @@ export const useContractStore = create( }); set({ misses: latestMisses }); - useBattleGridStore.setState({ missedCells }); - useBattleGridStore.getState().setRevealedCells(latestMisses, 'MISS'); - useBattleGridStore.getState().clearUnknownCells(); + useGameStore.setState({ missedCells }); + useGameStore.getState().setRevealedCells(latestMisses, 'MISS'); + useGameStore.getState().clearUnknownCells(); addNewMessage('Missed. Shot failed to find target.'); } }, //TODO: Given the similarity of the methods here might be worth combining with the above. setHits: (latestHits: any[]) => { - const currentHits = useBattleGridStore.getState().hitCells; + const currentHits = useGameStore.getState().hitCells; const addNewMessage = useMessageStore.getState().addNewMessage; const hitsHaveUpdated = latestHits.length !== currentHits.length; @@ -168,8 +166,8 @@ export const useContractStore = create( }); set({ hits: latestHits }); - useBattleGridStore.setState({ hitCells }); - useBattleGridStore.getState().setRevealedCells(latestHits, 'HIT'); + useGameStore.setState({ hitCells }); + useGameStore.getState().setRevealedCells(latestHits, 'HIT'); addNewMessage('DIRECT HIT. Shot successfully found target.', 'SUCCESS'); } }, diff --git a/bs-game-wip/src/stores/battleGridStore.ts b/bs-game-wip/src/stores/gameStore.ts similarity index 88% rename from bs-game-wip/src/stores/battleGridStore.ts rename to bs-game-wip/src/stores/gameStore.ts index 69dc18ea..015cacfa 100644 --- a/bs-game-wip/src/stores/battleGridStore.ts +++ b/bs-game-wip/src/stores/gameStore.ts @@ -16,7 +16,7 @@ export type Cell = { export type RevealedCellType = 'HIT' | 'MISS' | 'UNKNOWN'; -export type BattleGridState = { +export type GameState = { grid: Cell[]; missedCells: Cell[]; hitCells: Cell[]; @@ -26,9 +26,10 @@ export type BattleGridState = { scrollPosition: [number, number]; mousePosition: [number, number]; selectedCell: Cell | null; + helpWindowOpen: boolean; }; -export type BattleGridActions = { +export type GameActions = { initGrid: (height: number, width: number) => void; setMousePosition: (x: number, y: number) => void; selectCell: () => void; @@ -36,11 +37,12 @@ export type BattleGridActions = { setSingleRevealedCell: (x: number, y: number, type: RevealedCellType) => void; addUnknownCell: (x: number, y: number) => void; clearUnknownCells: () => void; + toggleHelpWindow: () => void; }; -export type BattleGridStore = BattleGridState & BattleGridActions; +export type GameStore = GameState & GameActions; -export const useBattleGridStore = create( +export const useGameStore = create( persist( (set, get) => ({ grid: [], @@ -52,6 +54,7 @@ export const useBattleGridStore = create( scrollPosition: [0, 0], mousePosition: [0, 0], selectedCell: null, + helpWindowOpen: true, initGrid: (height: number, width: number) => set(() => { @@ -124,16 +127,24 @@ export const useBattleGridStore = create( }), clearUnknownCells: () => set({ unknownCells: [] }), + toggleHelpWindow: () => set((state) => ({ helpWindowOpen: !state.helpWindowOpen })), }), { name: 'battle-grid-storage', storage: createJSONStorage(() => localStorage), - partialize: ({ hitCells, missedCells, revealedCells, unknownCells }) => ({ + partialize: ({ hitCells, missedCells, revealedCells, unknownCells, + helpWindowOpen, + }) => ({ + hitCells, + missedCells, + revealedCells, + unknownCells, + helpWindowOpen, }), } - ) as StateCreator + ) as StateCreator ); diff --git a/bs-game-wip/src/stores/messageStore.ts b/bs-game-wip/src/stores/messageStore.ts index fedcb010..ce3f1b29 100644 --- a/bs-game-wip/src/stores/messageStore.ts +++ b/bs-game-wip/src/stores/messageStore.ts @@ -1,14 +1,14 @@ import { create } from 'zustand'; -export interface IMessageStore { +export type MessageStore = { messages: { id: number; text: string; type: MessageType }[]; errorMessage: string; addNewMessage: (msg: string, type?: MessageType) => void; -} +}; type MessageType = 'INFO' | 'ERROR' | 'SUCCESS'; -export const useMessageStore = create((set) => ({ +export const useMessageStore = create((set) => ({ messages: [], errorMessage: '', diff --git a/bs-game-wip/src/tailwind.css b/bs-game-wip/src/tailwind.css index 8aa23323..6f215659 100644 --- a/bs-game-wip/src/tailwind.css +++ b/bs-game-wip/src/tailwind.css @@ -5,5 +5,7 @@ @layer base { :root { --color-accent: 255 111 111; + --color-bg: #1e1e1e; + --color-translucent-bg: #1e1e1ebf; } } diff --git a/bs-game-wip/tailwind.config.js b/bs-game-wip/tailwind.config.js index 173dbe21..25fbb456 100644 --- a/bs-game-wip/tailwind.config.js +++ b/bs-game-wip/tailwind.config.js @@ -6,7 +6,9 @@ module.exports = { extend: { colors: { accent: 'rgb(var(--color-accent) / 1)', - accentBackground: 'rgb(var(--color-accent) / .08)' + accentBackground: 'rgb(var(--color-accent) / .08)', + bg: 'var(--color-bg)', + translucentBg: 'var(--color-translucent-bg)', } }, }, From f42610951bbe217898e54d399bb58c438650ce6a Mon Sep 17 00:00:00 2001 From: PeterB Date: Mon, 15 Jul 2024 21:18:01 +0100 Subject: [PATCH 12/22] WIP: Add charts to fleet strength and cells remaining components. --- bs-game-wip/package-lock.json | 298 +++++++++++++++++- bs-game-wip/package.json | 1 + .../CellsRemaining/CellRemainingPieChart.tsx | 40 +++ .../CellsRemaining/CellsRemaining.tsx | 8 +- .../src/components/Graveyard/Graveyard.tsx | 12 +- .../ProcessingNotification.tsx | 2 + bs-game-wip/src/helpers/formatNumber.ts | 8 + bs-game-wip/src/lib/constants.ts | 1 + bs-game-wip/src/stores/gameStore.ts | 1 - bs-game-wip/todos.md | 4 +- 10 files changed, 360 insertions(+), 15 deletions(-) create mode 100644 bs-game-wip/src/components/CellsRemaining/CellRemainingPieChart.tsx create mode 100644 bs-game-wip/src/helpers/formatNumber.ts diff --git a/bs-game-wip/package-lock.json b/bs-game-wip/package-lock.json index 1428cc6b..79e493f8 100644 --- a/bs-game-wip/package-lock.json +++ b/bs-game-wip/package-lock.json @@ -21,6 +21,7 @@ "pixi.js": "^7.1.4", "react": "^18.3.1", "react-dom": "^18.3.1", + "recharts": "^2.12.7", "tailwindcss": "^3.4.4", "zustand": "^4.5.4" }, @@ -380,7 +381,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", - "peer": true, "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -3816,6 +3816,60 @@ "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.12.tgz", "integrity": "sha512-x2tZZYkSxXqWvTDgveSynfjq/T2HyiZHXb00j/+gy19yp70PHCizM48XFdjBCWH7eHBD0R5i/pw9yMBP/BH5uA==" }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -5089,6 +5143,14 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -5358,8 +5420,117 @@ "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } }, "node_modules/death": { "version": "1.1.0", @@ -5397,6 +5568,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, "node_modules/deep-eql": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", @@ -5519,6 +5695,15 @@ "node": ">=6.0.0" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dotenv": { "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", @@ -6399,6 +6584,14 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -7515,6 +7708,14 @@ "dev": true, "peer": true }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -7871,8 +8072,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -9130,6 +9330,35 @@ "node": ">=0.10.0" } }, + "node_modules/react-smooth": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", + "integrity": "sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -9172,6 +9401,36 @@ "node": ">=8.10.0" } }, + "node_modules/recharts": { + "version": "2.12.7", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.12.7.tgz", + "integrity": "sha512-hlLJMhPQfv4/3NBSAyq3gzGg4h2v69RJh6KU7b3pXYNNAELs9kEoXOjbkxdXpALqKBoVmVptGfLpxdaVYqjmXQ==", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^16.10.2", + "react-smooth": "^4.0.0", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -9235,8 +9494,7 @@ "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "peer": true + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/req-cwd": { "version": "2.0.0", @@ -10483,6 +10741,11 @@ "readable-stream": "3" } }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -11066,6 +11329,27 @@ "devOptional": true, "peer": true }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "node_modules/vite": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", diff --git a/bs-game-wip/package.json b/bs-game-wip/package.json index f471775c..dc203a82 100644 --- a/bs-game-wip/package.json +++ b/bs-game-wip/package.json @@ -23,6 +23,7 @@ "pixi.js": "^7.1.4", "react": "^18.3.1", "react-dom": "^18.3.1", + "recharts": "^2.12.7", "tailwindcss": "^3.4.4", "zustand": "^4.5.4" }, diff --git a/bs-game-wip/src/components/CellsRemaining/CellRemainingPieChart.tsx b/bs-game-wip/src/components/CellsRemaining/CellRemainingPieChart.tsx new file mode 100644 index 00000000..bc1cace4 --- /dev/null +++ b/bs-game-wip/src/components/CellsRemaining/CellRemainingPieChart.tsx @@ -0,0 +1,40 @@ +import {Cell, Pie, PieChart} from 'recharts'; +import formatNumber from "@/helpers/formatNumber"; + +type Props = { + totalCells: number; + revealedCells: number +} + +export default function CellRemainingPieChart({totalCells, revealedCells}: Props) { + const percRevealedCells = (revealedCells/totalCells) * 100 + const percRemaining = 100 - percRevealedCells + const data = [ + { name: 'remaining', value: percRemaining, color: "#ffffff" }, + { name: 'revealed', value: percRevealedCells, color: "#353538" }, + ]; + + return ( + + + {data.map((entry, index) => ( + + ))} + + + {`${formatNumber(percRemaining)}%`} + + + + ); +} diff --git a/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx index b7154528..edd86e87 100644 --- a/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx +++ b/bs-game-wip/src/components/CellsRemaining/CellsRemaining.tsx @@ -4,6 +4,8 @@ import HudWindow from '@/components/HudWindow/HudWindow'; import { COLS, ROWS } from '@/lib/constants'; import { useGameStore } from '@/stores/gameStore'; import { useWalletStore } from '@/stores/walletStore'; +import CellRemainingPieChart from "./CellRemainingPieChart"; +import formatNumber from "@/helpers/formatNumber"; export default function CellsRemaining() { const [misses, hits] = useGameStore(useShallow((state) => [state.missedCells, state.hitCells])); @@ -16,7 +18,7 @@ export default function CellsRemaining() { const Footer = (

- {unknownState ? '?????' : totalCells - numberOfRevealedCells}/{totalCells} + {unknownState ? '?????' : formatNumber(totalCells - numberOfRevealedCells)}/{formatNumber(totalCells)}

Cells remaining

@@ -28,6 +30,8 @@ export default function CellsRemaining() { footerContent={Footer} isOpen={isConnected} closedContent={Disconnected} - /> + > + + ); } diff --git a/bs-game-wip/src/components/Graveyard/Graveyard.tsx b/bs-game-wip/src/components/Graveyard/Graveyard.tsx index f0d03ade..d03f2212 100644 --- a/bs-game-wip/src/components/Graveyard/Graveyard.tsx +++ b/bs-game-wip/src/components/Graveyard/Graveyard.tsx @@ -3,12 +3,15 @@ import ShipSunk from '@/assets/shipSunk.svg'; import HudWindow from '@/components/HudWindow/HudWindow'; import { useContractStore } from '@/stores/contractStore'; import { useWalletStore } from '@/stores/walletStore'; +import {SHIP_SIZE} from "@/lib/constants"; +import {useGameStore} from "@/stores/gameStore"; export default function Graveyard() { - const [graveyard] = useContractStore((state) => [state.graveyard]); + const graveyard = useContractStore(state => state.graveyard); + const hitCells = useGameStore(state => state.hitCells) const isConnected = useWalletStore((state) => state.isConnected); const sunkShipTotal = graveyard.reduce((nxt, cur) => (cur ? nxt : nxt + 1), 0); - const fleetHealth = (sunkShipTotal / graveyard.length) * 100; + const fleetHealth = 100 - ((hitCells.length / (graveyard.length * SHIP_SIZE)) * 100); const unknownState = graveyard.length === 0; const Footer = ( @@ -17,7 +20,10 @@ export default function Graveyard() {

{unknownState ? '???' : fleetHealth.toFixed(1)}% PERC

-

+

+
+
+

{unknownState ? '???' : sunkShipTotal}/{unknownState ? '???' : graveyard.length}

Ships remaining

diff --git a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx index 89d0f80b..c60c3405 100644 --- a/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx +++ b/bs-game-wip/src/components/ProcessingNotification/ProcessingNotification.tsx @@ -84,6 +84,7 @@ export default function ProcessingNotification() { }; return ( +
+
); } diff --git a/bs-game-wip/src/helpers/formatNumber.ts b/bs-game-wip/src/helpers/formatNumber.ts new file mode 100644 index 00000000..79252ee6 --- /dev/null +++ b/bs-game-wip/src/helpers/formatNumber.ts @@ -0,0 +1,8 @@ +export default function formatNumber (number: number) { + const formatter = new Intl.NumberFormat('en-US', { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }) + + return formatter.format(number) +} ; \ No newline at end of file diff --git a/bs-game-wip/src/lib/constants.ts b/bs-game-wip/src/lib/constants.ts index 7815dfc9..02f1dab3 100644 --- a/bs-game-wip/src/lib/constants.ts +++ b/bs-game-wip/src/lib/constants.ts @@ -10,5 +10,6 @@ export const CONTAINER_HEIGHT = 500; export const COLS = 100; export const ROWS = 100; export const HEX_GRID_MARGIN = 32; +export const SHIP_SIZE = 3 export const QUERY_INTERVAL_MS = 5000; diff --git a/bs-game-wip/src/stores/gameStore.ts b/bs-game-wip/src/stores/gameStore.ts index 015cacfa..0828359b 100644 --- a/bs-game-wip/src/stores/gameStore.ts +++ b/bs-game-wip/src/stores/gameStore.ts @@ -95,7 +95,6 @@ export const useGameStore = create( set({ selectedCell }); const submitGuess = useContractStore.getState().submitGuess; submitGuess(selectedCell.col, selectedCell.row); - // useContractStore.setState({lastGuessCoords: [selectedCell.x, selectedCell.y]}); }, setRevealedCells: ( diff --git a/bs-game-wip/todos.md b/bs-game-wip/todos.md index 516d32c8..fbe0f443 100644 --- a/bs-game-wip/todos.md +++ b/bs-game-wip/todos.md @@ -2,7 +2,6 @@ - gameover screen/state - explosion effect/notification when ship is sunk - Stress test -- Get started help - component help tips - Make responsive for mobile? - map legend @@ -15,8 +14,9 @@ - improve performance - display age of gameboard - modify UI and contract to inform user if ship was sunk on hit/guess -- Game rules/how to play window +- ~~- Game rules/how to play window~~ +- ~~Get started help~~ - ~~Update contract and UI as per discussion~~ - ~~Persist game state on page reloads~~ - ~~empty game state~~ From 138d6fa6b6128a8e8ffab93b39b5492f05db329b Mon Sep 17 00:00:00 2001 From: PeterB Date: Mon, 15 Jul 2024 22:32:50 +0100 Subject: [PATCH 13/22] WIP: move new BSG codebase from work from wip folder to the existing one --- .../.eslintrc.cjs | 0 battleship-game/.gitignore | 6 +- {bs-game-wip => battleship-game}/.prettierrc | 0 battleship-game/.prettierrc.json | 8 - battleship-game/.vscode/extensions.json | 3 - battleship-game/README.md | 52 +- battleship-game/contracts/BattleshipGame.sol | 355 +- battleship-game/env.d.ts | 9 - .../hardhat.config.cjs | 0 battleship-game/hardhat.config.js | 31 - battleship-game/index.html | 25 +- battleship-game/package-lock.json | 21365 ++++++---------- battleship-game/package.json | 74 +- battleship-game/postcss.config.js | 6 +- .../fonts/DMSans/DMSans-BlackItalic.ttf | Bin 61236 -> 0 bytes .../assets/fonts/DMSans/DMSans-Bold.ttf | Bin 56272 -> 0 bytes .../assets/fonts/DMSans/DMSans-Light.ttf | Bin 56336 -> 0 bytes .../assets/fonts/DMSans/DMSans-Medium.ttf | Bin 56380 -> 0 bytes .../assets/fonts/DMSans/DMSans-Regular.ttf | Bin 56352 -> 0 bytes .../assets/fonts/DMSans/DMSans-SemiBold.ttf | Bin 56340 -> 0 bytes .../public/assets/fonts/DMSans/stylesheet.css | 47 - .../assets/fonts/Quicksand/Quicksand-Bold.ttf | Bin 78596 -> 0 bytes .../fonts/Quicksand/Quicksand-Light.ttf | Bin 78660 -> 0 bytes .../fonts/Quicksand/Quicksand-Medium.ttf | Bin 78948 -> 0 bytes .../fonts/Quicksand/Quicksand-Regular.ttf | Bin 78936 -> 0 bytes .../fonts/Quicksand/Quicksand-SemiBold.ttf | Bin 78820 -> 0 bytes .../assets/fonts/Quicksand/stylesheet.css | 39 - battleship-game/public/assets/images/ball.png | Bin 3172 -> 0 bytes .../public/assets/images/checking-data.png | Bin 20474 -> 0 bytes .../assets/images/encrypted-ethereum-logo.png | Bin 16435 -> 0 bytes .../assets/images/meeting-landscape.png | Bin 11159864 -> 0 bytes {bs-game-wip => battleship-game}/src/App.css | 0 {bs-game-wip => battleship-game}/src/App.tsx | 0 battleship-game/src/App.vue | 9 - .../src/api/contract/contract.api.ts | 0 .../src/api/contract/contract.keys.ts | 0 .../src/api/contract/contract.models.ts | 0 .../src/api/contract/contract.mutations.ts | 0 .../src/api/contract/contract.queries.ts | 0 battleship-game/src/assets/Ship1.svg | 13 - battleship-game/src/assets/Ship2.svg | 25 - battleship-game/src/assets/Ship3.svg | 18 - battleship-game/src/assets/Ship4.svg | 39 - battleship-game/src/assets/Ship5.svg | 20 - .../src/assets/battleship-dark.svg | 12 - .../src/assets/battleship-ship-x.png | Bin 901 -> 0 bytes .../src/assets/battleship-ship-x.svg | 27 - .../src/assets/battleship-ship-y.png | Bin 1048 -> 0 bytes .../src/assets/battleship-ship-y.svg | 32 - battleship-game/src/assets/battleship.svg | 12 - battleship-game/src/assets/carrier-ship-x.png | Bin 541 -> 0 bytes battleship-game/src/assets/carrier-ship-x.svg | 39 - battleship-game/src/assets/carrier-ship-y.png | Bin 595 -> 0 bytes battleship-game/src/assets/carrier-ship-y.svg | 39 - .../src/assets/contract/address.json | 2 +- battleship-game/src/assets/cruiser-ship-x.png | Bin 869 -> 0 bytes battleship-game/src/assets/cruiser-ship-x.svg | 13 - battleship-game/src/assets/cruiser-ship-y.png | Bin 962 -> 0 bytes battleship-game/src/assets/cruiser-ship-y.svg | 18 - .../src/assets/destroyer-ship-x.png | Bin 871 -> 0 bytes .../src/assets/destroyer-ship-x.svg | 20 - .../src/assets/destroyer-ship-y.png | Bin 1015 -> 0 bytes .../src/assets/destroyer-ship-y.svg | 25 - .../src/assets/hex.svg | 0 .../src/assets/icons/favicon-32x32.png | Bin 572 -> 0 bytes battleship-game/src/assets/icons/favicon.ico | Bin 996 -> 0 bytes .../src/assets/icons/icon_metamask.png | Bin 2765 -> 0 bytes battleship-game/src/assets/logo.png | Bin 8900 -> 0 bytes .../src/assets/metamask-logo.svg | 0 .../src/assets/shipFresh.svg | 0 .../src/assets/shipSunk.svg | 0 .../src/assets/submarine-ship-x.png | Bin 806 -> 0 bytes .../src/assets/submarine-ship-x.svg | 25 - .../src/assets/submarine-ship-y.png | Bin 899 -> 0 bytes .../src/assets/submarine-ship-y.svg | 25 - .../src/assets/white_logotype.png | Bin .../components/AnimatedText/AnimatedText.tsx | 0 .../AnimatedText/AnimatedTextCursor.tsx | 0 .../AnimatedText/styles.module.scss | 0 .../src/components/BattleGrid/BattleGrid.tsx | 0 .../BattleGrid/BattleGridCanvas.tsx | 0 .../BattleGrid/BattleGridContainer.tsx | 0 .../BattleGridCurrentCoordinates.tsx | 0 .../BattleGrid/BattleGridCursor.tsx | 0 .../BattleGrid/BattleGridExplosion.tsx | 0 .../BattleGridExplosionParticle.tsx | 0 .../components/BattleGrid/BattleGridHits.tsx | 0 .../BattleGrid/BattleGridMisses.tsx | 0 .../BattleGrid/BattleGridUnknowns.tsx | 0 battleship-game/src/components/Battleship.vue | 32 - .../src/components/Button/Button.tsx | 0 .../src/components/Button/styles.module.scss | 0 .../CellHighlight/CellHighlight.tsx | 0 .../CellHighlight/CellHighlightParticle.tsx | 0 .../CellHighlight/CellHighlightStates.ts | 0 .../CellsRemaining/CellRemainingPieChart.tsx | 0 .../CellsRemaining/CellsRemaining.tsx | 0 battleship-game/src/components/Controls.vue | 113 - battleship-game/src/components/Game.vue | 110 - battleship-game/src/components/GameOver.vue | 58 - battleship-game/src/components/Gameboard.vue | 164 - .../src/components/Graveyard/Graveyard.tsx | 0 .../src/components/HelpWindow/HelpWindow.tsx | 0 .../src/components/HudWindow/HudWindow.tsx | 0 .../components/HudWindow/styles.module.scss | 0 battleship-game/src/components/Loading.vue | 100 - .../src/components/MessageLog/MessageLog.tsx | 0 .../components/MessageLog/styles.module.scss | 0 .../src/components/MetaMask/MetaMask.tsx | 0 .../src/components/MetaMaskConnectButton.vue | 81 - .../src/components/PageHeader/PageHeader.tsx | 0 .../src/components/PrizePool/PrizePool.tsx | 0 .../ProcessingNotification.tsx | 0 battleship-game/src/components/Topbar.vue | 39 - .../src/contexts/EventContext.tsx | 0 .../src/helpers/createHexagon.ts | 0 .../src/helpers/drawGridCells.ts | 0 .../src/helpers/formatAddress.ts | 0 .../src/helpers/formatNumber.ts | 0 .../src/helpers/getCellCoordsFromXY.ts | 0 .../src/helpers/getCellXY.ts | 0 .../src/helpers/getIndexFromCoords.ts | 0 .../src/helpers/getSnappedMousePosition.ts | 0 .../src/helpers/handleMetaMaskError.ts | 0 .../src/helpers/isInViewport.ts | 0 .../src/index.css | 0 battleship-game/src/lib/common.js | 3 - battleship-game/src/lib/constants.ts | 80 +- .../src/lib/trackEvent.ts | 0 battleship-game/src/lib/utils.js | 32 - battleship-game/src/lib/web3listener.js | 57 - battleship-game/src/lib/web3service.js | 118 - battleship-game/src/main.css | 219 - battleship-game/src/main.ts | 18 - {bs-game-wip => battleship-game}/src/main.tsx | 0 battleship-game/src/router/index.ts | 17 - battleship-game/src/stores/battleStore.ts | 82 - battleship-game/src/stores/contractStore.ts | 281 +- .../src/stores/gameStore.ts | 0 battleship-game/src/stores/messageStore.ts | 46 +- .../src/stores/metaMaskStore.ts | 0 battleship-game/src/stores/walletStore.ts | 50 +- .../src/tailwind.css | 0 battleship-game/src/types.ts | 20 - battleship-game/src/views/Home.vue | 14 - .../src/vite-env.d.ts | 0 battleship-game/tailwind.config.js | 107 +- {bs-game-wip => battleship-game}/todos.md | 2 +- battleship-game/tsconfig.app.json | 31 +- battleship-game/tsconfig.json | 34 +- battleship-game/tsconfig.node.json | 19 +- battleship-game/vite.config.ts | 15 +- bs-game-wip/.gitignore | 24 - bs-game-wip/README.md | 34 - bs-game-wip/contracts/BattleshipGame.sol | 225 - bs-game-wip/index.html | 16 - bs-game-wip/package-lock.json | 11792 --------- bs-game-wip/package.json | 49 - bs-game-wip/postcss.config.js | 6 - bs-game-wip/src/assets/contract/address.json | 1 - bs-game-wip/src/lib/constants.ts | 15 - bs-game-wip/src/stores/contractStore.ts | 194 - bs-game-wip/src/stores/messageStore.ts | 27 - bs-game-wip/src/stores/walletStore.ts | 34 - bs-game-wip/tailwind.config.js | 19 - bs-game-wip/tsconfig.app.json | 27 - bs-game-wip/tsconfig.json | 25 - bs-game-wip/tsconfig.node.json | 13 - bs-game-wip/vite.config.ts | 14 - 169 files changed, 8354 insertions(+), 28536 deletions(-) rename {bs-game-wip => battleship-game}/.eslintrc.cjs (100%) rename {bs-game-wip => battleship-game}/.prettierrc (100%) delete mode 100644 battleship-game/.prettierrc.json delete mode 100644 battleship-game/.vscode/extensions.json delete mode 100644 battleship-game/env.d.ts rename {bs-game-wip => battleship-game}/hardhat.config.cjs (100%) delete mode 100644 battleship-game/hardhat.config.js delete mode 100644 battleship-game/public/assets/fonts/DMSans/DMSans-BlackItalic.ttf delete mode 100644 battleship-game/public/assets/fonts/DMSans/DMSans-Bold.ttf delete mode 100644 battleship-game/public/assets/fonts/DMSans/DMSans-Light.ttf delete mode 100644 battleship-game/public/assets/fonts/DMSans/DMSans-Medium.ttf delete mode 100644 battleship-game/public/assets/fonts/DMSans/DMSans-Regular.ttf delete mode 100644 battleship-game/public/assets/fonts/DMSans/DMSans-SemiBold.ttf delete mode 100644 battleship-game/public/assets/fonts/DMSans/stylesheet.css delete mode 100644 battleship-game/public/assets/fonts/Quicksand/Quicksand-Bold.ttf delete mode 100644 battleship-game/public/assets/fonts/Quicksand/Quicksand-Light.ttf delete mode 100644 battleship-game/public/assets/fonts/Quicksand/Quicksand-Medium.ttf delete mode 100644 battleship-game/public/assets/fonts/Quicksand/Quicksand-Regular.ttf delete mode 100644 battleship-game/public/assets/fonts/Quicksand/Quicksand-SemiBold.ttf delete mode 100644 battleship-game/public/assets/fonts/Quicksand/stylesheet.css delete mode 100644 battleship-game/public/assets/images/ball.png delete mode 100644 battleship-game/public/assets/images/checking-data.png delete mode 100644 battleship-game/public/assets/images/encrypted-ethereum-logo.png delete mode 100644 battleship-game/public/assets/images/meeting-landscape.png rename {bs-game-wip => battleship-game}/src/App.css (100%) rename {bs-game-wip => battleship-game}/src/App.tsx (100%) delete mode 100644 battleship-game/src/App.vue rename {bs-game-wip => battleship-game}/src/api/contract/contract.api.ts (100%) rename {bs-game-wip => battleship-game}/src/api/contract/contract.keys.ts (100%) rename {bs-game-wip => battleship-game}/src/api/contract/contract.models.ts (100%) rename {bs-game-wip => battleship-game}/src/api/contract/contract.mutations.ts (100%) rename {bs-game-wip => battleship-game}/src/api/contract/contract.queries.ts (100%) delete mode 100644 battleship-game/src/assets/Ship1.svg delete mode 100644 battleship-game/src/assets/Ship2.svg delete mode 100644 battleship-game/src/assets/Ship3.svg delete mode 100644 battleship-game/src/assets/Ship4.svg delete mode 100644 battleship-game/src/assets/Ship5.svg delete mode 100644 battleship-game/src/assets/battleship-dark.svg delete mode 100644 battleship-game/src/assets/battleship-ship-x.png delete mode 100644 battleship-game/src/assets/battleship-ship-x.svg delete mode 100644 battleship-game/src/assets/battleship-ship-y.png delete mode 100644 battleship-game/src/assets/battleship-ship-y.svg delete mode 100644 battleship-game/src/assets/battleship.svg delete mode 100644 battleship-game/src/assets/carrier-ship-x.png delete mode 100644 battleship-game/src/assets/carrier-ship-x.svg delete mode 100644 battleship-game/src/assets/carrier-ship-y.png delete mode 100644 battleship-game/src/assets/carrier-ship-y.svg delete mode 100644 battleship-game/src/assets/cruiser-ship-x.png delete mode 100644 battleship-game/src/assets/cruiser-ship-x.svg delete mode 100644 battleship-game/src/assets/cruiser-ship-y.png delete mode 100644 battleship-game/src/assets/cruiser-ship-y.svg delete mode 100644 battleship-game/src/assets/destroyer-ship-x.png delete mode 100644 battleship-game/src/assets/destroyer-ship-x.svg delete mode 100644 battleship-game/src/assets/destroyer-ship-y.png delete mode 100644 battleship-game/src/assets/destroyer-ship-y.svg rename {bs-game-wip => battleship-game}/src/assets/hex.svg (100%) delete mode 100644 battleship-game/src/assets/icons/favicon-32x32.png delete mode 100644 battleship-game/src/assets/icons/favicon.ico delete mode 100644 battleship-game/src/assets/icons/icon_metamask.png delete mode 100644 battleship-game/src/assets/logo.png rename {bs-game-wip => battleship-game}/src/assets/metamask-logo.svg (100%) rename {bs-game-wip => battleship-game}/src/assets/shipFresh.svg (100%) rename {bs-game-wip => battleship-game}/src/assets/shipSunk.svg (100%) delete mode 100644 battleship-game/src/assets/submarine-ship-x.png delete mode 100644 battleship-game/src/assets/submarine-ship-x.svg delete mode 100644 battleship-game/src/assets/submarine-ship-y.png delete mode 100644 battleship-game/src/assets/submarine-ship-y.svg rename {bs-game-wip => battleship-game}/src/assets/white_logotype.png (100%) rename {bs-game-wip => battleship-game}/src/components/AnimatedText/AnimatedText.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/AnimatedText/AnimatedTextCursor.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/AnimatedText/styles.module.scss (100%) rename {bs-game-wip => battleship-game}/src/components/BattleGrid/BattleGrid.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/BattleGrid/BattleGridCanvas.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/BattleGrid/BattleGridContainer.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/BattleGrid/BattleGridCurrentCoordinates.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/BattleGrid/BattleGridCursor.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/BattleGrid/BattleGridExplosion.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/BattleGrid/BattleGridExplosionParticle.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/BattleGrid/BattleGridHits.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/BattleGrid/BattleGridMisses.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/BattleGrid/BattleGridUnknowns.tsx (100%) delete mode 100644 battleship-game/src/components/Battleship.vue rename {bs-game-wip => battleship-game}/src/components/Button/Button.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/Button/styles.module.scss (100%) rename {bs-game-wip => battleship-game}/src/components/CellHighlight/CellHighlight.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/CellHighlight/CellHighlightParticle.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/CellHighlight/CellHighlightStates.ts (100%) rename {bs-game-wip => battleship-game}/src/components/CellsRemaining/CellRemainingPieChart.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/CellsRemaining/CellsRemaining.tsx (100%) delete mode 100644 battleship-game/src/components/Controls.vue delete mode 100644 battleship-game/src/components/Game.vue delete mode 100644 battleship-game/src/components/GameOver.vue delete mode 100644 battleship-game/src/components/Gameboard.vue rename {bs-game-wip => battleship-game}/src/components/Graveyard/Graveyard.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/HelpWindow/HelpWindow.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/HudWindow/HudWindow.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/HudWindow/styles.module.scss (100%) delete mode 100644 battleship-game/src/components/Loading.vue rename {bs-game-wip => battleship-game}/src/components/MessageLog/MessageLog.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/MessageLog/styles.module.scss (100%) rename {bs-game-wip => battleship-game}/src/components/MetaMask/MetaMask.tsx (100%) delete mode 100644 battleship-game/src/components/MetaMaskConnectButton.vue rename {bs-game-wip => battleship-game}/src/components/PageHeader/PageHeader.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/PrizePool/PrizePool.tsx (100%) rename {bs-game-wip => battleship-game}/src/components/ProcessingNotification/ProcessingNotification.tsx (100%) delete mode 100644 battleship-game/src/components/Topbar.vue rename {bs-game-wip => battleship-game}/src/contexts/EventContext.tsx (100%) rename {bs-game-wip => battleship-game}/src/helpers/createHexagon.ts (100%) rename {bs-game-wip => battleship-game}/src/helpers/drawGridCells.ts (100%) rename {bs-game-wip => battleship-game}/src/helpers/formatAddress.ts (100%) rename {bs-game-wip => battleship-game}/src/helpers/formatNumber.ts (100%) rename {bs-game-wip => battleship-game}/src/helpers/getCellCoordsFromXY.ts (100%) rename {bs-game-wip => battleship-game}/src/helpers/getCellXY.ts (100%) rename {bs-game-wip => battleship-game}/src/helpers/getIndexFromCoords.ts (100%) rename {bs-game-wip => battleship-game}/src/helpers/getSnappedMousePosition.ts (100%) rename {bs-game-wip => battleship-game}/src/helpers/handleMetaMaskError.ts (100%) rename {bs-game-wip => battleship-game}/src/helpers/isInViewport.ts (100%) rename {bs-game-wip => battleship-game}/src/index.css (100%) delete mode 100644 battleship-game/src/lib/common.js rename {bs-game-wip => battleship-game}/src/lib/trackEvent.ts (100%) delete mode 100644 battleship-game/src/lib/utils.js delete mode 100644 battleship-game/src/lib/web3listener.js delete mode 100644 battleship-game/src/lib/web3service.js delete mode 100644 battleship-game/src/main.css delete mode 100644 battleship-game/src/main.ts rename {bs-game-wip => battleship-game}/src/main.tsx (100%) delete mode 100644 battleship-game/src/router/index.ts delete mode 100644 battleship-game/src/stores/battleStore.ts rename {bs-game-wip => battleship-game}/src/stores/gameStore.ts (100%) rename {bs-game-wip => battleship-game}/src/stores/metaMaskStore.ts (100%) rename {bs-game-wip => battleship-game}/src/tailwind.css (100%) delete mode 100644 battleship-game/src/types.ts delete mode 100644 battleship-game/src/views/Home.vue rename {bs-game-wip => battleship-game}/src/vite-env.d.ts (100%) rename {bs-game-wip => battleship-game}/todos.md (96%) delete mode 100644 bs-game-wip/.gitignore delete mode 100644 bs-game-wip/README.md delete mode 100644 bs-game-wip/contracts/BattleshipGame.sol delete mode 100644 bs-game-wip/index.html delete mode 100644 bs-game-wip/package-lock.json delete mode 100644 bs-game-wip/package.json delete mode 100644 bs-game-wip/postcss.config.js delete mode 100644 bs-game-wip/src/assets/contract/address.json delete mode 100644 bs-game-wip/src/lib/constants.ts delete mode 100644 bs-game-wip/src/stores/contractStore.ts delete mode 100644 bs-game-wip/src/stores/messageStore.ts delete mode 100644 bs-game-wip/src/stores/walletStore.ts delete mode 100644 bs-game-wip/tailwind.config.js delete mode 100644 bs-game-wip/tsconfig.app.json delete mode 100644 bs-game-wip/tsconfig.json delete mode 100644 bs-game-wip/tsconfig.node.json delete mode 100644 bs-game-wip/vite.config.ts diff --git a/bs-game-wip/.eslintrc.cjs b/battleship-game/.eslintrc.cjs similarity index 100% rename from bs-game-wip/.eslintrc.cjs rename to battleship-game/.eslintrc.cjs diff --git a/battleship-game/.gitignore b/battleship-game/.gitignore index 38adffa6..a547bf36 100644 --- a/battleship-game/.gitignore +++ b/battleship-game/.gitignore @@ -8,19 +8,15 @@ pnpm-debug.log* lerna-debug.log* node_modules -.DS_Store dist dist-ssr -coverage *.local -/cypress/videos/ -/cypress/screenshots/ - # Editor directories and files .vscode/* !.vscode/extensions.json .idea +.DS_Store *.suo *.ntvs* *.njsproj diff --git a/bs-game-wip/.prettierrc b/battleship-game/.prettierrc similarity index 100% rename from bs-game-wip/.prettierrc rename to battleship-game/.prettierrc diff --git a/battleship-game/.prettierrc.json b/battleship-game/.prettierrc.json deleted file mode 100644 index ecdf3e07..00000000 --- a/battleship-game/.prettierrc.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/prettierrc", - "semi": false, - "tabWidth": 2, - "singleQuote": true, - "printWidth": 100, - "trailingComma": "none" -} diff --git a/battleship-game/.vscode/extensions.json b/battleship-game/.vscode/extensions.json deleted file mode 100644 index c0a6e5a4..00000000 --- a/battleship-game/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] -} diff --git a/battleship-game/README.md b/battleship-game/README.md index 9b4220c3..0d6babed 100644 --- a/battleship-game/README.md +++ b/battleship-game/README.md @@ -1,40 +1,30 @@ -# vue-tutorial +# React + TypeScript + Vite -This template should help get you started developing with Vue 3 in Vite. +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. -## Recommended IDE Setup +Currently, two official plugins are available: -[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh -## Type Support for `.vue` Imports in TS +## Expanding the ESLint configuration -TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: -If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: +- Configure the top-level `parserOptions` property like this: -1. Disable the built-in TypeScript Extension - 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette - 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` -2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. - -## Customize configuration - -See [Vite Configuration Reference](https://vitejs.dev/config/). - -## Project Setup - -```sh -npm install +```js +export default { + // other rules... + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + }, +} ``` -### Compile and Hot-Reload for Development - -```sh -npm run dev -``` - -### Type-Check, Compile and Minify for Production - -```sh -npm run build -``` +- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` +- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/battleship-game/contracts/BattleshipGame.sol b/battleship-game/contracts/BattleshipGame.sol index d18f0c0c..364c3b2a 100644 --- a/battleship-game/contracts/BattleshipGame.sol +++ b/battleship-game/contracts/BattleshipGame.sol @@ -2,145 +2,224 @@ pragma solidity ^0.8.18; contract BattleshipGame { - uint8 constant gridSize = 100; - uint8 constant totalShips = 249; - uint8 constant shipLength = 3; - - struct Position { - uint8 x; - uint8 y; - } - - struct Ship { - Position start; - bool[shipLength] hits; - } - - Ship[totalShips] public ships; - mapping(uint16 => uint8) private positionToShipIndex; - mapping(uint16 => bool) public hits; - uint256 private seed; - uint256 private nonce = 0; - uint256 public prizePool; - bool[totalShips] public graveyard; - uint8 public sunkShipsCount; - bool public gameOver; - - Position[] public hitPositions; - - constructor() { - seed = uint256(keccak256(abi.encodePacked(block.difficulty))); - generatePositions(); - } - - function generatePositions() private { - uint8 index = 0; - while (index < totalShips) { - uint256 hash = uint256(keccak256(abi.encodePacked(seed, nonce))); - for (uint8 i = 0; i < 36 && index < totalShips; i++) { - uint8 x = uint8(hash & 0x7F) % gridSize; - uint8 y = uint8((hash >> 7) & 0x7F) % gridSize; - - if (isPositionUniqueAndFits(x, y)) { - ships[index].start = Position(x, y); - for (uint8 j = 0; j < shipLength; j++) { + uint8 constant gridSize = 100; + uint8 constant totalShips = 249; + uint8 constant shipLength = 3; + address public owner; + mapping(address => bool) public admins; + + struct Position { + uint8 x; + uint8 y; + } + + struct Ship { + Position start; + bool[shipLength] hits; + } + + Ship[totalShips] private ships; + mapping(uint16 => uint8) private positionToShipIndex; + mapping(uint16 => bool) private hits; + mapping(uint16 => bool) private misses; + Position[] private allHits; + Position[] private allMisses; + uint256 private seed; + uint256 private nonce = 0; + uint256 public prizePool; + bool[totalShips] public graveyard; + uint8 public sunkShipsCount; + bool public gameOver; + + /// @notice Initializes the contract by setting the initial seed and generating ship positions. + constructor() { + seed = uint256(keccak256(abi.encodePacked(block.difficulty))); + owner = msg.sender; + admins[owner] = true; + generatePositions(); + } + + modifier onlyAdmin() { + require(admins[msg.sender], "Caller is not an admin"); + _; + } + + modifier onlyOwner() { + require(msg.sender == owner, "Caller is not the owner"); + _; + } + + /// @notice Emitted when a guess is made. + /// @param user The address of the user making the guess. + /// @param guessedCoords The coordinates submitted by the user. + /// @param success True if the guess hit a ship, false otherwise. + //TODO: Add comments + event HitFeedback(address indexed user, uint8[2] guessedCoords, bool success, Position[] allHits, Position[] allMisses, bool[totalShips] graveyard, uint256 prizePool); + + /// @notice Adds a new admin address. Only the owner can add new admins. + /// @param newAdmin The address of the new admin. + function addAdmin(address newAdmin) public onlyOwner { + admins[newAdmin] = true; + } + + /// @notice Generates unique positions for ships on the grid. + function generatePositions() private { + uint8 index = 0; + while (index < totalShips) { + uint256 hash = uint256(keccak256(abi.encodePacked(seed, nonce))); + for (uint8 i = 0; i < 36 && index < totalShips; i++) { + uint8 x = uint8(hash & 0x7F) % gridSize; + uint8 y = uint8((hash >> 7) & 0x7F) % gridSize; + + if (isPositionUniqueAndFits(x, y)) { + ships[index].start = Position(x, y); + for (uint8 j = 0; j < shipLength; j++) { + uint16 positionKey = packCoordinates(x + j, y); + positionToShipIndex[positionKey] = index; + } + index++; + } + hash >>= 14; + } + nonce++; + } + } + + /// @notice Checks if the ship position is unique and fits within the grid. + /// @param x The x-coordinate of the ship's start position. + /// @param y The y-coordinate of the ship's start position. + /// @return bool indicating whether the position is unique and fits within the grid. + function isPositionUniqueAndFits(uint8 x, uint8 y) private view returns (bool) { + if (x + shipLength > gridSize) return false; + for (uint8 j = 0; j < shipLength; j++) { uint16 positionKey = packCoordinates(x + j, y); - positionToShipIndex[positionKey] = index; - } - index++; + if (positionToShipIndex[positionKey] != 0) { + return false; + } } - hash >>= 14; - } - nonce++; - } - } - - function isPositionUniqueAndFits(uint8 x, uint8 y) private view returns (bool) { - if (x + shipLength > gridSize) return false; - for (uint8 j = 0; j < shipLength; j++) { - uint16 positionKey = packCoordinates(x + j, y); - if (positionToShipIndex[positionKey] != 0) { - return false; - } - } - return true; - } - - function packCoordinates(uint8 x, uint8 y) private pure returns (uint16) { - return (uint16(x) << 8) | uint16(y); - } - - function getShipPosition(uint8 shipIndex) public view returns (Position memory) { - require(shipIndex < totalShips, 'Ship index out of bounds'); - return ships[shipIndex].start; - } - - function getAllShipPositions() public view returns (Ship[totalShips] memory) { - return ships; - } - - function getShipAtPosition(uint8 x, uint8 y) public view returns (uint8) { - uint16 positionKey = packCoordinates(x, y); - uint8 shipIndex = positionToShipIndex[positionKey]; - require(shipIndex != 0, 'No ship at given position'); - return shipIndex; - } - - function hit(uint8 x, uint8 y) public payable { - require(!gameOver, 'Game is over, no more hits accepted'); - require(msg.value == 0.0443 ether, 'Incorrect fee amount'); - uint16 positionKey = packCoordinates(x, y); - require(!hits[positionKey], 'Cell already hit'); - - prizePool += msg.value; - hits[positionKey] = true; - hitPositions.push(Position(x, y)); - - uint8 shipIndex = positionToShipIndex[positionKey]; - if (shipIndex != 0) { - Ship storage ship = ships[shipIndex]; - uint8 hitIndex = x - ship.start.x; - ship.hits[hitIndex] = true; - - bool allHit = true; - for (uint8 i = 0; i < shipLength; i++) { - if (!ship.hits[i]) { - allHit = false; - break; + return true; + } + + /// @notice Packs x and y coordinates into a single uint16 value. + /// @param x The x-coordinate. + /// @param y The y-coordinate. + /// @return uint16 representing the packed coordinates. + function packCoordinates(uint8 x, uint8 y) private pure returns (uint16) { + return uint16(x) << 8 | uint16(y); + } + + /// @notice Gets the position of a specific ship by its index. + /// @param shipIndex The index of the ship. + /// @return Position of the ship. + function getShipPosition(uint8 shipIndex) public view onlyAdmin returns (Position memory) { + require(shipIndex < totalShips, "Ship index out of bounds"); + return ships[shipIndex].start; + } + + /// @notice Gets positions of all ships. + /// @return Array of all ships. + function getAllShipPositions() public view onlyAdmin returns (Ship[totalShips] memory) { + return ships; + } + + /// @notice Gets the index of the ship at a specific grid position. + /// @param x The x-coordinate of the position. + /// @param y The y-coordinate of the position. + /// @return The index of the ship at the specified position. + function getShipAtPosition(uint8 x, uint8 y) public view onlyAdmin returns (uint8) { + uint16 positionKey = packCoordinates(x, y); + uint8 shipIndex = positionToShipIndex[positionKey]; + require(shipIndex != 0, "No ship at given position"); + return shipIndex; + } + + /// @notice Hits a position on the grid and checks if a ship is hit. + /// @param x The x-coordinate of the position to hit. + /// @param y The y-coordinate of the position to hit. + function hit(uint8 x, uint8 y) public payable { + require(!gameOver, "Game is over, no more hits accepted"); + require(msg.value == 0.0443 ether, "Incorrect fee amount"); + uint16 positionKey = packCoordinates(x, y); + require(!hits[positionKey], "Cell already hit"); + require(!misses[positionKey], "Cell already hit"); + + prizePool += msg.value; + bool success; + + uint8 shipIndex = positionToShipIndex[positionKey]; + if (shipIndex != 0) { + success = true; + Ship storage ship = ships[shipIndex]; + uint8 hitIndex = x - ship.start.x; + ship.hits[hitIndex] = true; + hits[positionKey] = true; + allHits.push(Position(x, y)); + bool allHit = true; + for (uint8 i = 0; i < shipLength; i++) { + if (!ship.hits[i]) { + allHit = false; + break; + } + } + if (allHit) { + graveyard[shipIndex] = true; + sunkShipsCount++; + if (sunkShipsCount == totalShips) { + gameOver = true; + } + } } - } - if (allHit) { - graveyard[shipIndex] = true; - sunkShipsCount++; - if (sunkShipsCount == totalShips) { - gameOver = true; + else { + success = false; + misses[positionKey] = true; + allMisses.push(Position(x, y)); } - } - } - } - - function isHit(uint8 x, uint8 y) public view returns (bool) { - uint16 positionKey = packCoordinates(x, y); - return hits[positionKey]; - } - - function isSunk(uint8 shipIndex) public view returns (bool) { - require(shipIndex < totalShips, 'Ship index out of bounds'); - return graveyard[shipIndex]; - } - - function getHitsOnShip(uint8 shipIndex) public view returns (bool[shipLength] memory) { - require(shipIndex < totalShips, 'Ship index out of bounds'); - return ships[shipIndex].hits; - } - - function getGraveyard() public view returns (bool[totalShips] memory) { - return graveyard; - } - - /// @notice Gets all hit positions on the grid. - /// @return An array of Position structs representing the hit positions. - function getAllHits() public view returns (Position[] memory) { - return hitPositions; - } -} + + emit HitFeedback(msg.sender, [x, y], success, allHits, allMisses, graveyard, prizePool); + } + + + /// @notice Checks if a specific position on the grid is hit. + /// @param x The x-coordinate of the position. + /// @param y The y-coordinate of the position. + /// @return bool indicating whether the position is hit. + function isHit(uint8 x, uint8 y) public view returns (bool) { + uint16 positionKey = packCoordinates(x, y); + return hits[positionKey]; + } + + /// @notice Checks if a specific ship is sunk. + /// @param shipIndex The index of the ship. + /// @return bool indicating whether the ship is sunk. + function isSunk(uint8 shipIndex) public view returns (bool) { + require(shipIndex < totalShips, "Ship index out of bounds"); + return graveyard[shipIndex]; + } + + /// @notice Gets the hit status of each part of a specific ship. + /// @param shipIndex The index of the ship. + /// @return Array indicating which parts of the ship are hit. + function getHitsOnShip(uint8 shipIndex) public view onlyAdmin returns (bool[shipLength] memory) { + require(shipIndex < totalShips, "Ship index out of bounds"); + return ships[shipIndex].hits; + } + + /// @notice Gets the status of all ships in the graveyard. + /// @return Array indicating which ships are sunk. + function getGraveyard() public view onlyAdmin returns (bool[totalShips] memory) { + return graveyard; + } + + /// @notice Gets all hit positions so far. + /// @return Array of positions that have been hit. + function getAllHits() public view onlyAdmin returns (Position[] memory) { + return allHits; + } + + + /// @notice Gets all miss positions so far. + /// @return Array of positions that have been missed. + function getAllMisses() public view onlyAdmin returns (Position[] memory) { + return allMisses; + } +} \ No newline at end of file diff --git a/battleship-game/env.d.ts b/battleship-game/env.d.ts deleted file mode 100644 index dce85515..00000000 --- a/battleship-game/env.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/// - -interface ImportMetaEnv { - readonly VITE_APP_API_HOST: string -} - -interface ImportMeta { - readonly env: ImportMetaEnv -} diff --git a/bs-game-wip/hardhat.config.cjs b/battleship-game/hardhat.config.cjs similarity index 100% rename from bs-game-wip/hardhat.config.cjs rename to battleship-game/hardhat.config.cjs diff --git a/battleship-game/hardhat.config.js b/battleship-game/hardhat.config.js deleted file mode 100644 index 59f35613..00000000 --- a/battleship-game/hardhat.config.js +++ /dev/null @@ -1,31 +0,0 @@ -/** @type import('hardhat/config').HardhatUserConfig */ - -require('dotenv').config() -require('@nomicfoundation/hardhat-toolbox') -require('@nomiclabs/hardhat-ethers') - -const { PRIVATE_KEY, USER_KEY } = process.env - -task('deploy', 'Deploys the BattleshipGame contract').setAction(async (taskArgs, hre) => { - const BattleshipGame = await hre.ethers.getContractFactory('BattleshipGame') - const battleshipGame = await BattleshipGame.deploy() - await battleshipGame.deployed() - - console.log('BattleshipGame deployed to:', battleshipGame.address) -}) - -module.exports = { - solidity: '0.8.19', - paths: { - sources: './contracts', - artifacts: './src/assets/contract/artifacts' - }, - networks: { - ten: { - chainId: 443, - url: `https://testnet.obscu.ro/v1/${USER_KEY}`, - gasPrice: 2000000000, - accounts: [`0x${PRIVATE_KEY}`] - } - } -} diff --git a/battleship-game/index.html b/battleship-game/index.html index 53b451d8..d441dfaa 100644 --- a/battleship-game/index.html +++ b/battleship-game/index.html @@ -1,27 +1,24 @@ - + + Ten's Battleship Game - - - + + + - -
- +
+ diff --git a/battleship-game/package-lock.json b/battleship-game/package-lock.json index dbefdf49..1d88bd1a 100644 --- a/battleship-game/package-lock.json +++ b/battleship-game/package-lock.json @@ -1,50 +1,63 @@ { - "name": "battleship-game", + "name": "bs-game-wip", "version": "0.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "battleship-game", + "name": "bs-game-wip", "version": "0.0.0", "dependencies": { "@metamask/detect-provider": "^2.0.0", - "axios": "^1.6.5", - "element-plus": "^2.4.2", - "ethers": "^5.6.4", - "oh-vue-icons": "^1.0.0-rc3", - "path": "^0.12.7", - "pinia": "^2.1.7", - "remixicon": "^3.6.0", - "vue": "^3.3.4", - "vue-router": "^4.2.5", - "vuedraggable": "^4.1.0" + "@metamask/rpc-errors": "^6.3.1", + "@pixi/events": "^7.4.2", + "@pixi/filter-advanced-bloom": "^5.1.1", + "@pixi/filter-bloom": "^5.1.1", + "@pixi/filter-glow": "^5.2.1", + "@pixi/graphics-extras": "^7.4.2", + "@pixi/react": "^7.1.2", + "autoprefixer": "^10.4.19", + "classnames": "^2.5.1", + "framer-motion": "^11.3.0", + "pixi.js": "^7.1.4", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "recharts": "^2.12.7", + "tailwindcss": "^3.4.4", + "zustand": "^4.5.4" }, "devDependencies": { - "@metamask/rpc-errors": "^6.1.0", - "@nomicfoundation/hardhat-toolbox": "^2.0.2", - "@rushstack/eslint-patch": "^1.3.3", - "@tsconfig/node18": "^18.2.2", - "@types/node": "^18.18.5", - "@vitejs/plugin-vue": "^4.4.0", - "@vitejs/plugin-vue-jsx": "^3.0.2", - "@vue/tsconfig": "^0.4.0", - "autoprefixer": "^10.4.16", - "dotenv": "^16.4.1", - "hardhat": "^2.18.3", - "npm-run-all2": "^6.1.1", - "postcss": "^8.4.31", - "tailwindcss": "^3.3.5", - "typescript": "~5.2.0", - "vite": "^4.4.11", - "vue-tsc": "^1.8.19" - } + "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "@types/node": "^20.14.9", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@types/ws": "^8.5.11", + "@typescript-eslint/eslint-plugin": "^7.13.1", + "@typescript-eslint/parser": "^7.13.1", + "@vitejs/plugin-react": "^4.3.1", + "dotenv": "^16.4.5", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "postcss": "^8.4.39", + "prettier": "^3.3.2", + "sass": "^1.77.6", + "typescript": "^5.5.3", + "vite": "^5.3.1" + } + }, + "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, + "peer": true }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, "engines": { "node": ">=10" }, @@ -53,56 +66,56 @@ } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", - "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.5", - "@babel/parser": "^7.23.5", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -117,42 +130,39 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/generator": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", - "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", + "node_modules/@babel/core/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, - "dependencies": { - "@babel/types": "^7.23.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -160,98 +170,76 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz", - "integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==", + "node_modules/@babel/helper-compilation-targets/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, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "bin": { + "semver": "bin/semver.js" } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -260,139 +248,100 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" - }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", - "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", - "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -400,13 +349,13 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -415,13 +364,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -430,53 +379,46 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.5.tgz", - "integrity": "sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==", - "dev": true, + "node_modules/@babel/runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.23.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", - "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.5", - "@babel/types": "^7.23.5", - "debug": "^4.1.0", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -484,50 +426,24 @@ } }, "node_modules/@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@chainsafe/as-sha256": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", - "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", - "dev": true - }, - "node_modules/@chainsafe/persistent-merkle-tree": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", - "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", - "dev": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1" - } - }, - "node_modules/@chainsafe/ssz": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", - "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", - "dev": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.4.2", - "case": "^1.6.3" - } - }, "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, + "devOptional": true, "peer": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -540,33 +456,33 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, + "devOptional": true, "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@ctrl/tinycolor": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", - "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=10" - } - }, - "node_modules/@element-plus/icons-vue": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", - "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", - "peerDependencies": { - "vue": "^3.2.0" + "node": ">=12" } }, "node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], @@ -580,9 +496,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], @@ -596,9 +512,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], @@ -612,9 +528,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -628,9 +544,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], @@ -644,9 +560,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], @@ -660,9 +576,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], @@ -676,9 +592,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], @@ -692,9 +608,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], @@ -708,9 +624,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], @@ -724,9 +640,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], @@ -740,9 +656,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], @@ -756,9 +672,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], @@ -772,9 +688,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], @@ -788,9 +704,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], @@ -804,9 +720,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], @@ -820,9 +736,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], @@ -836,9 +752,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], @@ -852,9 +768,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -868,9 +784,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -884,9 +800,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], @@ -900,9 +816,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], @@ -915,11 +831,103 @@ "node": ">=12" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, + "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, + "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/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/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, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@ethereumjs/common": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", - "dev": true, "dependencies": { "@ethereumjs/util": "^8.1.0", "crc-32": "^1.2.0" @@ -929,7 +937,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", - "dev": true, "bin": { "rlp": "bin/rlp" }, @@ -941,7 +948,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", - "dev": true, "dependencies": { "@ethereumjs/common": "^3.2.0", "@ethereumjs/rlp": "^4.0.1", @@ -952,62 +958,43 @@ "node": ">=14" } }, - "node_modules/@ethereumjs/tx/node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "dev": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@ethereumjs/tx/node_modules/@scure/bip32": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", - "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", - "dev": true, + "node_modules/@ethereumjs/tx/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "dependencies": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "@noble/hashes": "1.4.0" }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/@ethereumjs/tx/node_modules/@scure/bip39": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", - "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", - "dev": true, - "dependencies": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "node_modules/@ethereumjs/tx/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==", + "engines": { + "node": ">= 16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@ethereumjs/tx/node_modules/ethereum-cryptography": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", - "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", - "dev": true, + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", "dependencies": { - "@noble/curves": "1.3.0", - "@noble/hashes": "1.3.3", - "@scure/bip32": "1.3.3", - "@scure/bip39": "1.2.2" + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" } }, "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, "dependencies": { "@ethereumjs/rlp": "^4.0.1", "ethereum-cryptography": "^2.0.0", @@ -1017,61 +1004,44 @@ "node": ">=14" } }, - "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "dev": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@ethereumjs/util/node_modules/@scure/bip32": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", - "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", - "dev": true, + "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==", "dependencies": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "@noble/hashes": "1.4.0" }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/@ethereumjs/util/node_modules/@scure/bip39": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", - "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", - "dev": true, - "dependencies": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "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==", + "engines": { + "node": ">= 16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", - "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", - "dev": true, + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", "dependencies": { - "@noble/curves": "1.3.0", - "@noble/hashes": "1.3.3", - "@scure/bip32": "1.3.3", - "@scure/bip39": "1.2.2" + "@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.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, "funding": [ { "type": "individual", @@ -1082,6 +1052,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/address": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -1098,6 +1069,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dev": true, "funding": [ { "type": "individual", @@ -1108,6 +1080,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -1122,6 +1095,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dev": true, "funding": [ { "type": "individual", @@ -1132,6 +1106,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -1144,6 +1119,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dev": true, "funding": [ { "type": "individual", @@ -1154,6 +1130,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -1166,6 +1143,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, "funding": [ { "type": "individual", @@ -1176,6 +1154,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.7.0" } @@ -1184,6 +1163,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dev": true, "funding": [ { "type": "individual", @@ -1194,6 +1174,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/properties": "^5.7.0" @@ -1203,6 +1184,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, "funding": [ { "type": "individual", @@ -1213,6 +1195,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -1223,6 +1206,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, "funding": [ { "type": "individual", @@ -1233,6 +1217,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/logger": "^5.7.0" } @@ -1241,6 +1226,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, "funding": [ { "type": "individual", @@ -1251,6 +1237,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bignumber": "^5.7.0" } @@ -1259,6 +1246,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dev": true, "funding": [ { "type": "individual", @@ -1269,6 +1257,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -1286,6 +1275,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, "funding": [ { "type": "individual", @@ -1296,6 +1286,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -1312,6 +1303,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, "funding": [ { "type": "individual", @@ -1322,6 +1314,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/basex": "^5.7.0", @@ -1341,6 +1334,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, "funding": [ { "type": "individual", @@ -1351,6 +1345,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -1367,10 +1362,18 @@ "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==", + "dev": true, + "peer": true + }, "node_modules/@ethersproject/keccak256": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, "funding": [ { "type": "individual", @@ -1381,6 +1384,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "js-sha3": "0.8.0" @@ -1390,6 +1394,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "dev": true, "funding": [ { "type": "individual", @@ -1399,12 +1404,14 @@ "type": "individual", "url": "https://www.buymeacoffee.com/ricmoo" } - ] - }, + ], + "peer": true + }, "node_modules/@ethersproject/networks": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dev": true, "funding": [ { "type": "individual", @@ -1415,6 +1422,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/logger": "^5.7.0" } @@ -1423,6 +1431,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, "funding": [ { "type": "individual", @@ -1433,6 +1442,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/sha2": "^5.7.0" @@ -1442,6 +1452,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, "funding": [ { "type": "individual", @@ -1452,6 +1463,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/logger": "^5.7.0" } @@ -1460,6 +1472,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dev": true, "funding": [ { "type": "individual", @@ -1470,6 +1483,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -1493,10 +1507,33 @@ "ws": "7.4.6" } }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "peer": 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/@ethersproject/random": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "dev": true, "funding": [ { "type": "individual", @@ -1507,6 +1544,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0" @@ -1516,6 +1554,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dev": true, "funding": [ { "type": "individual", @@ -1526,6 +1565,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0" @@ -1535,6 +1575,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dev": true, "funding": [ { "type": "individual", @@ -1545,6 +1586,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -1555,6 +1597,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, "funding": [ { "type": "individual", @@ -1565,6 +1608,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -1578,6 +1622,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, "funding": [ { "type": "individual", @@ -1588,6 +1633,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -1601,6 +1647,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, "funding": [ { "type": "individual", @@ -1611,6 +1658,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -1621,6 +1669,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dev": true, "funding": [ { "type": "individual", @@ -1631,6 +1680,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/address": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -1647,6 +1697,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, "funding": [ { "type": "individual", @@ -1657,6 +1708,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -1667,6 +1719,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dev": true, "funding": [ { "type": "individual", @@ -1677,6 +1730,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -1699,6 +1753,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dev": true, "funding": [ { "type": "individual", @@ -1709,6 +1764,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/base64": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -1721,6 +1777,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, "funding": [ { "type": "individual", @@ -1731,6 +1788,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/hash": "^5.7.0", @@ -1740,64 +1798,186 @@ } }, "node_modules/@fastify/busboy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", - "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", "dev": true, + "peer": true, "engines": { "node": ">=14" } }, - "node_modules/@floating-ui/core": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz", - "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, "dependencies": { - "@floating-ui/utils": "^0.2.0" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" } }, - "node_modules/@floating-ui/dom": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz", - "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==", + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { - "@floating-ui/core": "^1.5.3", - "@floating-ui/utils": "^0.2.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@floating-ui/utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "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, + "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 + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } @@ -1808,10 +1988,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1830,6 +2009,7 @@ "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", "dev": true, + "peer": true, "dependencies": { "ethereumjs-abi": "^0.6.8", "ethereumjs-util": "^6.2.1", @@ -1841,100 +2021,107 @@ "node": ">=12.0.0" } }, - "node_modules/@metamask/rpc-errors": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.1.0.tgz", - "integrity": "sha512-JQElKxai26FpDyRKO/yH732wI+BV90i1u6pOuDOpdADSbppB2g1pPh3AGST1zkZqEE9eIKIUw8UdBQ4rp3VTSg==", + "node_modules/@metamask/eth-sig-util/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true, + "peer": true + }, + "node_modules/@metamask/eth-sig-util/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "dev": true, + "peer": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/@metamask/rpc-errors": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.3.1.tgz", + "integrity": "sha512-ugDY7cKjF4/yH5LtBaOIKHw/AiGGSAmzptAUEiAEGr/78LwuzcXAxmzEQfSfMIfI+f9Djr8cttq1pRJJKfTuCg==", "dependencies": { - "@metamask/utils": "^8.1.0", + "@metamask/utils": "^9.0.0", "fast-safe-stringify": "^2.0.6" }, "engines": { "node": ">=16.0.0" } }, + "node_modules/@metamask/superstruct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@metamask/superstruct/-/superstruct-3.1.0.tgz", + "integrity": "sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA==", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@metamask/utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.3.0.tgz", - "integrity": "sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw==", - "dev": true, + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.0.0.tgz", + "integrity": "sha512-Q/PzQCm6rkmePxHghXgJuYEkVfSvwKLLFZwFtfmLAz4mxIPuFJSMawaJM7sfZsVybK5Bf9QaKAjgMvHk5iGGvA==", "dependencies": { "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", "@noble/hashes": "^1.3.1", "@scure/base": "^1.1.3", "@types/debug": "^4.1.7", "debug": "^4.3.4", "pony-cause": "^2.1.10", "semver": "^7.5.4", - "superstruct": "^1.0.3" + "uuid": "^9.0.1" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@metamask/utils/node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "dev": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@metamask/utils/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@metamask/utils/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "node_modules/@metamask/utils/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "uuid": "dist/bin/uuid" } }, - "node_modules/@metamask/utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@noble/curves": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", - "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "dev": true, + "peer": true, "dependencies": { - "@noble/hashes": "1.3.3" + "@noble/hashes": "1.3.2" }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "dev": true, + "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==", "engines": { "node": ">= 16" }, @@ -1942,18 +2129,6 @@ "url": "https://paulmillr.com/funding/" } }, - "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/" - } - ] - }, "node_modules/@noble/secp256k1": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", @@ -1964,13 +2139,13 @@ "type": "individual", "url": "https://paulmillr.com/funding/" } - ] + ], + "peer": true }, "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==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1983,7 +2158,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } @@ -1992,7 +2166,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2001,3796 +2174,3927 @@ "node": ">= 8" } }, - "node_modules/@nomicfoundation/ethereumjs-block": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz", - "integrity": "sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==", + "node_modules/@nomicfoundation/edr": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.4.1.tgz", + "integrity": "sha512-NgrMo2rI9r28uidumvd+K2/AJLdxtXsUlJr3hj/pM6S1FCd/HiWaLeLa/cjCVPcE2u1rYAa3W6UFxLCB7S5Dhw==", "dev": true, + "peer": true, "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-trie": "6.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "ethereum-cryptography": "0.1.3", - "ethers": "^5.7.1" + "@nomicfoundation/edr-darwin-arm64": "0.4.1", + "@nomicfoundation/edr-darwin-x64": "0.4.1", + "@nomicfoundation/edr-linux-arm64-gnu": "0.4.1", + "@nomicfoundation/edr-linux-arm64-musl": "0.4.1", + "@nomicfoundation/edr-linux-x64-gnu": "0.4.1", + "@nomicfoundation/edr-linux-x64-musl": "0.4.1", + "@nomicfoundation/edr-win32-x64-msvc": "0.4.1" }, "engines": { - "node": ">=14" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-block/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==", + "node_modules/@nomicfoundation/edr-darwin-arm64": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.4.1.tgz", + "integrity": "sha512-XuiUUnWAVNw7JYv7nRqDWfpBm21HOxCRBQ8lQnRnmiets9Ss2X5Ul9mvBheIPh/D0wBzwJ8TRtsSrorpwE79cA==", "dev": 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" + "peer": true, + "engines": { + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-blockchain": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz", - "integrity": "sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==", + "node_modules/@nomicfoundation/edr-darwin-x64": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.4.1.tgz", + "integrity": "sha512-N1MfJqEX5ixaXlyyrHnaYxzwIT27Nc/jUgLI7ts4/9kRvPTvyZRYmXS1ciKhmUFr/WvFckTCix2RJbZoGGtX7g==", "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.2", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-ethash": "3.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-trie": "6.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "abstract-level": "^1.0.3", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "level": "^8.0.0", - "lru-cache": "^5.1.1", - "memory-level": "^1.0.0" - }, + "peer": true, "engines": { - "node": ">=14" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-blockchain/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==", + "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.4.1.tgz", + "integrity": "sha512-bSPOfmcFjJwDgWOV5kgZHeqg2OWu1cINrHSGjig0aVHehjcoX4Sgayrj6fyAxcOV5NQKA6WcyTFll6NrCxzWRA==", "dev": 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" + "peer": true, + "engines": { + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-common": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz", - "integrity": "sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==", + "node_modules/@nomicfoundation/edr-linux-arm64-musl": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.4.1.tgz", + "integrity": "sha512-F/+DgOdeBFQDrk+SX4aFffJFBgJfd75ZtE2mjcWNAh/qWiS7NfUxdQX/5OvNo/H6EY4a+3bZH6Bgzqg4mEWvMw==", "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-util": "9.0.2", - "crc-32": "^1.2.0" + "peer": true, + "engines": { + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-ethash": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz", - "integrity": "sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==", + "node_modules/@nomicfoundation/edr-linux-x64-gnu": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.4.1.tgz", + "integrity": "sha512-POHhTWczIXCPhzKtY0Vt/l+VCqqCx5gNR5ErwSrNnLz/arfQobZFAU+nc61BX3Jch82TW8b3AbfGI73Kh7gO0w==", "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "abstract-level": "^1.0.3", - "bigint-crypto-utils": "^3.0.23", - "ethereum-cryptography": "0.1.3" - }, + "peer": true, "engines": { - "node": ">=14" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-ethash/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==", + "node_modules/@nomicfoundation/edr-linux-x64-musl": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.4.1.tgz", + "integrity": "sha512-uu8oNp4Ozg3H1x1We0FF+rwXfFiAvsOm5GQ+OBx9YYOXnfDPWqguQfGIkhrti9GD0iYhfQ/WOG5wvp0IzzgGSg==", "dev": 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" + "peer": true, + "engines": { + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-evm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz", - "integrity": "sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==", + "node_modules/@nomicfoundation/edr-win32-x64-msvc": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.4.1.tgz", + "integrity": "sha512-PaZHFw455z89ZiKYNTnKu+/TiVZVRI+mRJsbRTe2N0VlYfUBS1o2gdXBM12oP1t198HR7xQwEPPAslTFxGBqHA==", "dev": true, - "dependencies": { - "@ethersproject/providers": "^5.7.1", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - }, + "peer": true, "engines": { - "node": ">=14" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-evm/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==", + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", + "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", "dev": true, + "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" + "@nomicfoundation/ethereumjs-util": "9.0.4" } }, "node_modules/@nomicfoundation/ethereumjs-rlp": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz", - "integrity": "sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", + "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", "dev": true, + "peer": true, "bin": { - "rlp": "bin/rlp" + "rlp": "bin/rlp.cjs" }, "engines": { - "node": ">=14" + "node": ">=18" } }, - "node_modules/@nomicfoundation/ethereumjs-statemanager": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz", - "integrity": "sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==", + "node_modules/@nomicfoundation/ethereumjs-tx": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz", + "integrity": "sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==", "dev": true, + "peer": true, "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "ethers": "^5.7.1", - "js-sdsl": "^4.1.4" + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "c-kzg": "^2.1.2" + }, + "peerDependenciesMeta": { + "c-kzg": { + "optional": true + } } }, - "node_modules/@nomicfoundation/ethereumjs-statemanager/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==", + "node_modules/@nomicfoundation/ethereumjs-util": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz", + "integrity": "sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==", "dev": true, + "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" + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "c-kzg": "^2.1.2" + }, + "peerDependenciesMeta": { + "c-kzg": { + "optional": true + } } }, - "node_modules/@nomicfoundation/ethereumjs-trie": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz", - "integrity": "sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==", + "node_modules/@nomicfoundation/hardhat-chai-matchers": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.7.tgz", + "integrity": "sha512-RQfsiTwdf0SP+DtuNYvm4921X6VirCQq0Xyh+mnuGlTwEFSPZ/o27oQC+l+3Y/l48DDU7+ZcYBR+Fp+Rp94LfQ==", "dev": true, + "peer": true, "dependencies": { - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "@types/readable-stream": "^2.3.13", - "ethereum-cryptography": "0.1.3", - "readable-stream": "^3.6.0" + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" }, - "engines": { - "node": ">=14" + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "chai": "^4.2.0", + "ethers": "^6.1.0", + "hardhat": "^2.9.4" } }, - "node_modules/@nomicfoundation/ethereumjs-trie/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==", + "node_modules/@nomicfoundation/hardhat-ethers": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.6.tgz", + "integrity": "sha512-/xzkFQAaHQhmIAYOQmvHBPwL+NkwLzT9gRZBsgWUYeV+E6pzXsBQsHfRYbAZ3XEYare+T7S+5Tg/1KDJgepSkA==", "dev": true, + "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" + "debug": "^4.1.1", + "lodash.isequal": "^4.5.0" + }, + "peerDependencies": { + "ethers": "^6.1.0", + "hardhat": "^2.0.0" } }, - "node_modules/@nomicfoundation/ethereumjs-tx": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz", - "integrity": "sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==", + "node_modules/@nomicfoundation/hardhat-ignition": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-0.15.5.tgz", + "integrity": "sha512-Y5nhFXFqt4owA6Ooag8ZBFDF2RAZElMXViknVIsi3m45pbQimS50ti6FU8HxfRkDnBARa40CIn7UGV0hrelzDw==", "dev": true, + "peer": true, "dependencies": { - "@chainsafe/ssz": "^0.9.2", - "@ethersproject/providers": "^5.7.2", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "ethereum-cryptography": "0.1.3" + "@nomicfoundation/ignition-core": "^0.15.5", + "@nomicfoundation/ignition-ui": "^0.15.5", + "chalk": "^4.0.0", + "debug": "^4.3.2", + "fs-extra": "^10.0.0", + "prompts": "^2.4.2" }, - "engines": { - "node": ">=14" + "peerDependencies": { + "@nomicfoundation/hardhat-verify": "^2.0.1", + "hardhat": "^2.18.0" } }, - "node_modules/@nomicfoundation/ethereumjs-tx/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==", + "node_modules/@nomicfoundation/hardhat-ignition-ethers": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-0.15.5.tgz", + "integrity": "sha512-W6s1QN9CFxzSVZS6w9Jcj3WLaK32z2FP5MxNU2OKY1Fn9ZzLr+miXbUbWYuRHl6dxrrl6sE8cv33Cybv19pmCg==", "dev": 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" + "peer": true, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.0.4", + "@nomicfoundation/hardhat-ignition": "^0.15.5", + "@nomicfoundation/ignition-core": "^0.15.5", + "ethers": "^6.7.0", + "hardhat": "^2.18.0" } }, - "node_modules/@nomicfoundation/ethereumjs-util": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz", - "integrity": "sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==", + "node_modules/@nomicfoundation/hardhat-ignition/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==", "dev": true, + "peer": true, "dependencies": { - "@chainsafe/ssz": "^0.10.0", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "ethereum-cryptography": "0.1.3" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=14" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/persistent-merkle-tree": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", - "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", + "node_modules/@nomicfoundation/hardhat-ignition/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { - "@chainsafe/as-sha256": "^0.3.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/ssz": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", - "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", + "node_modules/@nomicfoundation/hardhat-ignition/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==", "dev": true, + "peer": true, "dependencies": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.5.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@nomicfoundation/ethereumjs-util/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==", + "node_modules/@nomicfoundation/hardhat-ignition/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==", "dev": 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" + "peer": true + }, + "node_modules/@nomicfoundation/hardhat-ignition/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==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/@nomicfoundation/ethereumjs-vm": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz", - "integrity": "sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==", + "node_modules/@nomicfoundation/hardhat-ignition/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==", "dev": true, + "peer": true, "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.2", - "@nomicfoundation/ethereumjs-blockchain": "7.0.2", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-evm": "2.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-statemanager": "2.0.2", - "@nomicfoundation/ethereumjs-trie": "6.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/@nomicfoundation/ethereumjs-vm/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==", + "node_modules/@nomicfoundation/hardhat-network-helpers": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.11.tgz", + "integrity": "sha512-uGPL7QSKvxrHRU69dx8jzoBvuztlLCtyFsbgfXIwIjnO3dqZRz2GNMHJoO3C3dIiUNM6jdNF4AUnoQKDscdYrA==", "dev": true, + "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" + "ethereumjs-util": "^7.1.4" + }, + "peerDependencies": { + "hardhat": "^2.9.5" } }, - "node_modules/@nomicfoundation/hardhat-chai-matchers": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz", - "integrity": "sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==", + "node_modules/@nomicfoundation/hardhat-toolbox": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-5.0.0.tgz", + "integrity": "sha512-FnUtUC5PsakCbwiVNsqlXVIWG5JIb5CEZoSXbJUsEBun22Bivx2jhF1/q9iQbzuaGpJKFQyOhemPB2+XlEE6pQ==", + "dev": true, + "peerDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-ignition-ethers": "^0.15.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": ">=18.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.0.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.8.tgz", + "integrity": "sha512-x/OYya7A2Kcz+3W/J78dyDHxr0ezU23DKTrRKfy5wDPCnePqnr79vm8EXqX3gYps6IjPBYyGPZ9K6E5BnrWx5Q==", "dev": true, "peer": true, "dependencies": { "@ethersproject/abi": "^5.1.2", - "@types/chai-as-promised": "^7.1.3", - "chai-as-promised": "^7.1.1", - "deep-eql": "^4.0.1", - "ordinal": "^1.0.3" + "@ethersproject/address": "^5.0.2", + "cbor": "^8.1.0", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "lodash.clonedeep": "^4.5.0", + "semver": "^6.3.0", + "table": "^6.8.0", + "undici": "^5.14.0" }, "peerDependencies": { - "@nomiclabs/hardhat-ethers": "^2.0.0", - "chai": "^4.2.0", - "ethers": "^5.0.0", - "hardhat": "^2.9.4" + "hardhat": "^2.0.4" } }, - "node_modules/@nomicfoundation/hardhat-network-helpers": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.10.tgz", - "integrity": "sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ==", + "node_modules/@nomicfoundation/hardhat-verify/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, + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@nomicfoundation/ignition-core": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-core/-/ignition-core-0.15.5.tgz", + "integrity": "sha512-FgvuoIXhakRSP524JzNQ4BviyzBBKpsFaOWubPZ4XACLT4/7vGqlJ/7DIn0D2NL2anQ2qs98/BNBY9WccXUX1Q==", "dev": true, "peer": true, "dependencies": { - "ethereumjs-util": "^7.1.4" - }, - "peerDependencies": { - "hardhat": "^2.9.5" + "@ethersproject/address": "5.6.1", + "@nomicfoundation/solidity-analyzer": "^0.1.1", + "cbor": "^9.0.0", + "debug": "^4.3.2", + "ethers": "^6.7.0", + "fs-extra": "^10.0.0", + "immer": "10.0.2", + "lodash": "4.17.21", + "ndjson": "2.0.0" } }, - "node_modules/@nomicfoundation/hardhat-network-helpers/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==", + "node_modules/@nomicfoundation/ignition-core/node_modules/@ethersproject/address": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", "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" + } + ], "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" + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/rlp": "^5.6.1" } }, - "node_modules/@nomicfoundation/hardhat-network-helpers/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==", + "node_modules/@nomicfoundation/ignition-core/node_modules/cbor": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", + "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", "dev": true, "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" + "nofilter": "^3.1.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=16" } }, - "node_modules/@nomicfoundation/hardhat-toolbox": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-2.0.2.tgz", - "integrity": "sha512-vnN1AzxbvpSx9pfdRHbUzTRIXpMLPXnUlkW855VaDk6N1pwRaQ2gNzEmFAABk4lWf11E00PKwFd/q27HuwYrYg==", + "node_modules/@nomicfoundation/ignition-ui": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-ui/-/ignition-ui-0.15.5.tgz", + "integrity": "sha512-ZcE4rIn10qKahR4OqS8rl8NM2Fbg2QYiBXgMgj74ZI0++LlCcZgB5HyaBbX+lsnKHjTXtjYD3b+2mtg7jFbAMQ==", "dev": true, - "license": "MIT", - "peerDependencies": { - "@ethersproject/abi": "^5.4.7", - "@ethersproject/providers": "^5.4.7", - "@nomicfoundation/hardhat-chai-matchers": "^1.0.0", - "@nomicfoundation/hardhat-network-helpers": "^1.0.0", - "@nomiclabs/hardhat-ethers": "^2.0.0", - "@nomiclabs/hardhat-etherscan": "^3.0.0", - "@typechain/ethers-v5": "^10.1.0", - "@typechain/hardhat": "^6.1.2", - "@types/chai": "^4.2.0", - "@types/mocha": ">=9.1.0", - "@types/node": ">=12.0.0", - "chai": "^4.2.0", - "ethers": "^5.4.7", - "hardhat": "^2.11.0", - "hardhat-gas-reporter": "^1.0.8", - "solidity-coverage": "^0.8.1", - "ts-node": ">=8.0.0", - "typechain": "^8.1.0", - "typescript": ">=4.5.0" - } + "peer": true }, "node_modules/@nomicfoundation/solidity-analyzer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", - "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", + "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, + "peer": true, "engines": { "node": ">= 12" }, "optionalDependencies": { - "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", - "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" + "@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.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", - "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", - "cpu": [ - "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, "optional": true, - "os": [ - "darwin" - ], + "peer": true, "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", - "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", - "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", - "cpu": [ - "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, "optional": true, - "os": [ - "freebsd" - ], + "peer": true, "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", - "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", - "cpu": [ - "arm64" - ], + "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, "optional": true, - "os": [ - "linux" - ], + "peer": true, "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", - "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", - "cpu": [ - "arm64" - ], + "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, "optional": true, - "os": [ - "linux" - ], + "peer": true, "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", - "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", - "cpu": [ - "x64" - ], + "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, "optional": true, - "os": [ - "linux" - ], + "peer": true, "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", - "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", - "cpu": [ - "x64" - ], + "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, "optional": true, - "os": [ - "linux" - ], + "peer": true, "engines": { - "node": ">= 10" + "node": ">= 12" } }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", - "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", - "cpu": [ - "arm64" - ], + "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, "optional": true, - "os": [ - "win32" - ], + "peer": true, "engines": { - "node": ">= 10" + "node": ">= 12" } }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", - "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" + "node_modules/@pixi/accessibility": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/accessibility/-/accessibility-7.4.2.tgz", + "integrity": "sha512-R6VEolm8uyy1FB1F2qaLKxVbzXAFTZCF2ka8fl9lsz7We6ZfO4QpXv9ur7DvzratjCQUQVCKo0/V7xL5q1EV/g==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/events": "7.4.2" } }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", - "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" + "node_modules/@pixi/app": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/app/-/app-7.4.2.tgz", + "integrity": "sha512-ugkH3kOgjT8P1mTMY29yCOgEh+KuVMAn8uBxeY0aMqaUgIMysfpnFv+Aepp2CtvI9ygr22NC+OiKl+u+eEaQHw==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2" } }, - "node_modules/@nomiclabs/hardhat-ethers": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz", - "integrity": "sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==", - "dev": true, - "peer": true, + "node_modules/@pixi/assets": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/assets/-/assets-7.4.2.tgz", + "integrity": "sha512-anxho59H9egZwoaEdM5aLvYyxoz6NCy3CaQIvNHD1bbGg8L16Ih0e26QSBR5fu53jl8OjT6M7s+p6n7uu4+fGA==", + "dependencies": { + "@types/css-font-loading-module": "^0.0.12" + }, "peerDependencies": { - "ethers": "^5.0.0", - "hardhat": "^2.0.0" + "@pixi/core": "7.4.2" } }, - "node_modules/@nomiclabs/hardhat-etherscan": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.8.tgz", - "integrity": "sha512-v5F6IzQhrsjHh6kQz4uNrym49brK9K5bYCq2zQZ729RYRaifI9hHbtmK+KkIVevfhut7huQFEQ77JLRMAzWYjQ==", - "deprecated": "The @nomiclabs/hardhat-etherscan package is deprecated, please use @nomicfoundation/hardhat-verify instead", - "dev": true, - "peer": true, + "node_modules/@pixi/color": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/color/-/color-7.4.2.tgz", + "integrity": "sha512-av1LOvhHsiaW8+T4n/FgnOKHby55/w7VcA1HzPIHRBtEcsmxvSCDanT1HU2LslNhrxLPzyVx18nlmalOyt5OBg==", "dependencies": { - "@ethersproject/abi": "^5.1.2", - "@ethersproject/address": "^5.0.2", - "cbor": "^8.1.0", - "chalk": "^2.4.2", - "debug": "^4.1.1", - "fs-extra": "^7.0.1", - "lodash": "^4.17.11", - "semver": "^6.3.0", - "table": "^6.8.0", - "undici": "^5.14.0" - }, + "@pixi/colord": "^2.9.6" + } + }, + "node_modules/@pixi/colord": { + "version": "2.9.6", + "resolved": "https://registry.npmjs.org/@pixi/colord/-/colord-2.9.6.tgz", + "integrity": "sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==" + }, + "node_modules/@pixi/compressed-textures": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/compressed-textures/-/compressed-textures-7.4.2.tgz", + "integrity": "sha512-VJrt7el6O4ZJSWkeOGXwrhJaiLg1UBhHB3fj42VR4YloYkAxpfd9K6s6IcbcVz7n9L48APKBMgHyaB2pX2Ck/A==", "peerDependencies": { - "hardhat": "^2.0.4" + "@pixi/assets": "7.4.2", + "@pixi/core": "7.4.2" } }, - "node_modules/@popperjs/core": { - "name": "@sxzz/popperjs-es", - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", - "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", + "node_modules/@pixi/constants": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-7.4.2.tgz", + "integrity": "sha512-N9vn6Wpz5WIQg7ugUg2+SdqD2u2+NM0QthE8YzLJ4tLH2Iz+/TrnPKUJzeyIqbg3sxJG5ZpGGPiacqIBpy1KyA==" + }, + "node_modules/@pixi/core": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/core/-/core-7.4.2.tgz", + "integrity": "sha512-UbMtgSEnyCOFPzbE6ThB9qopXxbZ5GCof2ArB4FXOC5Xi/83MOIIYg5kf5M8689C5HJMhg2SrJu3xLKppF+CMg==", + "dependencies": { + "@pixi/color": "7.4.2", + "@pixi/constants": "7.4.2", + "@pixi/extensions": "7.4.2", + "@pixi/math": "7.4.2", + "@pixi/runner": "7.4.2", + "@pixi/settings": "7.4.2", + "@pixi/ticker": "7.4.2", + "@pixi/utils": "7.4.2" + }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/popperjs" + "url": "https://opencollective.com/pixijs" } }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.6.1.tgz", - "integrity": "sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==", - "dev": true - }, - "node_modules/@scure/base": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", - "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", - "dev": true, - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@pixi/display": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/display/-/display-7.4.2.tgz", + "integrity": "sha512-DaD0J7gIlNlzO0Fdlby/0OH+tB5LtCY6rgFeCBKVDnzmn8wKW3zYZRenWBSFJ0Psx6vLqXYkSIM/rcokaKviIw==", + "peerDependencies": { + "@pixi/core": "7.4.2" } }, - "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/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" + "node_modules/@pixi/events": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/events/-/events-7.4.2.tgz", + "integrity": "sha512-Jw/w57heZjzZShIXL0bxOvKB+XgGIevyezhGtfF2ZSzQoSBWo+Fj1uE0QwKd0RIaXegZw/DhSmiMJSbNmcjifA==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2" } }, - "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/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" + "node_modules/@pixi/extensions": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/extensions/-/extensions-7.4.2.tgz", + "integrity": "sha512-Hmx2+O0yZ8XIvgomHM9GZEGcy9S9Dd8flmtOK5Aa3fXs/8v7xD08+ANQpN9ZqWU2Xs+C6UBlpqlt2BWALvKKKA==" + }, + "node_modules/@pixi/extract": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/extract/-/extract-7.4.2.tgz", + "integrity": "sha512-JOX27TRWjVEjauGBbF8PU7/g6LYXnivehdgqS5QlVDv1CNHTOrz/j3MdKcVWOhyZPbH5c9sh7lxyRxvd9AIuTQ==", + "peerDependencies": { + "@pixi/core": "7.4.2" } }, - "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, + "node_modules/@pixi/filter-advanced-bloom": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@pixi/filter-advanced-bloom/-/filter-advanced-bloom-5.1.1.tgz", + "integrity": "sha512-C5AWmkWKvoYvJ+600qS7rC81E1X1clvrQLw4QE4IiFec5j1b07KhKE78w/BSRYMrBVa0cQ/ju0J1f7XoQYJfdQ==", "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" + "@pixi/filter-kawase-blur": "5.1.1" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "@pixi/core": "^7.0.0-X" } }, - "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, - "dependencies": { - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" + "node_modules/@pixi/filter-alpha": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/filter-alpha/-/filter-alpha-7.4.2.tgz", + "integrity": "sha512-9OsKJ+yvY2wIcQXwswj5HQBiwNGymwmqdxfp7mo+nZSBoDmxUqvMZzE9UNJ3eUlswuNvNRO8zNOsQvwdz7WFww==", + "peerDependencies": { + "@pixi/core": "7.4.2" } }, - "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, - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" + "node_modules/@pixi/filter-bloom": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@pixi/filter-bloom/-/filter-bloom-5.1.1.tgz", + "integrity": "sha512-4/i+tMxAQdgezahxsVCqzkAyBAH4TxtuY/zo1wuCJybEqkKFIzOJ76Y4R/lJevEHS9CGpCTrvjRpup0Hze8k0Q==", + "peerDependencies": { + "@pixi/core": "^7.0.0-X", + "@pixi/filter-alpha": "^7.0.0-X", + "@pixi/filter-blur": "^7.0.0-X" } }, - "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, - "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/@pixi/filter-blur": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/filter-blur/-/filter-blur-7.4.2.tgz", + "integrity": "sha512-gOXBbIUx6CRZP1fmsis2wLzzSsofrqmIHhbf1gIkZMIQaLsc9T7brj+PaLTTiOiyJgnvGN5j20RZnkERWWKV0Q==", + "peerDependencies": { + "@pixi/core": "7.4.2" } }, - "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, - "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/@pixi/filter-color-matrix": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/filter-color-matrix/-/filter-color-matrix-7.4.2.tgz", + "integrity": "sha512-ykZiR59Gvj80UKs9qm7jeUTKvn+wWk6HBVJOmJbK9jFK5juakDWp7BbH26U78Q61EWj97kI1FdfcbMkuQ7rqkA==", + "peerDependencies": { + "@pixi/core": "7.4.2" } }, - "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, - "engines": { - "node": ">=6" + "node_modules/@pixi/filter-displacement": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/filter-displacement/-/filter-displacement-7.4.2.tgz", + "integrity": "sha512-QS/eWp/ivsxef3xapNeGwpPX7vrqQQeo99Fux4k5zsvplnNEsf91t6QYJLG776AbZEu/qh8VYRBA5raIVY/REw==", + "peerDependencies": { + "@pixi/core": "7.4.2" } }, - "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, - "dependencies": { - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" + "node_modules/@pixi/filter-fxaa": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/filter-fxaa/-/filter-fxaa-7.4.2.tgz", + "integrity": "sha512-U/ptJgDsfs/r8y2a6gCaiPfDu2IFAxpQ4wtfmBpz6vRhqeE4kI8yNIUx5dZbui57zlsJaW0BNacOQxHU0vLkyQ==", + "peerDependencies": { + "@pixi/core": "7.4.2" } }, - "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, - "peer": true, - "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" + "node_modules/@pixi/filter-glow": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@pixi/filter-glow/-/filter-glow-5.2.1.tgz", + "integrity": "sha512-94I4XePDF9yqqA6KQuhPSphEHPJ2lXfqJLn0Bes8VVdwft0Ianj1wALqjoSUeBWqiJbhjBEXGDNkRZhPHvY3Xg==", + "peerDependencies": { + "@pixi/core": "^7.0.0-X" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, - "peer": true + "node_modules/@pixi/filter-kawase-blur": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@pixi/filter-kawase-blur/-/filter-kawase-blur-5.1.1.tgz", + "integrity": "sha512-nPnJ1ChBFP+4pgFCwC0RJgHAJCetiHcQU3INH7zCdq88cFABmVmhN+wCKRNg4H7lF1EJjaXgFDkTrTreOD/bnw==", + "peerDependencies": { + "@pixi/core": "^7.0.0-X" + } }, - "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, - "peer": true + "node_modules/@pixi/filter-noise": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/filter-noise/-/filter-noise-7.4.2.tgz", + "integrity": "sha512-Vy9ViBFhZEGh6xKkd3kFWErolZTwv1Y5Qb1bV7qPIYbvBECYsqzlR4uCrrjBV6KKm0PufpG/+NKC5vICZaqKzg==", + "peerDependencies": { + "@pixi/core": "7.4.2" + } }, - "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, - "peer": true + "node_modules/@pixi/graphics": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-7.4.2.tgz", + "integrity": "sha512-jH4/Tum2RqWzHGzvlwEr7HIVduoLO57Ze705N2zQPkUD57TInn5911aGUeoua7f/wK8cTLGzgB9BzSo2kTdcHw==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/sprite": "7.4.2" + } }, - "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, - "peer": true + "node_modules/@pixi/graphics-extras": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/graphics-extras/-/graphics-extras-7.4.2.tgz", + "integrity": "sha512-X4tHRIhbatT/kUQJ0PAquuo19eAK8S9NDbqxtHv9AWgYnDlhdvWFPqd16xkPvq8POadaRyLzfwwcYYeNWLQEig==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/graphics": "7.4.2" + } }, - "node_modules/@tsconfig/node18": { - "version": "18.2.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.2.tgz", - "integrity": "sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==", - "dev": true + "node_modules/@pixi/math": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/math/-/math-7.4.2.tgz", + "integrity": "sha512-7jHmCQoYk6e0rfSKjdNFOPl0wCcdgoraxgteXJTTHv3r0bMNx2pHD9FJ0VvocEUG7XHfj55O3+u7yItOAx0JaQ==" }, - "node_modules/@typechain/ethers-v5": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz", - "integrity": "sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==", - "dev": true, - "peer": true, - "dependencies": { - "lodash": "^4.17.15", - "ts-essentials": "^7.0.1" - }, + "node_modules/@pixi/mesh": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/mesh/-/mesh-7.4.2.tgz", + "integrity": "sha512-mEkKyQvvMrYXC3pahvH5WBIKtrtB63WixRr91ANFI7zXD+ESG6Ap6XtxMCJmXDQPwBDNk7SWVMiCflYuchG7kA==", "peerDependencies": { - "@ethersproject/abi": "^5.0.0", - "@ethersproject/providers": "^5.0.0", - "ethers": "^5.1.3", - "typechain": "^8.1.1", - "typescript": ">=4.3.0" + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2" } }, - "node_modules/@typechain/hardhat": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-6.1.6.tgz", - "integrity": "sha512-BiVnegSs+ZHVymyidtK472syodx1sXYlYJJixZfRstHVGYTi8V1O7QG4nsjyb0PC/LORcq7sfBUcHto1y6UgJA==", - "dev": true, - "peer": true, - "dependencies": { - "fs-extra": "^9.1.0" - }, + "node_modules/@pixi/mesh-extras": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/mesh-extras/-/mesh-extras-7.4.2.tgz", + "integrity": "sha512-vNR/7wjxjs7sv9fGoKkHyU91ZAD+7EnMHBS5F3CVISlOIFxLi96NNZCB81oUIdky/90pHw40johd/4izR5zTyw==", "peerDependencies": { - "@ethersproject/abi": "^5.4.7", - "@ethersproject/providers": "^5.4.7", - "@typechain/ethers-v5": "^10.2.1", - "ethers": "^5.4.7", - "hardhat": "^2.9.9", - "typechain": "^8.1.1" + "@pixi/core": "7.4.2", + "@pixi/mesh": "7.4.2" } }, - "node_modules/@typechain/hardhat/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==", - "dev": true, - "peer": true, - "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/@pixi/mixin-cache-as-bitmap": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-7.4.2.tgz", + "integrity": "sha512-6dgthi2ruUT/lervSrFDQ7vXkEsHo6CxdgV7W/wNdW1dqgQlKfDvO6FhjXzyIMRLSooUf5FoeluVtfsjkUIYrw==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/sprite": "7.4.2" } }, - "node_modules/@typechain/hardhat/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "peer": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "node_modules/@pixi/mixin-get-child-by-name": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-7.4.2.tgz", + "integrity": "sha512-0Cfw8JpQhsixprxiYph4Lj+B5n83Kk4ftNMXgM5xtZz+tVLz5s91qR0MqcdzwTGTJ7utVygiGmS4/3EfR/duRQ==", + "peerDependencies": { + "@pixi/display": "7.4.2" } }, - "node_modules/@typechain/hardhat/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 10.0.0" + "node_modules/@pixi/mixin-get-global-position": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/mixin-get-global-position/-/mixin-get-global-position-7.4.2.tgz", + "integrity": "sha512-LcsahbVdX4DFS2IcGfNp4KaXuu7SjAwUp/flZSGIfstyKOKb5FWFgihtqcc9ZT4coyri3gs2JbILZub/zPZj1w==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2" } }, - "node_modules/@types/bn.js": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", - "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", - "dev": true, - "dependencies": { - "@types/node": "*" + "node_modules/@pixi/particle-container": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/particle-container/-/particle-container-7.4.2.tgz", + "integrity": "sha512-B78Qq86kt0lEa5WtB2YFIm3+PjhKfw9La9R++GBSgABl+g13s2UaZ6BIPxvY3JxWMdxPm4iPrQPFX1QWRN68mw==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/sprite": "7.4.2" } }, - "node_modules/@types/chai": { - "version": "4.3.11", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", - "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", - "dev": true, - "peer": true + "node_modules/@pixi/prepare": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/prepare/-/prepare-7.4.2.tgz", + "integrity": "sha512-PugyMzReCHXUzc3so9PPJj2OdHwibpUNWyqG4mWY2UUkb6c8NAGK1AnAPiscOvLilJcv/XQSFoNhX+N1jrvJEg==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/graphics": "7.4.2", + "@pixi/text": "7.4.2" + } }, - "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, - "peer": true, + "node_modules/@pixi/react": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@pixi/react/-/react-7.1.2.tgz", + "integrity": "sha512-ZhqeXcFCRfFYCvncGW6Bxc3PFCYN1PgpF60iZwQJA6/UD3DB70JQvtDkRnyQcy5yqsjNtdxS8HB42oNjQFnZrA==", "dependencies": { - "@types/chai": "*" + "lodash.isnil": "4.0.0", + "lodash.times": "4.3.2", + "performance-now": "2.1.0", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@babel/runtime": "^7.14.8", + "@pixi/app": ">=6.0.0", + "@pixi/constants": ">=6.0.0", + "@pixi/core": ">=6.0.0", + "@pixi/display": ">=6.0.0", + "@pixi/extensions": ">=6.0.0", + "@pixi/graphics": ">=6.0.0", + "@pixi/math": ">=6.0.0", + "@pixi/mesh": ">=6.0.0", + "@pixi/mesh-extras": ">=6.0.0", + "@pixi/particle-container": ">=6.0.0", + "@pixi/sprite": ">=6.0.0", + "@pixi/sprite-animated": ">=6.0.0", + "@pixi/sprite-tiling": ">=6.0.0", + "@pixi/text": ">=6.0.0", + "@pixi/text-bitmap": ">=6.0.0", + "@pixi/ticker": ">=6.0.0", + "prop-types": "^15.8.1", + "react": ">=17.0.0", + "react-dom": ">=17.0.0" + } + }, + "node_modules/@pixi/runner": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-7.4.2.tgz", + "integrity": "sha512-LPBpwym4vdyyDY5ucF4INQccaGyxztERyLTY1YN6aqJyyMmnc7iqXlIKt+a0euMBtNoLoxy6MWMvIuZj0JfFPA==" + }, + "node_modules/@pixi/settings": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-7.4.2.tgz", + "integrity": "sha512-pMN+L6aWgvUbwhFIL/BTHKe2ShYGPZ8h9wlVBnFHMtUcJcFLMF1B3lzuvCayZRepOphs6RY0TqvnDvVb585JhQ==", + "dependencies": { + "@pixi/constants": "7.4.2", + "@types/css-font-loading-module": "^0.0.12", + "ismobilejs": "^1.1.0" + } + }, + "node_modules/@pixi/sprite": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-7.4.2.tgz", + "integrity": "sha512-Ccf/OVQsB+HQV0Fyf5lwD+jk1jeU7uSIqEjbxenNNssmEdB7S5qlkTBV2EJTHT83+T6Z9OMOHsreJZerydpjeg==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2" } }, - "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, - "peer": true, - "dependencies": { - "@types/node": "*" + "node_modules/@pixi/sprite-animated": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/sprite-animated/-/sprite-animated-7.4.2.tgz", + "integrity": "sha512-QPT6yxCUGOBN+98H3pyIZ1ZO6Y7BN1o0Q2IMZEsD1rNfZJrTYS3Q8VlCG5t2YlFlcB8j5iBo24bZb6FUxLOmsQ==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/sprite": "7.4.2" } }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dev": true, - "dependencies": { - "@types/ms": "*" + "node_modules/@pixi/sprite-tiling": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/sprite-tiling/-/sprite-tiling-7.4.2.tgz", + "integrity": "sha512-Z8PP6ewy3nuDYL+NeEdltHAhuucVgia33uzAitvH3OqqRSx6a6YRBFbNLUM9Sx+fBO2Lk3PpV1g6QZX+NE5LOg==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/sprite": "7.4.2" } }, - "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, - "peer": true, - "dependencies": { - "@types/node": "*" + "node_modules/@pixi/spritesheet": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/spritesheet/-/spritesheet-7.4.2.tgz", + "integrity": "sha512-YIvHdpXW+AYp8vD0NkjJmrdnVHTZKidCnx6k8ATSuuvCT6O5Tuh2N/Ul2oDj4/QaePy0lVhyhAbZpJW00Jr7mQ==", + "peerDependencies": { + "@pixi/assets": "7.4.2", + "@pixi/core": "7.4.2" } }, - "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, - "peer": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "node_modules/@pixi/text": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/text/-/text-7.4.2.tgz", + "integrity": "sha512-rZZWpJNsIQ8WoCWrcVg8Gi6L/PDakB941clo6dO3XjoII2ucoOUcnpe5HIkudxi2xPvS/8Bfq990gFEx50TP5A==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/sprite": "7.4.2" + } + }, + "node_modules/@pixi/text-bitmap": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/text-bitmap/-/text-bitmap-7.4.2.tgz", + "integrity": "sha512-lPBMJ83JnpFVL+6ckQ8KO8QmwdPm0z9Zs/M0NgFKH2F+BcjelRNnk80NI3O0qBDYSEDQIE+cFbKoZ213kf7zwA==", + "peerDependencies": { + "@pixi/assets": "7.4.2", + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/mesh": "7.4.2", + "@pixi/text": "7.4.2" } }, - "node_modules/@types/lodash": { - "version": "4.14.202", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" + "node_modules/@pixi/text-html": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/text-html/-/text-html-7.4.2.tgz", + "integrity": "sha512-duOu8oDYeDNuyPozj2DAsQ5VZBbRiwIXy78Gn7H2pCiEAefw/Uv5jJYwdgneKME0e1tOxz1eOUGKPcI6IJnZjw==", + "peerDependencies": { + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/sprite": "7.4.2", + "@pixi/text": "7.4.2" + } }, - "node_modules/@types/lodash-es": { - "version": "4.17.12", - "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", - "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "node_modules/@pixi/ticker": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-7.4.2.tgz", + "integrity": "sha512-cAvxCh/KI6IW4m3tp2b+GQIf+DoSj9NNmPJmsOeEJ7LzvruG8Ps7SKI6CdjQob5WbceL1apBTDbqZ/f77hFDiQ==", "dependencies": { - "@types/lodash": "*" + "@pixi/extensions": "7.4.2", + "@pixi/settings": "7.4.2", + "@pixi/utils": "7.4.2" } }, - "node_modules/@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true + "node_modules/@pixi/utils": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-7.4.2.tgz", + "integrity": "sha512-aU/itcyMC4TxFbmdngmak6ey4kC5c16Y5ntIYob9QnjNAfD/7GTsYIBnP6FqEAyO1eq0MjkAALxdONuay1BG3g==", + "dependencies": { + "@pixi/color": "7.4.2", + "@pixi/constants": "7.4.2", + "@pixi/settings": "7.4.2", + "@types/earcut": "^2.1.0", + "earcut": "^2.2.4", + "eventemitter3": "^4.0.0", + "url": "^0.11.0" + } }, - "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==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "cpu": [ + "arm" + ], "dev": true, - "peer": true + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@types/mocha": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", - "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "cpu": [ + "arm64" + ], "dev": true, - "peer": true + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "dev": true + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@types/node": { - "version": "18.18.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.13.tgz", - "integrity": "sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "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==", + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@types/node": "*" - } + "optional": true, + "os": [ + "linux" + ] }, - "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==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "cpu": [ + "arm64" + ], "dev": true, - "peer": true + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/qs": { - "version": "6.9.11", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", - "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "cpu": [ + "arm64" + ], "dev": true, - "peer": true + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/readable-stream": { - "version": "2.3.15", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", - "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "@types/node": "*", - "safe-buffer": "~5.1.1" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/secp256k1": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", - "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "@types/node": "*" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", - "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@vitejs/plugin-vue": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.5.0.tgz", - "integrity": "sha512-a2WSpP8X8HTEww/U00bU4mX1QpLINNuz/2KMNpLsdu3BzOpak3AGI1CJYBTXcc4SPhaD0eNRUp7IyQK405L5dQ==", + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "cpu": [ + "x64" + ], "dev": true, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.0.0 || ^5.0.0", - "vue": "^3.2.25" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@vitejs/plugin-vue-jsx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz", - "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/core": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3", - "@vue/babel-plugin-jsx": "^1.1.5" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.0.0 || ^5.0.0", - "vue": "^3.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@volar/language-core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz", - "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==", + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@volar/source-map": "1.11.1" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@volar/source-map": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz", - "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==", + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "muggle-string": "^0.3.1" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@volar/typescript": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.11.1.tgz", - "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@volar/language-core": "1.11.1", - "path-browserify": "^1.0.1" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@vue/babel-helper-vue-transform-on": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz", - "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==", - "dev": true + "node_modules/@scure/base": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.7.tgz", + "integrity": "sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==", + "funding": { + "url": "https://paulmillr.com/funding/" + } }, - "node_modules/@vue/babel-plugin-jsx": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz", - "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==", - "dev": true, + "node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", "dependencies": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", - "@vue/babel-helper-vue-transform-on": "^1.1.5", - "camelcase": "^6.3.0", - "html-tags": "^3.3.1", - "svg-tags": "^1.0.0" + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@vue/compiler-core": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.9.tgz", - "integrity": "sha512-+/Lf68Vr/nFBA6ol4xOtJrW+BQWv3QWKfRwGSm70jtXwfhZNF4R/eRgyVJYoxFRhdCTk/F6g99BP0ffPgZihfQ==", + "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==", "dependencies": { - "@babel/parser": "^7.23.3", - "@vue/shared": "3.3.9", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.9.tgz", - "integrity": "sha512-nfWubTtLXuT4iBeDSZ5J3m218MjOy42Vp2pmKVuBKo2/BLcrFUX8nCSr/bKRFiJ32R8qbdnnnBgRn9AdU5v0Sg==", - "dependencies": { - "@vue/compiler-core": "3.3.9", - "@vue/shared": "3.3.9" + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@vue/compiler-sfc": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.9.tgz", - "integrity": "sha512-wy0CNc8z4ihoDzjASCOCsQuzW0A/HP27+0MDSSICMjVIFzk/rFViezkR3dzH+miS2NDEz8ywMdbjO5ylhOLI2A==", - "dependencies": { - "@babel/parser": "^7.23.3", - "@vue/compiler-core": "3.3.9", - "@vue/compiler-dom": "3.3.9", - "@vue/compiler-ssr": "3.3.9", - "@vue/reactivity-transform": "3.3.9", - "@vue/shared": "3.3.9", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5", - "postcss": "^8.4.31", - "source-map-js": "^1.0.2" + "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==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@vue/compiler-ssr": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.9.tgz", - "integrity": "sha512-NO5oobAw78R0G4SODY5A502MGnDNiDjf6qvhn7zD7TJGc8XDeIEw4fg6JU705jZ/YhuokBKz0A5a/FL/XZU73g==", + "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==", "dependencies": { - "@vue/compiler-dom": "3.3.9", - "@vue/shared": "3.3.9" + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@vue/devtools-api": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", - "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" + "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==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, - "node_modules/@vue/language-core": { - "version": "1.8.24", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.24.tgz", - "integrity": "sha512-2ClHvij0WlsDWryPzXJCSpPc6rusZFNoVtRZGgGGkKCmKuIREDDKmH8j+1tYyxPYyH0qL6pZ6+IHD8KIm5nWAw==", + "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, + "peer": true, "dependencies": { - "@volar/language-core": "~1.11.1", - "@volar/source-map": "~1.11.1", - "@vue/compiler-dom": "^3.3.0", - "@vue/shared": "^3.3.0", - "computeds": "^0.0.1", - "minimatch": "^9.0.3", - "muggle-string": "^0.3.1", - "path-browserify": "^1.0.1", - "vue-template-compiler": "^2.7.14" - }, - "peerDependencies": { - "typescript": "*" + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": ">=6" } }, - "node_modules/@vue/reactivity": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.9.tgz", - "integrity": "sha512-VmpIqlNp+aYDg2X0xQhJqHx9YguOmz2UxuUJDckBdQCNkipJvfk9yA75woLWElCa0Jtyec3lAAt49GO0izsphw==", - "dependencies": { - "@vue/shared": "3.3.9" - } + "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, + "peer": true }, - "node_modules/@vue/reactivity-transform": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.9.tgz", - "integrity": "sha512-HnUFm7Ry6dFa4Lp63DAxTixUp8opMtQr6RxQCpDI1vlh12rkGIeYqMvJtK+IKyEfEOa2I9oCkD1mmsPdaGpdVg==", + "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, + "peer": true, "dependencies": { - "@babel/parser": "^7.23.3", - "@vue/compiler-core": "3.3.9", - "@vue/shared": "3.3.9", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5" + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@vue/runtime-core": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.9.tgz", - "integrity": "sha512-xxaG9KvPm3GTRuM4ZyU8Tc+pMVzcu6eeoSRQJ9IE7NmCcClW6z4B3Ij6L4EDl80sxe/arTtQ6YmgiO4UZqRc+w==", - "dependencies": { - "@vue/reactivity": "3.3.9", - "@vue/shared": "3.3.9" - } + "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, + "peer": true }, - "node_modules/@vue/runtime-dom": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.9.tgz", - "integrity": "sha512-e7LIfcxYSWbV6BK1wQv9qJyxprC75EvSqF/kQKe6bdZEDNValzeRXEVgiX7AHI6hZ59HA4h7WT5CGvm69vzJTQ==", + "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, + "peer": true, "dependencies": { - "@vue/runtime-core": "3.3.9", - "@vue/shared": "3.3.9", - "csstype": "^3.1.2" + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@vue/server-renderer": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.9.tgz", - "integrity": "sha512-w0zT/s5l3Oa3ZjtLW88eO4uV6AQFqU8X5GOgzq7SkQQu6vVr+8tfm+OI2kDBplS/W/XgCBuFXiPw6T5EdwXP0A==", + "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, + "peer": true + }, + "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, + "peer": true, "dependencies": { - "@vue/compiler-ssr": "3.3.9", - "@vue/shared": "3.3.9" + "@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" }, - "peerDependencies": { - "vue": "3.3.9" + "engines": { + "node": ">=6" } }, - "node_modules/@vue/shared": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.9.tgz", - "integrity": "sha512-ZE0VTIR0LmYgeyhurPTpy4KzKsuDyQbMSdM49eKkMnT5X4VfFBLysMzjIZhLEFQYjjOVVfbvUDHckwjDFiO2eA==" - }, - "node_modules/@vue/tsconfig": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", - "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", - "dev": true + "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, + "peer": true }, - "node_modules/@vueuse/core": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", - "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "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, + "peer": true, "dependencies": { - "@types/web-bluetooth": "^0.0.16", - "@vueuse/metadata": "9.13.0", - "@vueuse/shared": "9.13.0", - "vue-demi": "*" + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">=6" } }, - "node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, + "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, + "peer": true + }, + "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, + "peer": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } + "node": ">=6" } }, - "node_modules/@vueuse/metadata": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", - "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", - "funding": { - "url": "https://github.com/sponsors/antfu" + "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, + "peer": true, + "dependencies": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@vueuse/shared": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", - "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "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, + "peer": true + }, + "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, + "peer": true, "dependencies": { - "vue-demi": "*" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "antlr4ts": "^0.5.0-alpha.4" } }, - "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz", + "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==", + "dev": true, + "dependencies": { + "@babel/generator": "7.17.7", + "@babel/parser": "^7.20.5", + "@babel/traverse": "7.23.2", + "@babel/types": "7.17.0", + "javascript-natural-sort": "0.7.1", + "lodash": "^4.17.21" }, "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" + "@vue/compiler-sfc": "3.x", + "prettier": "2.x - 3.x" }, "peerDependenciesMeta": { - "@vue/composition-api": { + "@vue/compiler-sfc": { "optional": true } } }, - "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, - "peer": true - }, - "node_modules/abstract-level": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", - "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", "dev": true, "dependencies": { - "buffer": "^6.0.3", - "catering": "^2.1.0", - "is-buffer": "^2.0.5", - "level-supports": "^4.0.0", - "level-transcoder": "^1.0.1", - "module-error": "^1.0.1", - "queue-microtask": "^1.2.3" + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", "dev": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" }, "engines": { - "node": ">=0.4.0" + "node": ">=6.9.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.8.tgz", + "integrity": "sha512-47DG+6F5SzOi0uEvK4wMShmn5yY0mVjVJoWTphdY2B4Rx9wHgjK7Yhtr0ru6nE+sn0v38mzrWOlah0p/YlHHOQ==", "dev": true, - "peer": true, + "dependencies": { + "@babel/types": "^7.24.8", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, "engines": { - "node": ">=0.4.0" + "node": ">=6.9.0" } }, - "node_modules/address": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", - "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/types": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.8.tgz", + "integrity": "sha512-SkSBEHwwJRU52QEVZBmMBnE5Ux2/6WU1grdYyOhpbCNxbmJrDuDCphBzKZSO3taf0zztp+qkWlymE5tVL5l0TA==", "dev": true, - "peer": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=6.9.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==", + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, "engines": { - "node": ">=0.3.0" + "node": ">=6.9.0" } }, - "node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" - }, - "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==", + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, - "dependencies": { - "debug": "4" - }, "engines": { - "node": ">= 6.0.0" + "node": ">=0.10.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==", + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "devOptional": true, + "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==", + "devOptional": true, + "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==", + "devOptional": true, + "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==", + "devOptional": true, + "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, + "peer": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "ethers": "6.x", + "typechain": "^8.3.2", + "typescript": ">=4.7.0" } }, - "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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, "peer": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "fs-extra": "^9.1.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "@typechain/ethers-v6": "^0.5.1", + "ethers": "^6.1.0", + "hardhat": "^2.9.9", + "typechain": "^8.3.2" } }, - "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==", + "node_modules/@typechain/hardhat/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==", "dev": true, - "optional": true, "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=0.4.2" + "node": ">=10" } }, - "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==", + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "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==", + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@babel/types": "^7.0.0" } }, - "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==", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "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==", + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@babel/types": "^7.20.7" } }, - "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==", + "node_modules/@types/bn.js": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", "dev": true, + "peer": true, "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" + "@types/node": "*" } }, - "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==", + "node_modules/@types/chai": { + "version": "4.3.16", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz", + "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==", "dev": true, "peer": true }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": 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, + "peer": true, + "dependencies": { + "@types/chai": "*" + } }, - "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==", + "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, + "peer": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" + "@types/node": "*" } }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "node_modules/@types/css-font-loading-module": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.12.tgz", + "integrity": "sha512-x2tZZYkSxXqWvTDgveSynfjq/T2HyiZHXb00j/+gy19yp70PHCizM48XFdjBCWH7eHBD0R5i/pw9yMBP/BH5uA==" }, - "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==", - "dev": true + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" }, - "node_modules/array-back": { + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dependencies": { + "@types/d3-time": "*" } }, - "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==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dependencies": { + "@types/d3-path": "*" } }, - "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, - "peer": true, - "engines": { - "node": ">=0.10.0" + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "peer": true + "node_modules/@types/earcut": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.4.tgz", + "integrity": "sha512-qp3m9PPz4gULB9MhjGID7wpo3gJ4bTGXm7ltNDsmOvsPduTeHp8wSW9YckBj3mljeOh4F0m2z/0JKAALRKbmLQ==" }, - "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==", + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "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, "peer": true, - "engines": { - "node": "*" + "dependencies": { + "@types/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==", + "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, "peer": true, - "engines": { - "node": ">=8" + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", "dev": true, "peer": true }, - "node_modules/async-validator": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", - "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + "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, + "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==" + "node_modules/@types/mocha": { + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.7.tgz", + "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==", + "dev": true, + "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==", + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/node": { + "version": "20.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", + "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", + "devOptional": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "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, "peer": true, - "engines": { - "node": ">= 4.0.0" + "dependencies": { + "@types/node": "*" } }, - "node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "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, - "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" - } - ], + "peer": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "devOptional": true + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true, + "peer": true + }, + "node_modules/@types/react": { + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "devOptional": true, "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "@types/prop-types": "*", + "csstype": "^3.0.2" } }, - "node_modules/axios": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", - "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dev": true, "dependencies": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "@types/react": "*" } }, - "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==", - "dev": true + "node_modules/@types/secp256k1": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } }, - "node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "node_modules/@types/ws": { + "version": "8.5.11", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.11.tgz", + "integrity": "sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w==", "dev": true, "dependencies": { - "safe-buffer": "^5.0.1" + "@types/node": "*" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.15.0.tgz", + "integrity": "sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==", "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" + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/type-utils": "7.15.0", + "@typescript-eslint/utils": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true } - ] - }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + } }, - "node_modules/bigint-crypto-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", - "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", + "node_modules/@typescript-eslint/parser": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.15.0.tgz", + "integrity": "sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==", "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/typescript-estree": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", + "debug": "^4.3.4" + }, "engines": { - "node": ">=14.0.0" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz", + "integrity": "sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==", "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0" + }, "engines": { - "node": ">=8" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "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 + "node_modules/@typescript-eslint/type-utils": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.15.0.tgz", + "integrity": "sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.15.0", + "@typescript-eslint/utils": "7.15.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "node_modules/@typescript-eslint/types": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz", + "integrity": "sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz", + "integrity": "sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@typescript-eslint/utils": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.15.0.tgz", + "integrity": "sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/typescript-estree": "7.15.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "node_modules/browser-level": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", - "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.15.0.tgz", + "integrity": "sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==", "dev": true, "dependencies": { - "abstract-level": "^1.0.2", - "catering": "^2.1.1", - "module-error": "^1.0.2", - "run-parallel-limit": "^1.1.0" + "@typescript-eslint/types": "7.15.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "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==", + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, - "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==", + "node_modules/@vitejs/plugin-react": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz", + "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==", "dev": 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" + "@babel/core": "^7.24.5", + "@babel/plugin-transform-react-jsx-self": "^7.24.5", + "@babel/plugin-transform-react-jsx-source": "^7.24.1", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" } }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "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, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, + "peer": true + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "devOptional": true, "bin": { - "browserslist": "cli.js" + "acorn": "bin/acorn" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=0.4.0" } }, - "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "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==", "dev": true, - "dependencies": { - "base-x": "^3.0.2" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "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, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "devOptional": true, + "peer": true, "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "peer": true, + "engines": { + "node": ">=0.3.0" } }, - "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 - }, - "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 + "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, + "peer": true }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "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, + "peer": true, + "dependencies": { + "debug": "4" + }, "engines": { - "node": ">= 0.8" + "node": ">= 6.0.0" } }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "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, "peer": true, "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "engines": { - "node": ">=10" + "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": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "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, + "optional": true, + "peer": true, "engines": { - "node": ">= 6" + "node": ">=0.4.2" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001565", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", - "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/case": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", - "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", + "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, - "engines": { - "node": ">= 0.8.0" + "peer": true, + "dependencies": { + "string-width": "^4.1.0" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true, - "peer": true - }, - "node_modules/catering": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", - "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", + "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==", "dev": true, + "peer": true, "engines": { "node": ">=6" } }, - "node_modules/cbor": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", - "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", + "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, "peer": true, "dependencies": { - "nofilter": "^3.1.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=12.19" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chai": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "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, "peer": true, - "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.0.8" + "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==", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "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, - "peer": true, "dependencies": { - "check-error": "^1.0.2" + "color-convert": "^1.9.0" }, - "peerDependencies": { - "chai": ">= 2.1.2 < 5" + "engines": { + "node": ">=4" } }, - "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==", + "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, + "peer": true + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "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==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "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==", + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "devOptional": true, + "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==", + "dev": true + }, + "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, "peer": true, "engines": { - "node": "*" + "node": ">=6" } }, - "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==", + "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==", "dev": true, - "peer": true, - "dependencies": { - "get-func-name": "^2.0.2" - }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, + "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, + "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, + "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==", + "dev": true, + "peer": true, + "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, + "peer": true, + "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, + "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, + "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==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", "funding": [ { - "type": "individual", - "url": "https://paulmillr.com/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" } ], "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" + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" }, "engines": { - "node": ">= 8.10.0" + "node": "^10 || ^12 || >=14" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/chokidar/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==", + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", "dev": true, + "peer": true, "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "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==", - "dev": true + "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==" }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", "dev": true, + "peer": true, "dependencies": { - "inherits": "^2.0.1", "safe-buffer": "^5.0.1" } }, - "node_modules/classic-level": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.3.0.tgz", - "integrity": "sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==", + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", "dev": true, - "hasInstallScript": true, - "dependencies": { - "abstract-level": "^1.0.2", - "catering": "^2.1.0", - "module-error": "^1.0.1", - "napi-macros": "^2.2.2", - "node-gyp-build": "^4.3.0" - }, + "peer": true + }, + "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==", "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "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, - "engines": { - "node": ">=6" - } + "peer": true }, - "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==", + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true, + "peer": true + }, + "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, "peer": true, "dependencies": { - "object-assign": "^4.1.0", - "string-width": "^2.1.1" + "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": ">=6" + "node": ">=10" }, - "optionalDependencies": { - "colors": "^1.1.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/boxen/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==", "dev": true, "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/boxen/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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==", + "node_modules/boxen/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==", "dev": true, "peer": true, "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/cli-table3/node_modules/strip-ansi": { + "node_modules/boxen/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==", + "dev": true, + "peer": true + }, + "node_modules/boxen/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "peer": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "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==", + "node_modules/boxen/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==", "dev": true, + "peer": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "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, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { - "color-name": "1.1.3" + "balanced-match": "^1.0.0" } }, - "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 + "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==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true, + "peer": true + }, + "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, + "peer": true + }, + "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, "peer": true, - "engines": { - "node": ">=0.1.90" + "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/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "delayed-stream": "~1.0.0" + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">= 0.8" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "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 + "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, + "peer": true, + "dependencies": { + "base-x": "^3.0.2" + } }, - "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==", + "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, "peer": true, "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" + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" } }, - "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==", + "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, + "peer": true + }, + "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, + "peer": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "array-back": "^4.0.2", - "chalk": "^2.4.2", - "table-layout": "^1.0.2", - "typical": "^5.2.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "peer": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "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==", + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "peer": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "engines": { "node": ">= 6" } }, - "node_modules/computeds": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", - "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", - "dev": true + "node_modules/caniuse-lite": { + "version": "1.0.30001640", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz", + "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "peer": true }, - "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==", + "node_modules/cbor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", "dev": true, - "engines": [ - "node >= 0.8" - ], "peer": true, "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=12.19" } }, - "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==", + "node_modules/chai": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, "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" + "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.0.8" + }, + "engines": { + "node": ">=4" } }, - "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==", + "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, "peer": true, "dependencies": { - "safe-buffer": "~5.1.0" + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 6" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "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, - "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, - "peer": true - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "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, - "bin": { - "crc32": "bin/crc32.njs" + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=0.8" - } - }, - "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, - "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": ">=4" } }, - "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==", + "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, - "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" + "peer": true, + "engines": { + "node": "*" } }, - "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, - "peer": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "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==", "dev": true, + "peer": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "get-func-name": "^2.0.2" }, "engines": { - "node": ">= 8" + "node": "*" } }, - "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, - "peer": true, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, "engines": { - "node": "*" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" + "node_modules/chokidar/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==", + "dependencies": { + "is-glob": "^4.0.1" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "node_modules/dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" - }, - "node_modules/de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "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==", + "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==", "dev": true, "peer": true }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, + "peer": true, "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "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, "peer": true, - "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==", + "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, "peer": true, "engines": { - "node": ">=4.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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, - "peer": true - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "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, "peer": true, "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "object-assign": "^4.1.0", + "string-width": "^2.1.1" }, "engines": { - "node": ">= 0.4" + "node": ">=6" + }, + "optionalDependencies": { + "colors": "^1.1.2" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "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, + "peer": true, "engines": { - "node": ">=0.4.0" + "node": ">=4" } }, - "node_modules/depd": { + "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "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, + "peer": true, "engines": { - "node": ">= 0.8" + "node": ">=4" } }, - "node_modules/detect-port": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", - "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "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, "peer": true, "dependencies": { - "address": "^1.0.1", - "debug": "4" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, - "bin": { - "detect": "bin/detect-port.js", - "detect-port": "bin/detect-port.js" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, "engines": { - "node": ">=0.3.1" + "node": ">=4" } }, - "node_modules/difflib": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", - "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", + "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, "peer": true, "dependencies": { - "heap": ">= 0.2.0" + "ansi-regex": "^3.0.0" }, "engines": { - "node": "*" + "node": ">=4" } }, - "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==", + "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, "peer": true, "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/dotenv": { - "version": "16.4.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.1.tgz", - "integrity": "sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==", - "dev": true, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.596", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.596.tgz", - "integrity": "sha512-zW3zbZ40Icb2BCWjm47nxwcFGYlIgdXkAx85XDO7cyky9J4QQfq8t0W19/TLZqq3JPQXtlv8BPIGmfa9Jb4scg==", - "dev": true - }, - "node_modules/element-plus": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.4.4.tgz", - "integrity": "sha512-TlKubXJgxwhER0dw+8ULn9hr9kZjraV4R6Q/eidwWUwCKxwXYPBGmMKsZ/85tlxlhMYbcLZd/YZh6G3QkHX4fg==", - "dependencies": { - "@ctrl/tinycolor": "^3.4.1", - "@element-plus/icons-vue": "^2.3.1", - "@floating-ui/dom": "^1.0.1", - "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", - "@types/lodash": "^4.14.182", - "@types/lodash-es": "^4.17.6", - "@vueuse/core": "^9.1.0", - "async-validator": "^4.2.5", - "dayjs": "^1.11.3", - "escape-html": "^1.0.3", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "lodash-unified": "^1.0.2", - "memoize-one": "^6.0.0", - "normalize-wheel-es": "^1.2.0" - }, - "peerDependencies": { - "vue": "^3.2.0" + "node": ">=6" } }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "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, "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" + "color-name": "1.1.3" } }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "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==", + "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 }, - "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==", - "dev": true, - "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==", + "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, + "peer": true, "engines": { - "node": ">=6" + "node": ">=0.1.90" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "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, + "peer": true, "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" + "delayed-stream": "~1.0.0" }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "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==", + "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, - "engines": { - "node": ">=0.8.0" - } + "peer": true }, - "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==", + "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, "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" + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" }, "engines": { - "node": ">=0.12.0" - }, - "optionalDependencies": { - "source-map": "~0.2.0" + "node": ">=4.0.0" } }, - "node_modules/escodegen/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==", + "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, - "optional": true, "peer": true, "dependencies": { - "amdefine": ">=0.0.4" + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" }, "engines": { - "node": ">=0.8.0" + "node": ">=8.0.0" } }, - "node_modules/esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "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, "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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==", + "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, "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">= 12" } }, - "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==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "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" + ], "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 - } + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "node_modules/ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "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, "peer": true, "dependencies": { - "js-sha3": "^0.8.0" + "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/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==", + "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, - "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } + "peer": true }, - "node_modules/ethereumjs-abi": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", - "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "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, + "peer": true, "dependencies": { - "bn.js": "^4.11.8", - "ethereumjs-util": "^6.0.0" + "safe-buffer": "~5.1.0" } }, - "node_modules/ethereumjs-abi/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, - "node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "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, - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" + "peer": true, + "engines": { + "node": ">= 0.6" } }, - "node_modules/ethereumjs-util/node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "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, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ethereumjs-util/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "peer": true }, - "node_modules/ethereumjs-util/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, - "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/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" } }, - "node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "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, + "peer": true, "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "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/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" + "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/ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "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, "peer": true, "dependencies": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "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/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, + "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==", + "devOptional": true, "peer": true }, - "node_modules/ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dev": true, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": ">= 8" } }, - "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==", + "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, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "peer": true, + "engines": { + "node": "*" } }, - "node_modules/fast-deep-equal": { + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { "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==", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", "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.4" + "internmap": "1 - 2" }, "engines": { - "node": ">=8.6.0" + "node": ">=12" } }, - "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==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "engines": { - "node": ">= 6" + "node": ">=12" } }, - "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, - "peer": true + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "reusify": "^1.0.4" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dependencies": { - "to-regex-range": "^5.0.1" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "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, - "peer": true, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", "dependencies": { - "array-back": "^3.0.1" + "d3-path": "^3.1.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=12" } }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", "dependencies": { - "locate-path": "^2.0.0" + "d3-array": "2 - 3" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "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, - "bin": { - "flat": "cli.js" + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "node": ">=12" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "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.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "ms": "2.1.2" }, "engines": { - "node": ">= 6" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "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 - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "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, + "peer": true, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, + "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==", "dev": true, + "peer": true, "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "type-detect": "^4.0.0" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=6" } }, - "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==", + "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, - "peer": true + "peer": true, + "engines": { + "node": ">=4.0.0" + } }, - "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==", + "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 }, - "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, - "optional": true, - "os": [ - "darwin" - ], + "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==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, "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, + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "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, + "peer": true, "engines": { - "node": ">=6.9.0" + "node": ">=0.4.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==", + "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, + "peer": true, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">= 0.8" } }, - "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==", + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "peer": true, "engines": { - "node": "*" + "node": ">=0.3.1" } }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "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": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "heap": ">= 0.2.0" }, - "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, - "peer": true, "engines": { - "node": ">=4" + "node": "*" } }, - "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==", + "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==", "dev": true, - "peer": true, "dependencies": { - "chalk": "^2.4.2", - "node-emoji": "^1.10.0" + "path-type": "^4.0.0" }, - "bin": { - "testrpc-sc": "index.js" + "engines": { + "node": ">=8" } }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "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" + "esutils": "^2.0.2" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=6.0.0" } }, - "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, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "dependencies": { - "is-glob": "^4.0.3" - }, + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, "engines": { - "node": ">=10.13.0" + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.816", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz", + "integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, + "peer": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "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/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true, + "peer": true + }, + "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==" + }, + "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==", "dev": true, + "peer": true, "dependencies": { - "brace-expansion": "^1.1.7" + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" }, "engines": { - "node": "*" + "node": ">=8.6" } }, - "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==", + "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, "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dependencies": { - "global-prefix": "^3.0.0" + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "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==", + "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==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, - "peer": true, - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "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==", + "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, + "engines": { + "node": ">=0.8.0" + } + }, + "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, "peer": true, "dependencies": { - "isexe": "^2.0.0" + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1" }, "bin": { - "which": "bin/which" + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=0.12.0" + }, + "optionalDependencies": { + "source-map": "~0.2.0" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "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": ">=4" + "node": ">=0.10.0" } }, - "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==", + "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, "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" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "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, "peer": true, "dependencies": { - "get-intrinsic": "^1.1.3" + "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" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.8.0" } }, - "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==", - "dev": true + "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/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "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, "peer": true, "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@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": { - "handlebars": "bin/handlebars" + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=0.4.7" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/hardhat": { - "version": "2.19.4", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.19.4.tgz", - "integrity": "sha512-fTQJpqSt3Xo9Mn/WrdblNGAfcANM6XC3tAEi6YogB4s02DmTf93A8QsGb8uR0KR8TFcpcS8lgiW4ugAIYpnbrQ==", + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.7.tgz", + "integrity": "sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "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, "dependencies": { - "@ethersproject/abi": "^5.1.2", - "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/ethereumjs-block": "5.0.2", - "@nomicfoundation/ethereumjs-blockchain": "7.0.2", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-evm": "2.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-statemanager": "2.0.2", - "@nomicfoundation/ethereumjs-trie": "6.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "@nomicfoundation/ethereumjs-vm": "7.0.2", - "@nomicfoundation/solidity-analyzer": "^0.1.0", - "@sentry/node": "^5.18.1", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "^5.1.0", - "adm-zip": "^0.4.16", - "aggregate-error": "^3.0.0", - "ansi-escapes": "^4.3.0", - "chalk": "^2.4.2", - "chokidar": "^3.4.0", - "ci-info": "^2.0.0", - "debug": "^4.1.1", - "enquirer": "^2.3.0", - "env-paths": "^2.2.0", - "ethereum-cryptography": "^1.0.3", - "ethereumjs-abi": "^0.6.8", - "find-up": "^2.1.0", - "fp-ts": "1.19.3", - "fs-extra": "^7.0.1", - "glob": "7.2.0", - "immutable": "^4.0.0-rc.12", - "io-ts": "1.10.4", - "keccak": "^3.0.2", - "lodash": "^4.17.11", - "mnemonist": "^0.38.0", - "mocha": "^10.0.0", - "p-map": "^4.0.0", - "raw-body": "^2.4.1", - "resolve": "1.17.0", - "semver": "^6.3.0", - "solc": "0.7.3", - "source-map-support": "^0.5.13", - "stacktrace-parser": "^0.1.10", - "tsort": "0.0.1", - "undici": "^5.14.0", - "uuid": "^8.3.2", - "ws": "^7.4.6" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, - "bin": { - "hardhat": "internal/cli/bootstrap.js" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "ts-node": "*", - "typescript": "*" + "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, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - }, - "typescript": { - "optional": true - } + "funding": { + "url": "https://opencollective.com/eslint" } }, - "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==", + "node_modules/eslint/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==", "dev": true, - "peer": true, "dependencies": { - "array-uniq": "1.0.3", - "eth-gas-reporter": "^0.2.25", - "sha1": "^1.1.1" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "hardhat": "^2.0.2" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/hardhat/node_modules/brace-expansion": { + "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", @@ -5800,1131 +6104,1240 @@ "concat-map": "0.0.1" } }, - "node_modules/hardhat/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "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" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/hardhat/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/eslint/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==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "color-name": "~1.1.4" }, "engines": { - "node": "*" + "node": ">=7.0.0" } }, - "node_modules/hardhat/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, - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/eslint/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==", + "dev": true }, - "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==", + "node_modules/eslint/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, "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dev": true, - "peer": true, - "dependencies": { - "get-intrinsic": "^1.2.2" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/eslint/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, - "peer": true, + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/eslint/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==", "dev": true, - "peer": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/hash-base/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==", + "node_modules/eslint/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==", "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" - } - ] - }, - "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==", "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "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, "dependencies": { - "function-bind": "^1.1.2" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">= 0.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "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==", + "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, + "peer": true, "bin": { - "he": "bin/he" + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/heap": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, - "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==", "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" } }, - "node_modules/hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "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, "dependencies": { - "lru-cache": "^10.0.1" + "estraverse": "^5.2.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=4.0" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "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, "engines": { - "node": "14 || >=16.14" + "node": ">=4.0" } }, - "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "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, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "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==", + "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, "peer": true, "dependencies": { - "caseless": "^0.12.0", - "concat-stream": "^1.6.2", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" + "@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" }, - "engines": { - "node": ">=6.0.0" + "peerDependencies": { + "@codechecks/client": "^0.1.0" + }, + "peerDependenciesMeta": { + "@codechecks/client": { + "optional": true + } } }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "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, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "peer": true }, - "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==", + "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/" + } + ], "peer": true, "dependencies": { - "@types/node": "^10.0.3" + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" } }, - "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, - "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==", + "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/" + } + ], + "peer": true, "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" } }, - "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==", + "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, + "peer": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "node_modules/eth-gas-reporter/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", "dev": true, "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" } - ] - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, + ], "peer": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", - "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", - "dev": true - }, - "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, - "engines": { - "node": ">=8" + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "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/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" } }, - "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==", + "node_modules/ethereum-bloom-filters": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.1.0.tgz", + "integrity": "sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==", "dev": true, + "peer": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "@noble/hashes": "^1.4.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "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, - "peer": true - }, - "node_modules/interpret": { + "node_modules/ethereum-bloom-filters/node_modules/@noble/hashes": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "dev": true, "peer": true, "engines": { - "node": ">= 0.10" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "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==", + "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, + "peer": true, "dependencies": { - "fp-ts": "^1.0.0" + "@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/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "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==", + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", "dev": true, + "peer": true, "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", "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" - } - ], - "engines": { - "node": ">=4" + "peer": true, + "dependencies": { + "@types/node": "*" } }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "node_modules/ethereumjs-abi/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true, + "peer": true + }, + "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "dev": true, + "peer": true, "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "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, + "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": ">=0.10.0" + "node": ">=10.0.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==", + "node_modules/ethers": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.1.tgz", + "integrity": "sha512-hdJ2HOxg/xx97Lm9HdCWk949BfYqYWpyw4//78SiwOLgASyfrNszfMUNB2joKjvGUdwhHfaiMMFFwacVVoLR9A==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "peer": true, + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.17.1" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "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==", + "node_modules/ethers/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true, + "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, + "peer": true, "dependencies": { - "is-extglob": "^2.1.1" + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.5.0", + "npm": ">=3" } }, - "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==", + "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, + "peer": true + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", "dev": true, + "peer": true, + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, "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==", + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "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, - "engines": { - "node": ">=0.12.0" + "peer": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "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, + "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==", + "dev": true + }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "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, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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.4" + }, "engines": { - "node": ">=10" + "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==", + "dependencies": { + "is-glob": "^4.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 6" } }, - "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, - "peer": true + "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==", + "dev": true }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "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 }, - "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", - "dev": true, - "bin": { - "jiti": "bin/jiti.js" - } + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, - "node_modules/js-sdsl": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", - "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" } }, - "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==" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "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, "dependencies": { - "argparse": "^2.0.1" + "flat-cache": "^3.0.4" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "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==", + "dependencies": { + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", - "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "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, + "peer": true, + "dependencies": { + "array-back": "^3.0.1" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4.0.0" } }, - "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, - "peer": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "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, - "bin": { - "json5": "lib/cli.js" + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jsonschema": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", - "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "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, "peer": true, - "engines": { - "node": "*" + "bin": { + "flat": "cli.js" } }, - "node_modules/keccak": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", - "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "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, - "hasInstallScript": true, "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=10.0.0" + "node": "^10.12.0 || >=12.0.0" } }, - "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==", + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "peer": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.9" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/level": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", - "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", - "dev": true, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dependencies": { - "browser-level": "^1.0.1", - "classic-level": "^1.2.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=12" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/level" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/level-supports": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", - "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, "engines": { - "node": ">=12" + "node": ">= 6" } }, - "node_modules/level-transcoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", - "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "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, + "peer": true + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/framer-motion": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.3.0.tgz", + "integrity": "sha512-hjYjMUQaWuqilwRr5kC0CunHZFVMtKWHy/IdL/LPRBD0C491DKTvYwQRJ5qRXEAOT+Rth7Vi4XBe4TA4bFOn3A==", "dependencies": { - "buffer": "^6.0.3", - "module-error": "^1.0.1" + "tslib": "^2.4.0" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "peer": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=12" } }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "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, - "engines": { - "node": ">=10" - } + "peer": true }, - "node_modules/lines-and-columns": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", - "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } + "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 }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=4" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "node_modules/lodash-unified": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", - "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", - "peerDependencies": { - "@types/lodash-es": "*", - "lodash": "*", - "lodash-es": "*" + "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==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "peer": true + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "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, - "peer": true + "peer": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "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==", + "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==", "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, + "peer": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/log-symbols/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==", - "dev": true, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "color-convert": "^2.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "peer": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4" } }, - "node_modules/log-symbols/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==", + "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, + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" }, - "engines": { - "node": ">=7.0.0" + "bin": { + "testrpc-sc": "index.js" } }, - "node_modules/log-symbols/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==", - "dev": true - }, - "node_modules/log-symbols/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==", + "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, + "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": ">=8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/log-symbols/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==", - "dev": true, + "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==", "dependencies": { - "has-flag": "^4.0.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "peer": true, "dependencies": { - "get-func-name": "^2.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.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 - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=12" - } - }, - "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, - "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, - "peer": true - }, - "node_modules/mcl-wasm": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", - "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", - "dev": true, - "engines": { - "node": ">=8.9.0" + "node": "*" } }, - "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==", + "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, + "peer": true, "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/memoize-one": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" - }, - "node_modules/memory-level": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", - "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", + "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, + "peer": true, "dependencies": { - "abstract-level": "^1.0.0", - "functional-red-black-tree": "^1.0.1", - "module-error": "^1.0.1" + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" }, "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "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, - "engines": { - "node": ">= 0.10.0" + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "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 - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "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": ">=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==", - "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dependencies": { - "mime-db": "1.52.0" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": ">= 0.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==" + "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==", + "dev": true, + "peer": true }, - "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==" + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, - "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, + "peer": true, "dependencies": { - "brace-expansion": "^2.0.1" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=0.4.7" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "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, "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, - "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==", + "node_modules/hardhat": { + "version": "2.22.6", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.6.tgz", + "integrity": "sha512-abFEnd9QACwEtSvZZGSmzvw7N3zhQN1cDKz5SLHAupfG24qTHofCjqvD5kT5Wwsq5XOL0ON1Mq5rr4v0XX5ciw==", "dev": true, "peer": true, "dependencies": { - "minimist": "^1.2.6" + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/edr": "^0.4.1", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "boxen": "^5.1.2", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.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", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" }, "bin": { - "mkdirp": "bin/cmd.js" + "hardhat": "internal/cli/bootstrap.js" + }, + "peerDependencies": { + "ts-node": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } } }, - "node_modules/mnemonist": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", - "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "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, + "peer": true, "dependencies": { - "obliterator": "^2.0.0" + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.25", + "sha1": "^1.1.1" + }, + "peerDependencies": { + "hardhat": "^2.0.2" } }, - "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "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/" + } + ], + "peer": true + }, + "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/" + } + ], + "peer": true, + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" } }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "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, - "engines": { - "node": ">=6" + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "peer": true, + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" } }, - "node_modules/mocha/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==", + "node_modules/hardhat/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/mocha/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==", + "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, + "peer": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@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/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "peer": true, + "dependencies": { + "locate-path": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=4" + } + }, + "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, + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6 <7 || >=8" } }, - "node_modules/mocha/node_modules/glob": { + "node_modules/hardhat/node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6940,21 +7353,36 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "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, + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/hardhat/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, + "peer": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "node_modules/hardhat/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -6962,513 +7390,478 @@ "node": "*" } }, - "node_modules/mocha/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==", + "node_modules/hardhat/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, + "peer": true, + "dependencies": { + "p-try": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/mocha/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==", + "node_modules/hardhat/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, + "peer": true, "dependencies": { - "p-locate": "^5.0.0" + "p-limit": "^1.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "node_modules/hardhat/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "peer": true, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/mocha/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==", - "dev": true - }, - "node_modules/mocha/node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "node_modules/hardhat/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, + "peer": true, "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "semver": "bin/semver.js" } }, - "node_modules/mocha/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==", + "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, - "dependencies": { - "yocto-queue": "^0.1.0" - }, + "peer": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4.0.0" } }, - "node_modules/mocha/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==", + "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, - "dependencies": { - "p-limit": "^3.0.2" - }, + "peer": true, "engines": { - "node": ">=10" + "node": ">=8.3.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/mocha/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==", + "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, "engines": { - "node": ">=8" + "node": ">=4" } }, - "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, + "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==", "dependencies": { - "has-flag": "^4.0.0" + "es-define-property": "^1.0.0" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/module-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", - "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", - "dev": true, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/muggle-string": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", - "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", - "dev": true + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "peer": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "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==", "dev": true, + "peer": true, "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">= 0.4" } }, - "node_modules/napi-macros": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", - "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", - "dev": true + "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, + "peer": true, + "bin": { + "he": "bin/he" + } }, - "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==", + "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, "peer": true }, - "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 - }, - "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==", + "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==", "dev": true, "peer": true, "dependencies": { - "lodash": "^4.17.21" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/node-gyp-build": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", - "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "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, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" + "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/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/nofilter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", - "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "peer": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, "engines": { - "node": ">=12.19" + "node": ">= 0.8" } }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "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, "peer": true, "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "@types/node": "^10.0.3" } }, - "node_modules/normalize-package-data": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", - "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "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, + "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, + "peer": true, "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 6" } }, - "node_modules/normalize-package-data/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "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, + "peer": true, "dependencies": { - "yallist": "^4.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "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==", + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node_modules/immer": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz", + "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==", + "devOptional": true, + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" } }, - "node_modules/normalize-wheel-es": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", - "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + "node_modules/immutable": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", + "dev": true }, - "node_modules/npm-run-all2": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.1.tgz", - "integrity": "sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "ansi-styles": "^6.2.1", - "cross-spawn": "^7.0.3", - "memorystream": "^0.3.1", - "minimatch": "^9.0.0", - "pidtree": "^0.6.0", - "read-pkg": "^8.0.0", - "shell-quote": "^1.7.3" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "npm-run-all2": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0", - "npm": ">= 8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-run-all2/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.8.19" } }, - "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==", + "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, "peer": true, - "dependencies": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": ">=8" } }, - "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==", + "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, - "peer": true + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } }, - "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==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "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, + "peer": true + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, + "peer": true, "engines": { - "node": ">= 6" + "node": ">= 0.10" } }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "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, "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "fp-ts": "^1.0.0" } }, - "node_modules/obliterator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", - "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", - "dev": true - }, - "node_modules/oh-vue-icons": { - "version": "1.0.0-rc3", - "resolved": "https://registry.npmjs.org/oh-vue-icons/-/oh-vue-icons-1.0.0-rc3.tgz", - "integrity": "sha512-+k2YC6piK7sEZnwbkQF3UokFPMmgqpiLP6f/H0ovQFLl20QA5V4U8EcI6EclD2Lt5NMQ3k6ilLGo8XyXqdVSvg==", + "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==", "dependencies": { - "vue-demi": "^0.12.5" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^2.0.0 || >=3.0.0" + "binary-extensions": "^2.0.0" }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/oh-vue-icons/node_modules/vue-demi": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.12.5.tgz", - "integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==", - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" + "node_modules/is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "dependencies": { + "hasown": "^2.0.2" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "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, - "dependencies": { - "wrappy": "1" + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "peer": true, + "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==", + "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==", "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" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=0.10.0" } }, - "node_modules/ordinal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", - "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", + "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, - "peer": true + "peer": true, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } }, - "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==", - "dev": true, + "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==", "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, - "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "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, - "dependencies": { - "p-try": "^1.0.0" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "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, - "dependencies": { - "p-limit": "^1.1.0" - }, + "peer": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "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==", + "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, - "dependencies": { - "aggregate-error": "^3.0.0" - }, + "peer": true, "engines": { "node": ">=10" }, @@ -7476,1474 +7869,1419 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { + "node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, - "engines": { - "node": ">=4" - } + "peer": true }, - "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/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, - "node_modules/parse-json": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", - "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", - "dev": true, + "node_modules/ismobilejs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz", + "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==" + }, + "node_modules/jackspeak": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.2.tgz", + "integrity": "sha512-qH3nOSj8q/8+Eg8LUPOq3C+6HWkpUioIjDsq1+D4zY91oZvpPttw8GwtF1nReRYKXl+1AORyFqtm2f5Q1SB6/Q==", "dependencies": { - "@babel/code-frame": "^7.21.4", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^3.0.0", - "lines-and-columns": "^2.0.3", - "type-fest": "^3.8.0" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=16" + "node": "14 >=14.21 || 16 >=16.20 || >=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/parse-json/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dev": true + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "bin": { + "jiti": "bin/jiti.js" } }, - "node_modules/path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "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==", + "dev": true, + "peer": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "dependencies": { - "process": "^0.11.1", - "util": "^0.10.3" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { "node": ">=4" } }, - "node_modules/path-is-absolute": { + "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 + }, + "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==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "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 + }, + "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==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "peer": true }, - "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==", + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "bin": { + "json5": "lib/cli.js" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "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 - }, - "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==", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "peer": true, - "engines": { - "node": ">=8" + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "node_modules/jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", "dev": true, "peer": true, "engines": { "node": "*" } }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "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, + "peer": true, "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": ">=0.12" + "node": ">=10.0.0" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "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, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "dependencies": { + "json-buffer": "3.0.1" } }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "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, - "bin": { - "pidtree": "bin/pidtree.js" - }, + "peer": true, "engines": { - "node": ">=0.10" + "node": ">=0.10.0" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/pinia": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", - "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "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, "dependencies": { - "@vue/devtools-api": "^6.5.0", - "vue-demi": ">=0.14.5" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "@vue/composition-api": "^1.4.0", - "typescript": ">=4.4.4", - "vue": "^2.6.14 || ^3.3.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/pinia/node_modules/vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, "engines": { - "node": ">= 6" + "node": ">= 0.8.0" } }, - "node_modules/pony-cause": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.10.tgz", - "integrity": "sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==", - "dev": true, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "engines": { - "node": ">=12.0.0" + "node": ">=10" } }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "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, "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=10" }, - "peerDependencies": { - "postcss": "^8.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "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, + "peer": true + }, + "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, + "peer": true + }, + "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==", + "dev": true, + "peer": true + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" + }, + "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 + }, + "node_modules/lodash.times": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.times/-/lodash.times-4.3.2.tgz", + "integrity": "sha512-FfaJzl0SA35CRPDh5SWe2BTght6y5KSK7yJv166qIp/8q7qOwBDCvuDZE2RUSMRpBkLF6rZKbLEUoTmaP3qg6A==" + }, + "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, + "peer": true + }, + "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, + "peer": true, "dependencies": { - "camelcase-css": "^2.0.1" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": "^12 || ^14 || >= 16" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "node_modules/log-symbols/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==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "peer": true, "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" + "node": ">=8" }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", - "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", - "dev": true, - "engines": { - "node": ">=14" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { - "postcss-selector-parser": "^6.0.11" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=12.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "node_modules/log-symbols/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==", "dev": true, + "peer": true, "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "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 + "node_modules/log-symbols/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==", + "dev": true, + "peer": true }, - "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==", + "node_modules/log-symbols/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==", "dev": true, "peer": true, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "node_modules/log-symbols/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==", "dev": true, "peer": true, - "bin": { - "prettier": "bin-prettier.js" + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "peer": true, + "dependencies": { + "get-func-name": "^2.0.1" } }, - "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==", + "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, "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==", + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "peer": true, "dependencies": { - "asap": "~2.0.6" + "yallist": "^3.0.2" } }, - "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==" + "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==", + "devOptional": true, + "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==", + "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, + "peer": true + }, + "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, "peer": true, - "engines": { - "node": ">=6" + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "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, "peer": 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==", + "engines": { + "node": ">= 8" + } + }, + "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==" + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dependencies": { - "side-channel": "^1.0.4" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8.6" } }, - "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==", - "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" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "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, - "dependencies": { - "safe-buffer": "^5.1.0" + "peer": true, + "engines": { + "node": ">= 0.6" } }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "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, + "peer": true, "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "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==", "dev": true, - "dependencies": { - "pify": "^2.3.0" - } + "peer": true }, - "node_modules/read-pkg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", - "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "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==", "dev": true, + "peer": true + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dependencies": { - "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^6.0.0", - "parse-json": "^7.0.0", - "type-fest": "^4.2.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "engines": { - "node": ">= 6" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "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, + "peer": true, "dependencies": { - "picomatch": "^2.2.1" + "minimist": "^1.2.6" }, - "engines": { - "node": ">=8.10.0" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "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==", + "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, "peer": true, "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" + "obliterator": "^2.0.0" } }, - "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==", + "node_modules/mocha": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.6.0.tgz", + "integrity": "sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw==", "dev": true, "peer": true, "dependencies": { - "minimatch": "^3.0.5" + "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": ">=6.0.0" + "node": ">= 14.0.0" } }, - "node_modules/recursive-readdir/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/mocha/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, "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/recursive-readdir/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/mocha/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, "peer": true, "dependencies": { - "brace-expansion": "^1.1.7" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/mocha/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==", "dev": true, "peer": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/remixicon": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/remixicon/-/remixicon-3.6.0.tgz", - "integrity": "sha512-+IEL/cPimpAhvg7o24Pwyd3v+R0/j0p0WK4MHJUfv/HrsHJ0LElnbMFY8l+Uu/xDBzFIvGB64towtEnAkK9obg==" - }, - "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==", + "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, "peer": true, "dependencies": { - "req-from": "^2.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "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==", + "node_modules/mocha/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==", + "dev": true, + "peer": true + }, + "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, "peer": true, "dependencies": { - "resolve-from": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "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, - "engines": { - "node": ">=0.10.0" + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.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, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "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 + }, + "node_modules/ndjson": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz", + "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==", "dev": true, + "peer": true, "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "json-stringify-safe": "^5.0.1", + "minimist": "^1.2.5", + "readable-stream": "^3.6.0", + "split2": "^3.0.0", + "through2": "^4.0.0" }, "bin": { - "resolve": "bin/resolve" + "ndjson": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "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==", + "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, - "peer": true, - "engines": { - "node": ">=4" - } + "peer": true }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "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, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } + "peer": true }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "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, + "peer": true, "dependencies": { - "glob": "^7.1.3" - }, + "lodash": "^4.17.21" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "dev": true, + "peer": true, "bin": { - "rimraf": "bin.js" + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "peer": true, + "engines": { + "node": ">=12.19" } }, - "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==", + "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, + "peer": true, "dependencies": { - "bn.js": "^5.2.0" + "abbrev": "1" }, "bin": { - "rlp": "bin/rlp" + "nopt": "bin/nopt.js" } }, - "node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, + "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==", "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=0.10.0" } }, - "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==", - "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" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/run-parallel-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", - "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "peer": true, "dependencies": { - "queue-microtask": "^1.2.2" + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/rustbn.js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", - "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", - "dev": true + "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, + "peer": true }, - "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 + "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==", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } }, - "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, - "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" + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" }, - "bin": { - "istanbul": "lib/cli.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", "dev": true, - "peer": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } + "peer": true }, - "node_modules/sc-istanbul/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "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, - "peer": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "wrappy": "1" } }, - "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==", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, - "peer": true, "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.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": "*" + "node": ">= 0.8.0" } }, - "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==", + "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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } + "peer": true }, - "node_modules/sc-istanbul/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "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==", "dev": true, "peer": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=0.10.0" } }, - "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==", + "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, - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "dependencies": { + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sc-istanbul/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "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, - "peer": true, "dependencies": { - "brace-expansion": "^1.1.7" + "p-limit": "^3.0.2" }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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, - "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==", + "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, "peer": true, "dependencies": { - "has-flag": "^1.0.0" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, "peer": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=4" } }, - "node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" }, - "node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "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==", "dev": true, - "hasInstallScript": true, "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" + "callsites": "^3.0.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=6" } }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "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, - "bin": { - "semver": "bin/semver.js" - } + "peer": true }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "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==", "dev": true, - "dependencies": { - "randombytes": "^2.1.0" + "engines": { + "node": ">=8" } }, - "node_modules/set-function-length": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", - "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "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, - "peer": true, - "dependencies": { - "define-data-property": "^1.1.1", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.2", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - }, "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "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 - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" + "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==", + "engines": { + "node": ">=8" } }, - "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, - "peer": true, + "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==" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dependencies": { - "charenc": ">= 0.0.1", - "crypt": ">= 0.0.1" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.2.tgz", + "integrity": "sha512-voV4dDrdVZVNz84n39LFKDaRzfwhdzJ7akpyXfTMxCgRUp07U3lcJUXRlhTKP17rgt09sUzLi5iCitpEAr+6ug==", "engines": { - "node": ">=8" + "node": "14 || 16 || 18 || 20 || >=22" } }, - "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==", + "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==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peer": true, + "engines": { + "node": "*" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "peer": true, "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" }, "engines": { - "node": ">=4" + "node": ">=0.12" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, "peer": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "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, - "peer": true, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pixi.js": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-7.4.2.tgz", + "integrity": "sha512-TifqgHGNofO7UCEbdZJOpUu7dUnpu4YZ0o76kfCqxDa4RS8ITc9zjECCbtalmuNXkVhSEZmBKQvE7qhHMqw/xg==", + "dependencies": { + "@pixi/accessibility": "7.4.2", + "@pixi/app": "7.4.2", + "@pixi/assets": "7.4.2", + "@pixi/compressed-textures": "7.4.2", + "@pixi/core": "7.4.2", + "@pixi/display": "7.4.2", + "@pixi/events": "7.4.2", + "@pixi/extensions": "7.4.2", + "@pixi/extract": "7.4.2", + "@pixi/filter-alpha": "7.4.2", + "@pixi/filter-blur": "7.4.2", + "@pixi/filter-color-matrix": "7.4.2", + "@pixi/filter-displacement": "7.4.2", + "@pixi/filter-fxaa": "7.4.2", + "@pixi/filter-noise": "7.4.2", + "@pixi/graphics": "7.4.2", + "@pixi/mesh": "7.4.2", + "@pixi/mesh-extras": "7.4.2", + "@pixi/mixin-cache-as-bitmap": "7.4.2", + "@pixi/mixin-get-child-by-name": "7.4.2", + "@pixi/mixin-get-global-position": "7.4.2", + "@pixi/particle-container": "7.4.2", + "@pixi/prepare": "7.4.2", + "@pixi/sprite": "7.4.2", + "@pixi/sprite-animated": "7.4.2", + "@pixi/sprite-tiling": "7.4.2", + "@pixi/spritesheet": "7.4.2", + "@pixi/text": "7.4.2", + "@pixi/text-bitmap": "7.4.2", + "@pixi/text-html": "7.4.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" + } + }, + "node_modules/pony-cause": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.11.tgz", + "integrity": "sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/postcss": { + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" } }, - "node_modules/slice-ansi/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==", - "dev": true, - "peer": true, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", "dependencies": { - "color-convert": "^2.0.1" + "camelcase-css": "^2.0.1" }, "engines": { - "node": ">=8" + "node": "^12 || ^14 || >= 16" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" } }, - "node_modules/slice-ansi/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==", - "dev": true, - "peer": true, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "color-name": "~1.1.4" + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" }, "engines": { - "node": ">=7.0.0" + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/slice-ansi/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==", - "dev": true, - "peer": true + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } }, - "node_modules/solc": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", - "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", - "dev": true, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", "dependencies": { - "command-exists": "^1.2.8", - "commander": "3.0.2", - "follow-redirects": "^1.12.1", - "fs-extra": "^0.30.0", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "require-from-string": "^2.0.0", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "bin": { - "solcjs": "solcjs" + "postcss-selector-parser": "^6.0.11" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" } }, - "node_modules/solc/node_modules/commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", - "dev": true - }, - "node_modules/solc/node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", - "dev": true, + "node_modules/postcss-selector-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" } }, - "node_modules/solc/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } + "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==" }, - "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==", + "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, - "bin": { - "semver": "bin/semver" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/solidity-coverage": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.6.tgz", - "integrity": "sha512-vV03mA/0nNMskOdVwNarUcqk0N/aYdelxAbf6RZ5l84FcYHbqDTr2JXyeYMp4bT48qHtAQjnKrygW1FrECyWNw==", + "node_modules/prettier": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", "dev": true, - "peer": true, - "dependencies": { - "@ethersproject/abi": "^5.0.9", - "@solidity-parser/parser": "^0.18.0", - "chalk": "^2.4.2", - "death": "^1.1.0", - "detect-port": "^1.3.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.15", - "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" + "prettier": "bin/prettier.cjs" }, - "peerDependencies": { - "hardhat": "^2.11.0" + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", - "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==", + "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, "peer": true }, - "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==", + "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, "peer": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" + "asap": "~2.0.6" } }, - "node_modules/solidity-coverage/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "peer": true, "dependencies": { - "yallist": "^4.0.0" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/solidity-coverage/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/solidity-coverage/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "peer": true, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, - "node_modules/solidity-coverage/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "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, "peer": true }, - "node_modules/sortablejs": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", - "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" - }, - "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==", + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.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, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "node": ">=6" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", - "dev": true - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "peer": true - }, - "node_modules/stacktrace-parser": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", - "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "dev": true, + "node_modules/qs": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.2.tgz", + "integrity": "sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==", "dependencies": { - "type-fest": "^0.7.1" + "side-channel": "^1.0.6" }, "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "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, - "dependencies": { - "safe-buffer": "~5.2.0" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string_decoder/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, + "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", @@ -8959,640 +9297,566 @@ } ] }, - "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==", + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "peer": true + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } }, - "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==", + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "peer": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.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==", - "dev": true, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dependencies": { - "ansi-regex": "^5.0.1" + "loose-envify": "^1.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "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, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dependencies": { - "is-hex-prefixed": "1.0.0" + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "peerDependencies": { + "react": "^18.3.1" } }, - "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==", + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", - "dev": true, + "node_modules/react-smooth": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", + "integrity": "sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" } }, - "node_modules/sucrase/node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } }, - "node_modules/superstruct": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", - "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==", - "dev": true, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "engines": { - "node": ">=14.0.0" + "node": ">=0.10.0" } }, - "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==", + "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, + "peer": true, "dependencies": { - "has-flag": "^3.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8.10.0" } }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "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, - "peer": true, + "node_modules/recharts": { + "version": "2.12.7", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.12.7.tgz", + "integrity": "sha512-hlLJMhPQfv4/3NBSAyq3gzGg4h2v69RJh6KU7b3pXYNNAELs9kEoXOjbkxdXpALqKBoVmVptGfLpxdaVYqjmXQ==", "dependencies": { - "http-response-object": "^3.0.1", - "sync-rpc": "^1.2.1", - "then-request": "^6.0.0" + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^16.10.2", + "react-smooth": "^4.0.0", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" }, "engines": { - "node": ">=8.0.0" - } + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.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, - "peer": true, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", "dependencies": { - "get-port": "^3.1.0" + "decimal.js-light": "^2.4.1" } }, - "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "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": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "resolve": "^1.1.6" }, "engines": { - "node": ">=10.0.0" + "node": ">= 0.10" } }, - "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==", + "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, "peer": true, "dependencies": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" + "minimatch": "^3.0.5" }, "engines": { - "node": ">=8.0.0" + "node": ">=6.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==", + "node_modules/recursive-readdir/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "peer": true, - "engines": { - "node": ">=8" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "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==", + "node_modules/recursive-readdir/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tailwindcss": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.5.tgz", - "integrity": "sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==", - "dev": true, "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.0", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.19.1", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=14.0.0" + "node": "*" } }, - "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==", + "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, "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": ">=6" } }, - "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, - "peer": true + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, - "node_modules/then-request/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "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, "peer": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "req-from": "^2.0.0" }, "engines": { - "node": ">= 0.12" + "node": ">=4" } }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "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, + "peer": true, "dependencies": { - "any-promise": "^1.0.0" + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "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, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, + "peer": true, "engines": { - "node": ">=0.8" + "node": ">=4" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "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, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, + "peer": true, "engines": { - "node": ">=0.6.0" + "node": ">=0.10.0" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "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, + "peer": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "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==", - "dev": true, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dependencies": { - "is-number": "^7.0.0" + "path-parse": "^1.0.6" }, - "engines": { - "node": ">=8.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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==", "dev": true, "engines": { - "node": ">=0.6" + "node": ">=4" } }, - "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, - "peer": true, - "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/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/ts-command-line-args/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==", + "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, - "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "glob": "^7.1.3" }, - "engines": { - "node": ">=8" + "bin": { + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ts-command-line-args/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, - "node_modules/ts-command-line-args/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==", + "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, "peer": true, "dependencies": { - "color-name": "~1.1.4" + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/rollup": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=7.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "fsevents": "~2.3.2" } }, - "node_modules/ts-command-line-args/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==", + "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" + } + ], + "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" + } + ], "peer": true }, - "node_modules/ts-command-line-args/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==", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } + "peer": true }, - "node_modules/ts-command-line-args/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==", + "node_modules/sass": { + "version": "1.77.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", + "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" }, "engines": { - "node": ">=8" - } - }, - "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, - "peer": true, - "peerDependencies": { - "typescript": ">=3.7.0" + "node": ">=14.0.0" } }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true - }, - "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==", + "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, "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" + "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": { - "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 - } + "istanbul": "lib/cli.js" } }, - "node_modules/ts-node/node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "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, - "peer": true + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } }, - "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==", + "node_modules/sc-istanbul/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "peer": true, - "engines": { - "node": ">=0.3.1" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "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 - }, - "node_modules/tsort": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", - "dev": true - }, - "node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true - }, - "node_modules/tweetnacl-util": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "dev": true - }, - "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==", + "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, "peer": true, "dependencies": { - "prelude-ls": "~1.1.2" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": "*" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "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, "peer": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/type-fest": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.2.tgz", - "integrity": "sha512-mcvrCjixA5166hSrUoJgGb9gBQN4loMYyj9zxuMs/66ibHNEFd5JXMw37YVDx58L4/QID9jIzdTBB4mDwDJ6KQ==", - "dev": true, - "engines": { - "node": ">=16" - }, - "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==", + "node_modules/sc-istanbul/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "peer": true, "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" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, "bin": { - "typechain": "dist/cli/cli.js" - }, - "peerDependencies": { - "typescript": ">=4.3.0" - } - }, - "node_modules/typechain/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "js-yaml": "bin/js-yaml.js" } }, - "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==", + "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, "peer": true, - "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" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=4" } }, - "node_modules/typechain/node_modules/minimatch": { + "node_modules/sc-istanbul/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", @@ -9605,510 +9869,254 @@ "node": "*" } }, - "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, - "peer": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "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==", + "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, "peer": true }, - "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "devOptional": 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, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "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, - "optional": true, "peer": true, - "bin": { - "uglifyjs": "bin/uglifyjs" + "dependencies": { + "has-flag": "^1.0.0" }, "engines": { "node": ">=0.8.0" } }, - "node_modules/undici": { - "version": "5.28.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", - "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", + "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, + "peer": true, "dependencies": { - "@fastify/busboy": "^2.0.0" + "isexe": "^2.0.0" }, - "engines": { - "node": ">=14.0" + "bin": { + "which": "bin/which" } }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "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, - "engines": { - "node": ">= 4.0.0" + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.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==", + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", "dev": true, - "engines": { - "node": ">= 0.8" - } + "peer": true }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "hasInstallScript": true, + "peer": true, "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { - "update-browserslist-db": "cli.js" + "semver": "bin/semver.js" }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "engines": { + "node": ">=10" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "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, "peer": true, "dependencies": { - "punycode": "^2.1.0" + "randombytes": "^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, - "peer": true - }, - "node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "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==", "dependencies": { - "inherits": "2.0.3" + "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/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 - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "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==", + "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, - "bin": { - "uuid": "dist/bin/uuid" - } + "peer": true }, - "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==", + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true, "peer": true }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, + "peer": true, "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" } }, - "node_modules/vite": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", - "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", + "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, + "peer": true, "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - }, - "bin": { - "vite": "bin/vite.js" + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vue": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.9.tgz", - "integrity": "sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==", - "dependencies": { - "@vue/compiler-dom": "3.3.9", - "@vue/compiler-sfc": "3.3.9", - "@vue/runtime-dom": "3.3.9", - "@vue/server-renderer": "3.3.9", - "@vue/shared": "3.3.9" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-router": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", - "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", - "dependencies": { - "@vue/devtools-api": "^6.5.0" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/vue-template-compiler": { - "version": "2.7.15", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz", - "integrity": "sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==", - "dev": true, - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.2.0" + "node": "*" } }, - "node_modules/vue-tsc": { - "version": "1.8.24", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.24.tgz", - "integrity": "sha512-eH1CSj231OzVEY5Hi7wS6ubzyOEwgr5jCptR0Ddf2SitGcaXIsPVDvrprm3eolCdyhDt3WS1Eb2F4fGX9BsUUw==", - "dev": true, + "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==", "dependencies": { - "@volar/typescript": "~1.11.1", - "@vue/language-core": "1.8.24", - "semver": "^7.5.4" - }, - "bin": { - "vue-tsc": "bin/vue-tsc.js" + "shebang-regex": "^3.0.0" }, - "peerDependencies": { - "typescript": "*" + "engines": { + "node": ">=8" } }, - "node_modules/vue-tsc/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, + "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==", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/vue-tsc/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, + "peer": true, "dependencies": { - "lru-cache": "^6.0.0" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" }, "bin": { - "semver": "bin/semver.js" + "shjs": "bin/shjs" }, "engines": { - "node": ">=10" - } - }, - "node_modules/vue-tsc/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/vuedraggable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz", - "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", - "dependencies": { - "sortablejs": "1.14.0" - }, - "peerDependencies": { - "vue": "^3.0.1" + "node": ">=4" } }, - "node_modules/web3-utils": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.3.tgz", - "integrity": "sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==", - "dev": true, - "peer": true, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "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" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-utils/node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/web3-utils/node_modules/@scure/bip32": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", - "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", - "dev": true, - "peer": true, - "dependencies": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "node": ">= 0.4" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/web3-utils/node_modules/@scure/bip39": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", - "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", - "dev": true, - "peer": true, - "dependencies": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "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==", + "engines": { + "node": ">=14" }, "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/web3-utils/node_modules/ethereum-cryptography": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", - "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", - "dev": true, - "peer": true, - "dependencies": { - "@noble/curves": "1.3.0", - "@noble/hashes": "1.3.3", - "@scure/bip32": "1.3.3", - "@scure/bip39": "1.2.2" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "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, - "peer": true, - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true, "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, - "peer": true, - "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==", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "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==", + "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, + "peer": true, "dependencies": { "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { + "node_modules/slice-ansi/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==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -10119,11 +10127,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/color-convert": { + "node_modules/slice-ansi/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==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -10131,7403 +10140,1308 @@ "node": ">=7.0.0" } }, - "node_modules/wrap-ansi/node_modules/color-name": { + "node_modules/slice-ansi/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==", - "dev": true - }, - "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 + "dev": true, + "peer": true }, - "node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "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/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "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, + "peer": true, + "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" + "node": ">=10.0.0" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "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, - "engines": { - "node": ">= 14" + "peer": true, + "bin": { + "semver": "bin/semver" } }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/solidity-coverage": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.12.tgz", + "integrity": "sha512-8cOB1PtjnjFRqOgwFiD8DaUsYJtVJ6+YdXQtSZDrLGf8cdhhh8xzTtGzVTGeBf15kTv0v7lYPJlV/az7zLEPJw==", "dev": true, + "peer": true, "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" + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.18.0", + "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" }, - "engines": { - "node": ">=10" + "bin": { + "solidity-coverage": "plugins/bin.js" + }, + "peerDependencies": { + "hardhat": "^2.11.0" } }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", + "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==", "dev": true, - "engines": { - "node": ">=10" - } + "peer": true }, - "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==", + "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, + "peer": true, "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=10" + "node": ">=6 <7 || >=8" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "node_modules/solidity-coverage/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, "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, - "engines": { - "node": ">=10" + "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" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } - } - }, - "dependencies": { - "@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true }, - "@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "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, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "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, - "requires": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "peer": true, + "engines": { + "node": ">= 4.0.0" } }, - "@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "dev": true - }, - "@babel/core": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", - "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", + "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, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.5", - "@babel/parser": "^7.23.5", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "optional": true, + "peer": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" } }, - "@babel/generator": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", - "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", - "dev": true, - "requires": { - "@babel/types": "^7.23.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" } }, - "@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "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, - "requires": { - "@babel/types": "^7.22.5" + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "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, - "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "peer": true, + "engines": { + "node": ">=0.10.0" } }, - "@babel/helper-create-class-features-plugin": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz", - "integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==", + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" + "peer": true, + "dependencies": { + "readable-stream": "^3.0.0" } }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, - "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - } + "peer": true }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", "dev": true, - "requires": { - "@babel/types": "^7.22.5" + "peer": true, + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "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, - "requires": { - "@babel/types": "^7.23.0" + "peer": true, + "engines": { + "node": ">=8" } }, - "@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "requires": { - "@babel/types": "^7.22.15" + "peer": true, + "engines": { + "node": ">= 0.8" } }, - "@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "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, - "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "peer": true, + "dependencies": { + "safe-buffer": "~5.2.0" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "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, - "requires": { - "@babel/types": "^7.22.5" - } + "peer": true }, - "@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true - }, - "@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.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==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" + "node_modules/string-width-cjs": { + "name": "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==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" + "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==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "dev": true - }, - "@babel/helpers": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", - "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", + "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, - "requires": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5" + "peer": true, + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" } }, - "@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "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==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@babel/parser": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", - "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==" - }, - "@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" } }, - "@babel/plugin-transform-typescript": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.5.tgz", - "integrity": "sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.23.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "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, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "@babel/traverse": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", - "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.5", - "@babel/types": "^7.23.5", - "debug": "^4.1.0", - "globals": "^11.1.0" + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "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, - "requires": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "peer": true, + "dependencies": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + }, + "engines": { + "node": ">=8.0.0" } }, - "@chainsafe/as-sha256": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", - "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", - "dev": true - }, - "@chainsafe/persistent-merkle-tree": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", - "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", + "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, - "requires": { - "@chainsafe/as-sha256": "^0.3.1" + "peer": true, + "dependencies": { + "get-port": "^3.1.0" } }, - "@chainsafe/ssz": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", - "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", + "node_modules/table": { + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, - "requires": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.4.2", - "case": "^1.6.3" + "peer": true, + "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" } }, - "@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==", + "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, "peer": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - }, "dependencies": { - "@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, - "peer": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" } }, - "@ctrl/tinycolor": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", - "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==" - }, - "@element-plus/icons-vue": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", - "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", - "requires": {} - }, - "@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "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, - "optional": true + "peer": true, + "engines": { + "node": ">=8" + } }, - "@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "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, - "optional": true + "peer": true, + "engines": { + "node": ">=8" + } }, - "@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "node_modules/table/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, - "optional": true + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } }, - "@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "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, - "optional": true + "peer": true }, - "@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "dev": true, - "optional": true + "node_modules/tailwindcss": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", + "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } }, - "@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "dev": true, - "optional": true + "node_modules/tailwindcss/node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, - "@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "dev": true, - "optional": true - }, - "@ethereumjs/common": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", - "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", - "dev": true, - "requires": { - "@ethereumjs/util": "^8.1.0", - "crc-32": "^1.2.0" - } - }, - "@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 - }, - "@ethereumjs/tx": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", - "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", - "dev": true, - "requires": { - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/util": "^8.1.0", - "ethereum-cryptography": "^2.0.0" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "dev": true - }, - "@scure/bip32": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", - "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", - "dev": true, - "requires": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - } - }, - "@scure/bip39": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", - "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", - "dev": true, - "requires": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - } - }, - "ethereum-cryptography": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", - "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", - "dev": true, - "requires": { - "@noble/curves": "1.3.0", - "@noble/hashes": "1.3.3", - "@scure/bip32": "1.3.3", - "@scure/bip39": "1.2.2" - } - } - } - }, - "@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, - "requires": { - "@ethereumjs/rlp": "^4.0.1", - "ethereum-cryptography": "^2.0.0", - "micro-ftch": "^0.3.1" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "dev": true - }, - "@scure/bip32": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", - "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", - "dev": true, - "requires": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - } - }, - "@scure/bip39": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", - "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", - "dev": true, - "requires": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - } - }, - "ethereum-cryptography": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", - "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", - "dev": true, - "requires": { - "@noble/curves": "1.3.0", - "@noble/hashes": "1.3.3", - "@scure/bip32": "1.3.3", - "@scure/bip39": "1.2.2" - } - } - } - }, - "@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" - } - }, - "@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" - } - }, - "@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "requires": { - "@ethersproject/bytes": "^5.7.0" - } - }, - "@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" - } - }, - "@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "requires": { - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "requires": { - "@ethersproject/bignumber": "^5.7.0" - } - }, - "@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "requires": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" - } - }, - "@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - } - }, - "@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" - } - }, - "@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" - }, - "@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", - "requires": { - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } - }, - "@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "requires": { - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" - } - }, - "@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" - } - }, - "@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - } - }, - "@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" - } - }, - "@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "requires": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@fastify/busboy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", - "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", - "dev": true - }, - "@floating-ui/core": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz", - "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==", - "requires": { - "@floating-ui/utils": "^0.2.0" - } - }, - "@floating-ui/dom": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz", - "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==", - "requires": { - "@floating-ui/core": "^1.5.3", - "@floating-ui/utils": "^0.2.0" - } - }, - "@floating-ui/utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" - }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@metamask/detect-provider": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@metamask/detect-provider/-/detect-provider-2.0.0.tgz", - "integrity": "sha512-sFpN+TX13E9fdBDh9lvQeZdJn4qYoRb/6QF2oZZK/Pn559IhCFacPMU1rMuqyXoFQF3JSJfii2l98B87QDPeCQ==" - }, - "@metamask/eth-sig-util": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", - "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", - "dev": true, - "requires": { - "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^6.2.1", - "ethjs-util": "^0.1.6", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1" - } - }, - "@metamask/rpc-errors": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.1.0.tgz", - "integrity": "sha512-JQElKxai26FpDyRKO/yH732wI+BV90i1u6pOuDOpdADSbppB2g1pPh3AGST1zkZqEE9eIKIUw8UdBQ4rp3VTSg==", - "dev": true, - "requires": { - "@metamask/utils": "^8.1.0", - "fast-safe-stringify": "^2.0.6" - } - }, - "@metamask/utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.3.0.tgz", - "integrity": "sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw==", - "dev": true, - "requires": { - "@ethereumjs/tx": "^4.2.0", - "@noble/hashes": "^1.3.1", - "@scure/base": "^1.1.3", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "pony-cause": "^2.1.10", - "semver": "^7.5.4", - "superstruct": "^1.0.3" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@noble/curves": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", - "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", - "dev": true, - "requires": { - "@noble/hashes": "1.3.3" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "dev": true - } - } - }, - "@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 - }, - "@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 - }, - "@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==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@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==", - "dev": true - }, - "@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==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@nomicfoundation/ethereumjs-block": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz", - "integrity": "sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-trie": "6.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "ethereum-cryptography": "0.1.3", - "ethers": "^5.7.1" - }, - "dependencies": { - "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, - "requires": { - "@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" - } - } - } - }, - "@nomicfoundation/ethereumjs-blockchain": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz", - "integrity": "sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-block": "5.0.2", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-ethash": "3.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-trie": "6.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "abstract-level": "^1.0.3", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "level": "^8.0.0", - "lru-cache": "^5.1.1", - "memory-level": "^1.0.0" - }, - "dependencies": { - "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, - "requires": { - "@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" - } - } - } - }, - "@nomicfoundation/ethereumjs-common": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz", - "integrity": "sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-util": "9.0.2", - "crc-32": "^1.2.0" - } - }, - "@nomicfoundation/ethereumjs-ethash": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz", - "integrity": "sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-block": "5.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "abstract-level": "^1.0.3", - "bigint-crypto-utils": "^3.0.23", - "ethereum-cryptography": "0.1.3" - }, - "dependencies": { - "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, - "requires": { - "@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" - } - } - } - }, - "@nomicfoundation/ethereumjs-evm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz", - "integrity": "sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==", - "dev": true, - "requires": { - "@ethersproject/providers": "^5.7.1", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - }, - "dependencies": { - "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, - "requires": { - "@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" - } - } - } - }, - "@nomicfoundation/ethereumjs-rlp": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz", - "integrity": "sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==", - "dev": true - }, - "@nomicfoundation/ethereumjs-statemanager": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz", - "integrity": "sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "ethers": "^5.7.1", - "js-sdsl": "^4.1.4" - }, - "dependencies": { - "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, - "requires": { - "@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" - } - } - } - }, - "@nomicfoundation/ethereumjs-trie": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz", - "integrity": "sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "@types/readable-stream": "^2.3.13", - "ethereum-cryptography": "0.1.3", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "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, - "requires": { - "@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" - } - } - } - }, - "@nomicfoundation/ethereumjs-tx": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz", - "integrity": "sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==", - "dev": true, - "requires": { - "@chainsafe/ssz": "^0.9.2", - "@ethersproject/providers": "^5.7.2", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "ethereum-cryptography": "0.1.3" - }, - "dependencies": { - "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, - "requires": { - "@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" - } - } - } - }, - "@nomicfoundation/ethereumjs-util": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz", - "integrity": "sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==", - "dev": true, - "requires": { - "@chainsafe/ssz": "^0.10.0", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "ethereum-cryptography": "0.1.3" - }, - "dependencies": { - "@chainsafe/persistent-merkle-tree": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", - "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", - "dev": true, - "requires": { - "@chainsafe/as-sha256": "^0.3.1" - } - }, - "@chainsafe/ssz": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", - "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", - "dev": true, - "requires": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.5.0" - } - }, - "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, - "requires": { - "@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" - } - } - } - }, - "@nomicfoundation/ethereumjs-vm": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz", - "integrity": "sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-block": "5.0.2", - "@nomicfoundation/ethereumjs-blockchain": "7.0.2", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-evm": "2.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-statemanager": "2.0.2", - "@nomicfoundation/ethereumjs-trie": "6.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - }, - "dependencies": { - "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, - "requires": { - "@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" - } - } - } - }, - "@nomicfoundation/hardhat-chai-matchers": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz", - "integrity": "sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==", - "dev": true, - "peer": true, - "requires": { - "@ethersproject/abi": "^5.1.2", - "@types/chai-as-promised": "^7.1.3", - "chai-as-promised": "^7.1.1", - "deep-eql": "^4.0.1", - "ordinal": "^1.0.3" - } - }, - "@nomicfoundation/hardhat-network-helpers": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.10.tgz", - "integrity": "sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ==", - "dev": true, - "peer": true, - "requires": { - "ethereumjs-util": "^7.1.4" - }, - "dependencies": { - "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, - "peer": true, - "requires": { - "@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" - } - }, - "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, - "peer": true, - "requires": { - "@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" - } - } - } - }, - "@nomicfoundation/hardhat-toolbox": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-2.0.2.tgz", - "integrity": "sha512-vnN1AzxbvpSx9pfdRHbUzTRIXpMLPXnUlkW855VaDk6N1pwRaQ2gNzEmFAABk4lWf11E00PKwFd/q27HuwYrYg==", - "dev": true, - "requires": {} - }, - "@nomicfoundation/solidity-analyzer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", - "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", - "dev": true, - "requires": { - "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", - "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" - } - }, - "@nomicfoundation/solidity-analyzer-darwin-arm64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", - "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-darwin-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", - "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-freebsd-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", - "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", - "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", - "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", - "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-x64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", - "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", - "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", - "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", - "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", - "dev": true, - "optional": true - }, - "@nomiclabs/hardhat-ethers": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz", - "integrity": "sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==", - "dev": true, - "peer": true, - "requires": {} - }, - "@nomiclabs/hardhat-etherscan": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.8.tgz", - "integrity": "sha512-v5F6IzQhrsjHh6kQz4uNrym49brK9K5bYCq2zQZ729RYRaifI9hHbtmK+KkIVevfhut7huQFEQ77JLRMAzWYjQ==", - "dev": true, - "peer": true, - "requires": { - "@ethersproject/abi": "^5.1.2", - "@ethersproject/address": "^5.0.2", - "cbor": "^8.1.0", - "chalk": "^2.4.2", - "debug": "^4.1.1", - "fs-extra": "^7.0.1", - "lodash": "^4.17.11", - "semver": "^6.3.0", - "table": "^6.8.0", - "undici": "^5.14.0" - } - }, - "@popperjs/core": { - "version": "npm:@sxzz/popperjs-es@2.11.7", - "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", - "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" - }, - "@rushstack/eslint-patch": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.6.1.tgz", - "integrity": "sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==", - "dev": true - }, - "@scure/base": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", - "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", - "dev": true - }, - "@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, - "requires": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, - "requires": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "@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, - "requires": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - } - }, - "@sentry/hub": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", - "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", - "dev": true, - "requires": { - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - } - }, - "@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, - "requires": { - "@sentry/hub": "5.30.0", - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - } - }, - "@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, - "requires": { - "@sentry/core": "5.30.0", - "@sentry/hub": "5.30.0", - "@sentry/tracing": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - } - }, - "@sentry/tracing": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", - "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", - "dev": true, - "requires": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - } - }, - "@sentry/types": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", - "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", - "dev": true - }, - "@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, - "requires": { - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - } - }, - "@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, - "peer": true, - "requires": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, - "peer": true - }, - "@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, - "peer": true - }, - "@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, - "peer": true - }, - "@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, - "peer": true - }, - "@tsconfig/node18": { - "version": "18.2.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.2.tgz", - "integrity": "sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==", - "dev": true - }, - "@typechain/ethers-v5": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz", - "integrity": "sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==", - "dev": true, - "peer": true, - "requires": { - "lodash": "^4.17.15", - "ts-essentials": "^7.0.1" - } - }, - "@typechain/hardhat": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-6.1.6.tgz", - "integrity": "sha512-BiVnegSs+ZHVymyidtK472syodx1sXYlYJJixZfRstHVGYTi8V1O7QG4nsjyb0PC/LORcq7sfBUcHto1y6UgJA==", - "dev": true, - "peer": true, - "requires": { - "fs-extra": "^9.1.0" - }, - "dependencies": { - "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==", - "dev": true, - "peer": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "peer": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "peer": true - } - } - }, - "@types/bn.js": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", - "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/chai": { - "version": "4.3.11", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", - "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", - "dev": true, - "peer": true - }, - "@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, - "peer": true, - "requires": { - "@types/chai": "*" - } - }, - "@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, - "peer": true, - "requires": { - "@types/node": "*" - } - }, - "@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dev": true, - "requires": { - "@types/ms": "*" - } - }, - "@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, - "peer": true, - "requires": { - "@types/node": "*" - } - }, - "@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, - "peer": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/lodash": { - "version": "4.14.202", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" - }, - "@types/lodash-es": { - "version": "4.17.12", - "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", - "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", - "requires": { - "@types/lodash": "*" - } - }, - "@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true - }, - "@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, - "peer": true - }, - "@types/mocha": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", - "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", - "dev": true, - "peer": true - }, - "@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "dev": true - }, - "@types/node": { - "version": "18.18.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.13.tgz", - "integrity": "sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g==", - "dev": true, - "requires": { - "undici-types": "~5.26.4" - } - }, - "@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true - }, - "@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, - "requires": { - "@types/node": "*" - } - }, - "@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, - "peer": true - }, - "@types/qs": { - "version": "6.9.11", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", - "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", - "dev": true, - "peer": true - }, - "@types/readable-stream": { - "version": "2.3.15", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", - "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", - "dev": true, - "requires": { - "@types/node": "*", - "safe-buffer": "~5.1.1" - } - }, - "@types/secp256k1": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", - "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/web-bluetooth": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", - "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" - }, - "@vitejs/plugin-vue": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.5.0.tgz", - "integrity": "sha512-a2WSpP8X8HTEww/U00bU4mX1QpLINNuz/2KMNpLsdu3BzOpak3AGI1CJYBTXcc4SPhaD0eNRUp7IyQK405L5dQ==", - "dev": true, - "requires": {} - }, - "@vitejs/plugin-vue-jsx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz", - "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==", - "dev": true, - "requires": { - "@babel/core": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3", - "@vue/babel-plugin-jsx": "^1.1.5" - } - }, - "@volar/language-core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz", - "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==", - "dev": true, - "requires": { - "@volar/source-map": "1.11.1" - } - }, - "@volar/source-map": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz", - "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==", - "dev": true, - "requires": { - "muggle-string": "^0.3.1" - } - }, - "@volar/typescript": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.11.1.tgz", - "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==", - "dev": true, - "requires": { - "@volar/language-core": "1.11.1", - "path-browserify": "^1.0.1" - } - }, - "@vue/babel-helper-vue-transform-on": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz", - "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==", - "dev": true - }, - "@vue/babel-plugin-jsx": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz", - "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", - "@vue/babel-helper-vue-transform-on": "^1.1.5", - "camelcase": "^6.3.0", - "html-tags": "^3.3.1", - "svg-tags": "^1.0.0" - } - }, - "@vue/compiler-core": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.9.tgz", - "integrity": "sha512-+/Lf68Vr/nFBA6ol4xOtJrW+BQWv3QWKfRwGSm70jtXwfhZNF4R/eRgyVJYoxFRhdCTk/F6g99BP0ffPgZihfQ==", - "requires": { - "@babel/parser": "^7.23.3", - "@vue/shared": "3.3.9", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" - } - }, - "@vue/compiler-dom": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.9.tgz", - "integrity": "sha512-nfWubTtLXuT4iBeDSZ5J3m218MjOy42Vp2pmKVuBKo2/BLcrFUX8nCSr/bKRFiJ32R8qbdnnnBgRn9AdU5v0Sg==", - "requires": { - "@vue/compiler-core": "3.3.9", - "@vue/shared": "3.3.9" - } - }, - "@vue/compiler-sfc": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.9.tgz", - "integrity": "sha512-wy0CNc8z4ihoDzjASCOCsQuzW0A/HP27+0MDSSICMjVIFzk/rFViezkR3dzH+miS2NDEz8ywMdbjO5ylhOLI2A==", - "requires": { - "@babel/parser": "^7.23.3", - "@vue/compiler-core": "3.3.9", - "@vue/compiler-dom": "3.3.9", - "@vue/compiler-ssr": "3.3.9", - "@vue/reactivity-transform": "3.3.9", - "@vue/shared": "3.3.9", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5", - "postcss": "^8.4.31", - "source-map-js": "^1.0.2" - } - }, - "@vue/compiler-ssr": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.9.tgz", - "integrity": "sha512-NO5oobAw78R0G4SODY5A502MGnDNiDjf6qvhn7zD7TJGc8XDeIEw4fg6JU705jZ/YhuokBKz0A5a/FL/XZU73g==", - "requires": { - "@vue/compiler-dom": "3.3.9", - "@vue/shared": "3.3.9" - } - }, - "@vue/devtools-api": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", - "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" - }, - "@vue/language-core": { - "version": "1.8.24", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.24.tgz", - "integrity": "sha512-2ClHvij0WlsDWryPzXJCSpPc6rusZFNoVtRZGgGGkKCmKuIREDDKmH8j+1tYyxPYyH0qL6pZ6+IHD8KIm5nWAw==", - "dev": true, - "requires": { - "@volar/language-core": "~1.11.1", - "@volar/source-map": "~1.11.1", - "@vue/compiler-dom": "^3.3.0", - "@vue/shared": "^3.3.0", - "computeds": "^0.0.1", - "minimatch": "^9.0.3", - "muggle-string": "^0.3.1", - "path-browserify": "^1.0.1", - "vue-template-compiler": "^2.7.14" - } - }, - "@vue/reactivity": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.9.tgz", - "integrity": "sha512-VmpIqlNp+aYDg2X0xQhJqHx9YguOmz2UxuUJDckBdQCNkipJvfk9yA75woLWElCa0Jtyec3lAAt49GO0izsphw==", - "requires": { - "@vue/shared": "3.3.9" - } - }, - "@vue/reactivity-transform": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.9.tgz", - "integrity": "sha512-HnUFm7Ry6dFa4Lp63DAxTixUp8opMtQr6RxQCpDI1vlh12rkGIeYqMvJtK+IKyEfEOa2I9oCkD1mmsPdaGpdVg==", - "requires": { - "@babel/parser": "^7.23.3", - "@vue/compiler-core": "3.3.9", - "@vue/shared": "3.3.9", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5" - } - }, - "@vue/runtime-core": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.9.tgz", - "integrity": "sha512-xxaG9KvPm3GTRuM4ZyU8Tc+pMVzcu6eeoSRQJ9IE7NmCcClW6z4B3Ij6L4EDl80sxe/arTtQ6YmgiO4UZqRc+w==", - "requires": { - "@vue/reactivity": "3.3.9", - "@vue/shared": "3.3.9" - } - }, - "@vue/runtime-dom": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.9.tgz", - "integrity": "sha512-e7LIfcxYSWbV6BK1wQv9qJyxprC75EvSqF/kQKe6bdZEDNValzeRXEVgiX7AHI6hZ59HA4h7WT5CGvm69vzJTQ==", - "requires": { - "@vue/runtime-core": "3.3.9", - "@vue/shared": "3.3.9", - "csstype": "^3.1.2" - } - }, - "@vue/server-renderer": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.9.tgz", - "integrity": "sha512-w0zT/s5l3Oa3ZjtLW88eO4uV6AQFqU8X5GOgzq7SkQQu6vVr+8tfm+OI2kDBplS/W/XgCBuFXiPw6T5EdwXP0A==", - "requires": { - "@vue/compiler-ssr": "3.3.9", - "@vue/shared": "3.3.9" - } - }, - "@vue/shared": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.9.tgz", - "integrity": "sha512-ZE0VTIR0LmYgeyhurPTpy4KzKsuDyQbMSdM49eKkMnT5X4VfFBLysMzjIZhLEFQYjjOVVfbvUDHckwjDFiO2eA==" - }, - "@vue/tsconfig": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", - "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", - "dev": true - }, - "@vueuse/core": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", - "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", - "requires": { - "@types/web-bluetooth": "^0.0.16", - "@vueuse/metadata": "9.13.0", - "@vueuse/shared": "9.13.0", - "vue-demi": "*" - }, - "dependencies": { - "vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", - "requires": {} - } - } - }, - "@vueuse/metadata": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", - "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==" - }, - "@vueuse/shared": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", - "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", - "requires": { - "vue-demi": "*" - }, - "dependencies": { - "vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", - "requires": {} - } - } - }, - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", - "dev": true, - "peer": true - }, - "abstract-level": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", - "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", - "dev": true, - "requires": { - "buffer": "^6.0.3", - "catering": "^2.1.0", - "is-buffer": "^2.0.5", - "level-supports": "^4.0.0", - "level-transcoder": "^1.0.1", - "module-error": "^1.0.1", - "queue-microtask": "^1.2.3" - } - }, - "acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "peer": true - }, - "acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", - "dev": true, - "peer": true - }, - "address": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", - "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", - "dev": true, - "peer": true - }, - "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 - }, - "aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" - }, - "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, - "requires": { - "debug": "4" - } - }, - "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, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "peer": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "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, - "optional": true, - "peer": true - }, - "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==", - "dev": true - }, - "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, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "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 - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "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, - "requires": { - "color-convert": "^1.9.0" - } - }, - "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, - "peer": true - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "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, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "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, - "peer": true - }, - "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==", - "dev": true, - "peer": true - }, - "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, - "peer": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "peer": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "peer": true - }, - "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, - "peer": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", - "dev": true, - "peer": true - }, - "async-validator": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", - "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "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==", - "dev": true, - "peer": true - }, - "autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", - "dev": true, - "requires": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "axios": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", - "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", - "requires": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" - }, - "bigint-crypto-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", - "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "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 - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "browser-level": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", - "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", - "dev": true, - "requires": { - "abstract-level": "^1.0.2", - "catering": "^2.1.1", - "module-error": "^1.0.2", - "run-parallel-limit": "^1.1.0" - } - }, - "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 - }, - "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, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - } - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dev": true, - "requires": { - "base-x": "^3.0.2" - } - }, - "bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dev": true, - "requires": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "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 - }, - "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 - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dev": true, - "peer": true, - "requires": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001565", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", - "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==", - "dev": true - }, - "case": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", - "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true, - "peer": true - }, - "catering": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", - "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", - "dev": true - }, - "cbor": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", - "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", - "dev": true, - "peer": true, - "requires": { - "nofilter": "^3.1.0" - } - }, - "chai": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", - "dev": true, - "peer": true, - "requires": { - "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.0.8" - } - }, - "chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", - "dev": true, - "peer": true, - "requires": { - "check-error": "^1.0.2" - } - }, - "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, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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, - "peer": true - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "get-func-name": "^2.0.2" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.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" - }, - "dependencies": { - "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, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "classic-level": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.3.0.tgz", - "integrity": "sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==", - "dev": true, - "requires": { - "abstract-level": "^1.0.2", - "catering": "^2.1.0", - "module-error": "^1.0.1", - "napi-macros": "^2.2.2", - "node-gyp-build": "^4.3.0" - } - }, - "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 - }, - "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, - "peer": true, - "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^2.1.1" - }, - "dependencies": { - "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, - "peer": true - }, - "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, - "peer": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "peer": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "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, - "peer": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "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, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "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, - "requires": { - "color-name": "1.1.3" - } - }, - "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 - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "peer": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "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 - }, - "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, - "peer": true, - "requires": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - } - }, - "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, - "peer": true, - "requires": { - "array-back": "^4.0.2", - "chalk": "^2.4.2", - "table-layout": "^1.0.2", - "typical": "^5.2.0" - }, - "dependencies": { - "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, - "peer": true - }, - "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, - "peer": true - } - } - }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true - }, - "computeds": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", - "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "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, - "peer": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "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, - "peer": true, - "requires": { - "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" - } - }, - "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, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "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 - }, - "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, - "peer": true - }, - "crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true - }, - "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, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "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, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "create-require": { - "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, - "peer": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "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, - "peer": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "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 - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "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 - }, - "deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "peer": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "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, - "peer": true - }, - "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, - "peer": true - }, - "define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dev": true, - "peer": true, - "requires": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "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 - }, - "detect-port": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", - "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", - "dev": true, - "peer": true, - "requires": { - "address": "^1.0.1", - "debug": "4" - } - }, - "didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "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, - "requires": { - "heap": ">= 0.2.0" - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "peer": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "dotenv": { - "version": "16.4.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.1.tgz", - "integrity": "sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.596", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.596.tgz", - "integrity": "sha512-zW3zbZ40Icb2BCWjm47nxwcFGYlIgdXkAx85XDO7cyky9J4QQfq8t0W19/TLZqq3JPQXtlv8BPIGmfa9Jb4scg==", - "dev": true - }, - "element-plus": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.4.4.tgz", - "integrity": "sha512-TlKubXJgxwhER0dw+8ULn9hr9kZjraV4R6Q/eidwWUwCKxwXYPBGmMKsZ/85tlxlhMYbcLZd/YZh6G3QkHX4fg==", - "requires": { - "@ctrl/tinycolor": "^3.4.1", - "@element-plus/icons-vue": "^2.3.1", - "@floating-ui/dom": "^1.0.1", - "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", - "@types/lodash": "^4.14.182", - "@types/lodash-es": "^4.17.6", - "@vueuse/core": "^9.1.0", - "async-validator": "^4.2.5", - "dayjs": "^1.11.3", - "escape-html": "^1.0.3", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "lodash-unified": "^1.0.2", - "memoize-one": "^6.0.0", - "normalize-wheel-es": "^1.2.0" - } - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "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" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "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 - }, - "enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - } - }, - "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 - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "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 - }, - "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, - "peer": true, - "requires": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.2.0" - }, - "dependencies": { - "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, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", - "dev": true, - "peer": true - }, - "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 - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "peer": true - }, - "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, - "peer": true, - "requires": { - "@solidity-parser/parser": "^0.14.0", - "axios": "^1.5.1", - "cli-table3": "^0.5.0", - "colors": "1.4.0", - "ethereum-cryptography": "^1.0.3", - "ethers": "^5.7.2", - "fs-readdir-recursive": "^1.1.0", - "lodash": "^4.17.14", - "markdown-table": "^1.1.3", - "mocha": "^10.2.0", - "req-cwd": "^2.0.0", - "sha1": "^1.1.1", - "sync-request": "^6.0.0" - } - }, - "ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", - "dev": true, - "peer": true, - "requires": { - "js-sha3": "^0.8.0" - } - }, - "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, - "requires": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } - }, - "ethereumjs-abi": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", - "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", - "dev": true, - "requires": { - "bn.js": "^4.11.8", - "ethereumjs-util": "^6.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - }, - "dependencies": { - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "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, - "requires": { - "@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" - } - } - } - }, - "ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "requires": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "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/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" - } - }, - "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, - "peer": true, - "requires": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "dependencies": { - "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, - "peer": true - } - } - }, - "ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dev": true, - "requires": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - } - }, - "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, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "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==", - "dev": true, - "peer": true - }, - "fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "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, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "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, - "peer": true - }, - "fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "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, - "peer": true, - "requires": { - "array-back": "^3.0.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==" - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "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 - }, - "fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true - }, - "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, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "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, - "peer": true - }, - "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 - }, - "fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "optional": true - }, - "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 - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "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 - }, - "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==", - "dev": true, - "peer": true - }, - "get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dev": true, - "peer": true, - "requires": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, - "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, - "peer": true - }, - "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, - "peer": true, - "requires": { - "chalk": "^2.4.2", - "node-emoji": "^1.10.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "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, - "requires": { - "is-glob": "^4.0.3" - } - }, - "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, - "peer": true, - "requires": { - "global-prefix": "^3.0.0" - } - }, - "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, - "peer": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "peer": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "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, - "peer": true, - "requires": { - "@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" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "peer": true, - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "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==", - "dev": true - }, - "handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dev": true, - "peer": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "hardhat": { - "version": "2.19.4", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.19.4.tgz", - "integrity": "sha512-fTQJpqSt3Xo9Mn/WrdblNGAfcANM6XC3tAEi6YogB4s02DmTf93A8QsGb8uR0KR8TFcpcS8lgiW4ugAIYpnbrQ==", - "dev": true, - "requires": { - "@ethersproject/abi": "^5.1.2", - "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/ethereumjs-block": "5.0.2", - "@nomicfoundation/ethereumjs-blockchain": "7.0.2", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-evm": "2.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-statemanager": "2.0.2", - "@nomicfoundation/ethereumjs-trie": "6.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "@nomicfoundation/ethereumjs-vm": "7.0.2", - "@nomicfoundation/solidity-analyzer": "^0.1.0", - "@sentry/node": "^5.18.1", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "^5.1.0", - "adm-zip": "^0.4.16", - "aggregate-error": "^3.0.0", - "ansi-escapes": "^4.3.0", - "chalk": "^2.4.2", - "chokidar": "^3.4.0", - "ci-info": "^2.0.0", - "debug": "^4.1.1", - "enquirer": "^2.3.0", - "env-paths": "^2.2.0", - "ethereum-cryptography": "^1.0.3", - "ethereumjs-abi": "^0.6.8", - "find-up": "^2.1.0", - "fp-ts": "1.19.3", - "fs-extra": "^7.0.1", - "glob": "7.2.0", - "immutable": "^4.0.0-rc.12", - "io-ts": "1.10.4", - "keccak": "^3.0.2", - "lodash": "^4.17.11", - "mnemonist": "^0.38.0", - "mocha": "^10.0.0", - "p-map": "^4.0.0", - "raw-body": "^2.4.1", - "resolve": "1.17.0", - "semver": "^6.3.0", - "solc": "0.7.3", - "source-map-support": "^0.5.13", - "stacktrace-parser": "^0.1.10", - "tsort": "0.0.1", - "undici": "^5.14.0", - "uuid": "^8.3.2", - "ws": "^7.4.6" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "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" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "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, - "peer": true, - "requires": { - "array-uniq": "1.0.3", - "eth-gas-reporter": "^0.2.25", - "sha1": "^1.1.1" - } - }, - "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 - }, - "has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dev": true, - "peer": true, - "requires": { - "get-intrinsic": "^1.2.2" - } - }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "peer": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "peer": true - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "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 - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, - "requires": { - "function-bind": "^1.1.2" - } - }, - "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 - }, - "heap": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", - "dev": true, - "peer": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", - "dev": true, - "requires": { - "lru-cache": "^10.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "dev": true - } - } - }, - "html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "dev": true - }, - "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, - "peer": true, - "requires": { - "caseless": "^0.12.0", - "concat-stream": "^1.6.2", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" - } - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "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, - "peer": true, - "requires": { - "@types/node": "^10.0.3" - }, - "dependencies": { - "@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "dev": true, - "peer": true - } - } - }, - "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, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "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, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, - "peer": true - }, - "immutable": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", - "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", - "dev": true - }, - "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 - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "peer": true - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "peer": true - }, - "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, - "requires": { - "fp-ts": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "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, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true - }, - "is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "requires": { - "hasown": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "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 - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "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 - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "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 - }, - "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 - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", - "dev": true - }, - "js-sdsl": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", - "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", - "dev": true - }, - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", - "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", - "dev": true - }, - "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, - "peer": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonschema": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", - "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", - "dev": true, - "peer": true - }, - "keccak": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", - "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", - "dev": true, - "requires": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - } - }, - "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, - "peer": true - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "level": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", - "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", - "dev": true, - "requires": { - "browser-level": "^1.0.1", - "classic-level": "^1.2.0" - } - }, - "level-supports": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", - "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", - "dev": true - }, - "level-transcoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", - "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", - "dev": true, - "requires": { - "buffer": "^6.0.3", - "module-error": "^1.0.1" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "peer": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true - }, - "lines-and-columns": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", - "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", - "dev": true - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "lodash-unified": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", - "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", - "requires": {} - }, - "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, - "peer": true - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "peer": true - }, - "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, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "peer": true, - "requires": { - "get-func-name": "^2.0.1" - } - }, - "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 - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.15" - } - }, - "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, - "peer": true - }, - "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, - "peer": true - }, - "mcl-wasm": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", - "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", - "dev": true - }, - "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, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "memoize-one": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" - }, - "memory-level": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", - "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", - "dev": true, - "requires": { - "abstract-level": "^1.0.0", - "functional-red-black-tree": "^1.0.1", - "module-error": "^1.0.1" - } - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "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 - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "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==", - "requires": { - "mime-db": "1.52.0" - } - }, - "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==" - }, - "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==" - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "peer": true - }, - "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, - "peer": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "mnemonist": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", - "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", - "dev": true, - "requires": { - "obliterator": "^2.0.0" - } - }, - "mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "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 - }, - "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, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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, - "requires": { - "p-locate": "^5.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true - }, - "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, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "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, - "requires": { - "p-limit": "^3.0.2" - } - }, - "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==", - "dev": true - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "module-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", - "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "muggle-string": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", - "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", - "dev": true - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" - }, - "napi-macros": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", - "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", - "dev": true - }, - "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, - "peer": true - }, - "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 - }, - "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, - "peer": true, - "requires": { - "lodash": "^4.17.21" - } - }, - "node-gyp-build": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", - "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", - "dev": true - }, - "node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "nofilter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", - "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", - "dev": true, - "peer": true - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", - "dev": true, - "peer": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", - "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", - "dev": true, - "requires": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "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 - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "normalize-wheel-es": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", - "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" - }, - "npm-run-all2": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.1.tgz", - "integrity": "sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==", - "dev": true, - "requires": { - "ansi-styles": "^6.2.1", - "cross-spawn": "^7.0.3", - "memorystream": "^0.3.1", - "minimatch": "^9.0.0", - "pidtree": "^0.6.0", - "read-pkg": "^8.0.0", - "shell-quote": "^1.7.3" - }, - "dependencies": { - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - } - } - }, - "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, - "peer": true, - "requires": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "dependencies": { - "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, - "peer": true - } - } - }, - "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 - }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true - }, - "object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "peer": true - }, - "obliterator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", - "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", - "dev": true - }, - "oh-vue-icons": { - "version": "1.0.0-rc3", - "resolved": "https://registry.npmjs.org/oh-vue-icons/-/oh-vue-icons-1.0.0-rc3.tgz", - "integrity": "sha512-+k2YC6piK7sEZnwbkQF3UokFPMmgqpiLP6f/H0ovQFLl20QA5V4U8EcI6EclD2Lt5NMQ3k6ilLGo8XyXqdVSvg==", - "requires": { - "vue-demi": "^0.12.5" - }, - "dependencies": { - "vue-demi": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.12.5.tgz", - "integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==", - "requires": {} - } - } - }, - "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, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "peer": true, - "requires": { - "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" - } - }, - "ordinal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", - "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", - "dev": true, - "peer": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "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, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true - }, - "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 - }, - "parse-json": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", - "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.21.4", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^3.0.0", - "lines-and-columns": "^2.0.3", - "type-fest": "^3.8.0" - }, - "dependencies": { - "type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true - } - } - }, - "path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", - "requires": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "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 - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "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 - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "peer": true - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "peer": true - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, - "pinia": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", - "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", - "requires": { - "@vue/devtools-api": "^6.5.0", - "vue-demi": ">=0.14.5" - }, - "dependencies": { - "vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", - "requires": {} - } - } - }, - "pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true - }, - "pony-cause": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.10.tgz", - "integrity": "sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==", - "dev": true - }, - "postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, - "requires": { - "camelcase-css": "^2.0.1" - } - }, - "postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, - "requires": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "dependencies": { - "lilconfig": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", - "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", - "dev": true - } - } - }, - "postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.11" - } - }, - "postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "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 - }, - "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 - }, - "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "peer": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, - "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, - "peer": true - }, - "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, - "peer": true, - "requires": { - "asap": "~2.0.6" - } - }, - "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==" - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "peer": true - }, - "qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dev": true, - "peer": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "requires": { - "pify": "^2.3.0" - } - }, - "read-pkg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", - "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^6.0.0", - "parse-json": "^7.0.0", - "type-fest": "^4.2.0" - } - }, - "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, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "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, - "requires": { - "resolve": "^1.1.6" - } - }, - "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, - "peer": true, - "requires": { - "minimatch": "^3.0.5" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "peer": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "peer": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "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, - "peer": true - }, - "remixicon": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/remixicon/-/remixicon-3.6.0.tgz", - "integrity": "sha512-+IEL/cPimpAhvg7o24Pwyd3v+R0/j0p0WK4MHJUfv/HrsHJ0LElnbMFY8l+Uu/xDBzFIvGB64towtEnAkK9obg==" - }, - "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, - "peer": true, - "requires": { - "req-from": "^2.0.0" - } - }, - "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, - "peer": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "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 - }, - "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 - }, - "resolve": { + "node_modules/tailwindcss/node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "requires": { + "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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, - "peer": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "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, - "requires": { - "bn.js": "^5.2.0" - } - }, - "rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "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==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "run-parallel-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", - "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rustbn.js": { + "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", - "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", - "dev": true - }, - "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 - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "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==", + "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, "peer": true, - "requires": { - "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" - }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "peer": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "peer": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", - "dev": true, - "peer": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", - "dev": true, - "peer": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "peer": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "dependencies": { - "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, - "peer": true - } - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "peer": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "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, - "peer": true - }, - "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, - "peer": true, - "requires": { - "has-flag": "^1.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "peer": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "dev": true, - "requires": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "set-function-length": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", - "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", - "dev": true, - "peer": true, - "requires": { - "define-data-property": "^1.1.1", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.2", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - } - }, - "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 - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "sha1": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", - "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", - "dev": true, - "peer": true, - "requires": { - "charenc": ">= 0.0.1", - "crypt": ">= 0.0.1" - } - }, - "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==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true - }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "peer": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "@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" } }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "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, "peer": true }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/then-request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", "dev": true, "peer": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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==", - "dev": true, - "peer": true - } + "any-promise": "^1.0.0" } }, - "solc": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", - "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", - "dev": true, - "requires": { - "command-exists": "^1.2.8", - "commander": "3.0.2", - "follow-redirects": "^1.12.1", - "fs-extra": "^0.30.0", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "require-from-string": "^2.0.0", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dependencies": { - "commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", - "dev": true - }, - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - } + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" } }, - "solidity-coverage": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.6.tgz", - "integrity": "sha512-vV03mA/0nNMskOdVwNarUcqk0N/aYdelxAbf6RZ5l84FcYHbqDTr2JXyeYMp4bT48qHtAQjnKrygW1FrECyWNw==", + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, "peer": true, - "requires": { - "@ethersproject/abi": "^5.0.9", - "@solidity-parser/parser": "^0.18.0", - "chalk": "^2.4.2", - "death": "^1.1.0", - "detect-port": "^1.3.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.15", - "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" - }, "dependencies": { - "@solidity-parser/parser": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", - "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==", - "dev": true, - "peer": true - }, - "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, - "peer": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "peer": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "peer": true - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "peer": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "peer": true - } + "readable-stream": "3" } }, - "sortablejs": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", - "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" - }, - "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 - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" }, - "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==", + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "peer": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" } }, - "spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "engines": { + "node": ">=4" } }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "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, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "peer": true, + "engines": { + "node": ">=0.6" } }, - "spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", - "dev": true + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "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, - "peer": true + "peer": true, + "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" + } }, - "stacktrace-parser": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", - "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "node_modules/ts-command-line-args/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==", "dev": true, - "requires": { - "type-fest": "^0.7.1" + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-command-line-args/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, "dependencies": { - "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 - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "statuses": { + "node_modules/ts-command-line-args/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - }, - "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==", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, + "peer": true, "dependencies": { - "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 - } + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "string-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", - "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "node_modules/ts-command-line-args/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==", "dev": true, "peer": true }, - "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==", + "node_modules/ts-command-line-args/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==", "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "peer": true, + "engines": { + "node": ">=8" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/ts-command-line-args/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==", "dev": true, - "requires": { - "ansi-regex": "^5.0.1" + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "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==", + "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, - "requires": { - "is-hex-prefixed": "1.0.0" + "peer": true, + "peerDependencies": { + "typescript": ">=3.7.0" } }, - "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==", - "dev": true + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, - "sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" + "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==", + "devOptional": true, + "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" }, - "dependencies": { - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true } } }, - "superstruct": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", - "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==", - "dev": true - }, - "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, - "requires": { - "has-flag": "^3.0.0" + "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==", + "devOptional": true, + "peer": true, + "engines": { + "node": ">=0.3.1" } }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, - "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==", + "node_modules/tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", "dev": true, - "peer": true, - "requires": { - "http-response-object": "^3.0.1", - "sync-rpc": "^1.2.1", - "then-request": "^6.0.0" - } + "peer": true }, - "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==", + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", "dev": true, - "peer": true, - "requires": { - "get-port": "^3.1.0" - } + "peer": true }, - "table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", "dev": true, - "peer": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - } + "peer": true }, - "table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "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, - "peer": true, - "requires": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" - }, "dependencies": { - "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, - "peer": true - }, - "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, - "peer": true - } - } - }, - "tailwindcss": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.5.tgz", - "integrity": "sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==", - "dev": true, - "requires": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.0", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.19.1", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "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==", + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "peer": true, - "requires": { - "@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" - }, - "dependencies": { - "@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", - "dev": true, - "peer": true - }, - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, - "peer": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - } + "engines": { + "node": ">=4" } }, - "thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "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, - "requires": { - "any-promise": "^1.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "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, - "requires": { - "thenify": ">= 3.1.0 < 4" + "peer": true, + "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" } }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/typechain/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "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==", + "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, - "requires": { - "is-number": "^7.0.0" + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" } }, - "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 - }, - "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==", + "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, "peer": true, - "requires": { - "chalk": "^4.1.0", - "command-line-args": "^5.1.1", - "command-line-usage": "^6.1.0", - "string-format": "^2.0.0" - }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "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" } }, - "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==", + "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, "peer": true, - "requires": {} - }, - "ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } }, - "ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "node_modules/typechain/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "peer": true, - "requires": { - "@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" - }, "dependencies": { - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "peer": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "peer": true - } + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsort": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", - "dev": true - }, - "tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true - }, - "tweetnacl-util": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "dev": true - }, - "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==", + "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, "peer": true, - "requires": { - "prelude-ls": "~1.1.2" + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "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, - "peer": true - }, - "type-fest": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.2.tgz", - "integrity": "sha512-mcvrCjixA5166hSrUoJgGb9gBQN4loMYyj9zxuMs/66ibHNEFd5JXMw37YVDx58L4/QID9jIzdTBB4mDwDJ6KQ==", - "dev": true + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } }, - "typechain": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", - "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", + "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, "peer": true, - "requires": { - "@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" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "peer": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "peer": true, - "requires": { - "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" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "peer": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "peer": true - } + "engines": { + "node": ">= 4.0.0" } }, - "typedarray": { + "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, "peer": true }, - "typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "devOptional": true + "node_modules/typescript": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } }, - "typical": { + "node_modules/typical": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", "dev": true, - "peer": true + "peer": true, + "engines": { + "node": ">=8" + } }, - "uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "node_modules/uglify-js": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz", + "integrity": "sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==", "dev": true, "optional": true, - "peer": true + "peer": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } }, - "undici": { - "version": "5.28.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", - "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dev": true, - "requires": { + "peer": true, + "dependencies": { "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" } }, - "undici-types": { + "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "devOptional": true }, - "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 + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } }, - "unpipe": { + "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 - }, - "update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "uri-js": { + "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "peer": true, - "requires": { + "dependencies": { "punycode": "^2.1.0" } }, - "utf8": { + "node_modules/url": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.2" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.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, "peer": true }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - } - } - }, - "util-deprecate": { + "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 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "uuid": { + "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 + "dev": true, + "peer": true, + "bin": { + "uuid": "dist/bin/uuid" + } }, - "v8-compile-cache-lib": { + "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, + "devOptional": true, "peer": true }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" } }, - "vite": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", - "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", - "dev": true, - "requires": { - "esbuild": "^0.18.10", - "fsevents": "~2.3.2", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - } - }, - "vue": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.9.tgz", - "integrity": "sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==", - "requires": { - "@vue/compiler-dom": "3.3.9", - "@vue/compiler-sfc": "3.3.9", - "@vue/runtime-dom": "3.3.9", - "@vue/server-renderer": "3.3.9", - "@vue/shared": "3.3.9" - } - }, - "vue-router": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", - "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", - "requires": { - "@vue/devtools-api": "^6.5.0" - } - }, - "vue-template-compiler": { - "version": "2.7.15", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz", - "integrity": "sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, - "vue-tsc": { - "version": "1.8.24", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.24.tgz", - "integrity": "sha512-eH1CSj231OzVEY5Hi7wS6ubzyOEwgr5jCptR0Ddf2SitGcaXIsPVDvrprm3eolCdyhDt3WS1Eb2F4fGX9BsUUw==", - "dev": true, - "requires": { - "@volar/typescript": "~1.11.1", - "@vue/language-core": "1.8.24", - "semver": "^7.5.4" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } + "node_modules/vite": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", + "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.39", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "less": { + "optional": true }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "vuedraggable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz", - "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", - "requires": { - "sortablejs": "1.14.0" + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } } }, - "web3-utils": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.3.tgz", - "integrity": "sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==", + "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, "peer": true, - "requires": { + "dependencies": { "@ethereumjs/util": "^8.1.0", "bn.js": "^5.2.1", "ethereum-bloom-filters": "^1.0.6", @@ -17537,174 +11451,286 @@ "randombytes": "^2.1.0", "utf8": "3.0.0" }, + "engines": { + "node": ">=8.0.0" + } + }, + "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, + "peer": true, "dependencies": { - "@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "dev": true, - "peer": true - }, - "@scure/bip32": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", - "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", - "dev": true, - "peer": true, - "requires": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - } - }, - "@scure/bip39": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", - "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", - "dev": true, - "peer": true, - "requires": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - } - }, - "ethereum-cryptography": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", - "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", - "dev": true, - "peer": true, - "requires": { - "@noble/curves": "1.3.0", - "@noble/hashes": "1.3.3", - "@scure/bip32": "1.3.3", - "@scure/bip39": "1.2.2" - } - } + "@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, + "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, + "peer": true, + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" } }, - "which": { + "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "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, + "peer": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "word-wrap": { + "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, - "peer": true + "engines": { + "node": ">=0.10.0" + } }, - "wordwrap": { + "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, "peer": true }, - "wordwrapjs": { + "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, "peer": true, - "requires": { + "dependencies": { "reduce-flatten": "^2.0.0", "typical": "^5.2.0" }, - "dependencies": { - "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, - "peer": true - } + "engines": { + "node": ">=8.0.0" } }, - "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true + "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, + "peer": true, + "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, + "peer": true }, - "wrap-ansi": { + "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, - "requires": { + "peer": true, + "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/wrap-ansi-cjs": { + "name": "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==", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "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==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "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==", - "dev": true - } + "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/wrap-ansi-cjs/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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/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==" + }, + "node_modules/wrap-ansi/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "wrappy": { + "node_modules/wrap-ansi/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==", + "dev": true, + "peer": true + }, + "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 }, - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} + "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, + "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 + } + } }, - "y18n": { + "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 + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + } }, - "yallist": { + "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, - "yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", - "dev": true + "node_modules/yaml": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } }, - "yargs": { + "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, - "requires": { + "peer": true, + "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", @@ -17712,38 +11738,85 @@ "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true + "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, + "peer": true, + "engines": { + "node": ">=10" + } }, - "yargs-unparser": { + "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, - "requires": { + "peer": true, + "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", "flat": "^5.0.2", "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" } }, - "yn": { + "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "peer": true + "devOptional": true, + "peer": true, + "engines": { + "node": ">=6" + } }, - "yocto-queue": { + "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 + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zustand": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.4.tgz", + "integrity": "sha512-/BPMyLKJPtFEvVL0E9E9BTUM63MNyhPGlvxk1XjrfWTUlV+BR8jufjsovHzrtR6YNcBEcL7cMHovL1n9xHawEg==", + "dependencies": { + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } } } } diff --git a/battleship-game/package.json b/battleship-game/package.json index 7adec549..662b86ca 100644 --- a/battleship-game/package.json +++ b/battleship-game/package.json @@ -1,45 +1,51 @@ { - "name": "battleship-game", - "version": "0.0.0", + "name": "bs-game-wip", "private": true, + "version": "0.0.0", + "type": "module", "scripts": { "dev": "npx hardhat compile && vite", - "build": "npx hardhat compile && vite build", - "preview": "npx hardhat compile && vite preview", - "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore", - "format": "prettier --write src/", - "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false" + "build": "tsc -b && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" }, "dependencies": { "@metamask/detect-provider": "^2.0.0", - "axios": "^1.6.5", - "element-plus": "^2.4.2", - "ethers": "^5.6.4", - "oh-vue-icons": "^1.0.0-rc3", - "path": "^0.12.7", - "pinia": "^2.1.7", - "remixicon": "^3.6.0", - "vue": "^3.3.4", - "vue-router": "^4.2.5", - "vuedraggable": "^4.1.0" + "@metamask/rpc-errors": "^6.3.1", + "@pixi/events": "^7.4.2", + "@pixi/filter-advanced-bloom": "^5.1.1", + "@pixi/filter-bloom": "^5.1.1", + "@pixi/filter-glow": "^5.2.1", + "@pixi/graphics-extras": "^7.4.2", + "@pixi/react": "^7.1.2", + "autoprefixer": "^10.4.19", + "classnames": "^2.5.1", + "framer-motion": "^11.3.0", + "pixi.js": "^7.1.4", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "recharts": "^2.12.7", + "tailwindcss": "^3.4.4", + "zustand": "^4.5.4" }, "devDependencies": { - "@metamask/rpc-errors": "^6.1.0", - "@nomicfoundation/hardhat-toolbox": "^2.0.2", - "@rushstack/eslint-patch": "^1.3.3", - "@tsconfig/node18": "^18.2.2", - "@types/node": "^18.18.5", - "@vitejs/plugin-vue": "^4.4.0", - "@vitejs/plugin-vue-jsx": "^3.0.2", - "@vue/tsconfig": "^0.4.0", - "autoprefixer": "^10.4.16", - "dotenv": "^16.4.1", - "hardhat": "^2.18.3", - "npm-run-all2": "^6.1.1", - "postcss": "^8.4.31", - "tailwindcss": "^3.3.5", - "typescript": "~5.2.0", - "vite": "^4.4.11", - "vue-tsc": "^1.8.19" + "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "@types/node": "^20.14.9", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@types/ws": "^8.5.11", + "@typescript-eslint/eslint-plugin": "^7.13.1", + "@typescript-eslint/parser": "^7.13.1", + "@vitejs/plugin-react": "^4.3.1", + "dotenv": "^16.4.5", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "postcss": "^8.4.39", + "prettier": "^3.3.2", + "sass": "^1.77.6", + "typescript": "^5.5.3", + "vite": "^5.3.1" } } diff --git a/battleship-game/postcss.config.js b/battleship-game/postcss.config.js index 85f717cc..2e7af2b7 100644 --- a/battleship-game/postcss.config.js +++ b/battleship-game/postcss.config.js @@ -1,6 +1,6 @@ -module.exports = { +export default { plugins: { tailwindcss: {}, - autoprefixer: {} - } + autoprefixer: {}, + }, } diff --git a/battleship-game/public/assets/fonts/DMSans/DMSans-BlackItalic.ttf b/battleship-game/public/assets/fonts/DMSans/DMSans-BlackItalic.ttf deleted file mode 100644 index df12ca10d2cd0e3a4965e13dc65cdb2b92c2a241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61236 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

81u52PW=pAqh6gK|E& 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 diff --git a/battleship-game/public/assets/fonts/DMSans/DMSans-Bold.ttf b/battleship-game/public/assets/fonts/DMSans/DMSans-Bold.ttf deleted file mode 100644 index 809e9788a36e1246ff9fa34b83378c97d5ac3048..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56272 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 ClhSGc diff --git a/battleship-game/public/assets/fonts/DMSans/DMSans-Light.ttf b/battleship-game/public/assets/fonts/DMSans/DMSans-Light.ttf deleted file mode 100644 index 1acb39b2d18108a1a905302194f363293e273ce1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56336 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

uEo8{>pnHZAno7M<9B zf^kAL*5_!fR;(N5^0ZhM*X&tY6TPj8-X^oeJ@n^RdR(Ks$2EI<+)8Lzc&4Y}Y38XG zZ~#Bx4|p0a)j~_P&{BMB4vb`kKihNBwVk*QDeF#pv1q%Q+czVr%}8o9lG==G%vfDo}_8ZncH582{^LKn*T(9LimOXY`D|TBmc3UHMTccOPQ>f{W^CtD6 zwjrQ!E@K_D3P zfVUxFBpUtf_7E-Em7hi0qwD#+^mpbBMzU<1+4h%InUcyp1p631&!NUyl=3L0JW45# zQp%&0@+hS|N-2+0%A=I>D5X3~DQzB}UBV;Xlu&$xU6!ybY0;iicW9|&Zm*6=g^V)I zlo-F3k%m@yO~0n}KhD+(C3P>*omWGw?*GP$hKE?l;aytD;`R9N=luK8TKmyj`_Wqa z(OUb_TKmyj`_Wqa(OUb_TKmyj`_Wqa(OUb_TKmyj`_Wqa(OUb_TKmyj`_Wqa(OUb} z14!Y6)axPeFn9z!M%kVN`@r+y1@I!+4;s1WWpDtz0$v3N!E4}k@Fr*iemob-$cSjf$q5kccmVcctG=Jn%sh}}!imjC8%GtQg zi*Au#D;%(Wy0&(do-6%8bd7j4ZGY}?YVj_;m~Tu1Kj06XAOHk{AP@|CQ0EXZpHXZ9 zI1elY*lFF=qWfO_AoBGPco;kaTFK{c;4AQVZ~~kJU9AR)ei{O#-DM^uT67AUb1FyC zO`cx9oHQ$d^!7nrXh$ja+4ePkr?IMt- zJ|Gb!ffP^wz z&`2Bq*qNcMqx=J$qD^I96yN?e+QybPThn}P>?@Hrd>KY7FndKK;NSjV)CSUzy0m!d z{a@1;PN4tn9?v*rdcED_Z9T`x$Ja34Xn%{k$od28707EAcZmN$d^%fRK}3UDR33S14Y0o%Z};Q#jQ*4<)!JxbckwuPmBE!5B0R;<5mVFr6C z*a|KKmxC+7mEbCHHMju^*25=*|3G4tjgImC@U?;c@+z##lcY?dX-QXUu z3)~Ct1NVam828W6;7I6kB=k6A=W)i)0D-$ZITx%~**5DOMA^^#QGjx%Cail@E1y8~#MFWAGvY9mMjtp6FAtDu!F zy#M_~@3QAbzRRqQ-$}m4rA#cIeKktHP0BY~6klsm>^rdEZ@8J`Er8hoI}j9Kl(FA^ zxP#-J;4W}CxChA2^?Sj6;C|2uUIquiE8tad5U{U~y=CU>tL(y2?0rH;D6x~HgYtb1 zUs_FR9h5sJpTB84rPVZ_(%A?<)$clU;>y3 zszD8y45oogz<)0>{|jChxa(_QHp0`F!2$4}y)GxvuP4y2C(y4a(61-dQQGkn&;mXM z$G~UcIQR?r9Q+l00lwrJt>A3$TbK4Mdd&9dNGsbO9oZ=$D}|m_LXYQP?A<0KM`Fv# z+HQa3q!~GBMHh*zh|S`Wl`oK$Gjo!elB^+!&(9wJJ#x|^BhnXko0*TS3*1D${dh{_ z8M%w+=~2ol^Dyzrgd>ed=n?il3tJlH3463iqe$XZaz&>giDu6NPiQnN4>vK_v$$&J zCvM4qgSq)1d9&b4p8F3?d(TlSa+(HB`h&fvp_P7n5}7~A9e4w1>mTK5rIfAIsa1AN zOFsesdF^Ez(y`6-*)4eAE(Ke`W#Dpf1-KGi1+E6yfNkJfa6M1@pI)0gbFTkCHG12< zR`@F(Z}I!syBY0urDj^)vxX#lNm|X!CW!uWh_Tcjcgso9;TsXJ<{mwdb_thM>L_E# zC!hs<3XXx#z;W;w@HzM^_yV2wpK`Rwu~lTz=$DhU<4M}_B)$A3z5FD-{3N~nB)$A3 zz5FD-{3N}+JAX@eDsjL^YBFW+rW5ysm8nwKk?ZAdo>%-#0lH$VRYV^&n-)Vo>_txIi z_9APowbx5;*3bB)Z}igN?NrX0Uiy2+PB+|eOoAJ|*mn;%_;0Ua9^`1a5)sEI zG;eqPNe8*U)hVu9T{jMo)+N^7VXp6nxxOA|Z9Tp9(P6{fC3Q?P9D=XHA->8hmObsl ze>~nx{)1$9>iV#}+{nm?aHlh%D8`awLP}n4VL^U!LPCKjQuF16g;`k>hxAOZ&dggf z@rj>RPoFjMk%ud*CsaRR?aiK&Q&^SkAFMMc<>b%GA5k@W^u*$E#ly;Jo1FHqtvjt( zStnNI@yW>r`Gti%FDfB9IU(NZj0lg6D*<#Cq>>IGWX$Cs~(CI=Zm;R<%y)+VRT@0s!d8fgLPli9jAUITW;NtryO}hW$ty@=Y z88&Roimle(8TYMOwQELk#pQG6URg=*!taY6QW{#6c3^Lcd1?^!ok)z6UMTJ2J|`B6 z4X36T#6@Ut+xR{+NUw8!dFFFuLG{-76I zdy8G)7rVYKw#%x&H5`p{b9ApMtI5S7y~?J)BQs5Jda0XDXa9^3U3!~Mf4dW1dYesu zgST=z@{ty>>2J#ZWN-e`3vGH6-xlbgOD`0LY}>Krh3u5_c756@e>WZaahtLD$Yx@!ARhP!UKc<89X za9aAz?@SBxG^F$$*(Gl1F&1TjcQ*Z?p5&%WdTBA6{w8lPc(lt*YA0GBnX3)UL-Xf_ zIgnP8&!@v*OlmU<;UJOWj*b^r70XI1K`!mP}^sEWFf%vmLgBN7uvBwB%|znfcU%b_)xyNzbZ3uEAAvPvUz2+R(=TeuN_87T~k`z*_0KWPr-f>&c$Y}3xw*VTZLQkX> zE*UO&g_7iB!+~L>hTowkFQHm*l9x~e_yV$D`*-#;#B%V`53)S%Mw5i=6<^2mUU38{RKg8Q_h7M=R-Ag~n47ww|w7s4FJ@bVWO4FWbN@I^rrZh5m z+kgi9q)Em(_fV}b zUvlTnnRhN(dgqK8cb-3a^VqSQC!5f%TIM~xl5u*Z4ANIuRb4GZwbVd#%X@|sIpxoto%txe(jZ0r(CtLpmN-$?(zT9j8UGeeUhn-h#Qs!{-&a*lIIr%(#hC8|e#@OQ?*%^tuSoh?L!R?2tOUF%+7RqUV&=P5Nw@|qwuW!XpyR5@rPDlugqX62=hvunEvvZeCzd>i- zJLN&wmK$bHshPdq+FLlcc-Z_R*PrzW*UNgrw6d|2kXe(f=@Zl4+JWxqrHgj3>FiFn z>1YQ^;iVrmZ*pmsiOhzBrho6S?1{s3W}A73DUqq!tWGtv=~6SB&faTNvrMdVYT%{6 zFEeO3kx7kx=?B@TYP4|s_trAnBgNFXfC`&I&&*ef;^LhVsB@`xTtt9J%Jl6E>dH&U zrj3l7Hf!M@U2Ule73f91@=%}2%ks15`>#B|VoH2@;nZ2V@5ZH`e$^U*k}P~LueN;b z;v)1un$Zg4iDn*)xfPKR_K!pQi$m7s#l@$$NLft^W8=>^b(VKQ-w--=<4)>k(~t3v zvq?|geCY>`7eUMFx;2I;q0^1UCnLF;A-M;2ryf_ieq2S?jKZR6nHA&KhYZ^^Pe11x zQ#m&+ZEmIB=Ndb2(=eWE@-b~t>u!S&&2w$KXk45A4&U#R^4N6IxHkQ5-fHcji^jF- zZ^+7#H@#?Fo8Ba=jb6HFT$}!utU!9{qH%5dVYgIQFl(m1UixP;wt3Ubtl3WgZl`=i zTiW#Z_^%Bj6ZA_nQ=^4ybza|`z8Ev{u5YV9`+S0{4JEw8T64#0P#`^W=jQU!J`Cx7>2Kb^htQtfdU+Gf)3Q%4F^}JY8+`R9|SyYSV>x zHvMhh+U-a$ytCCL7NjP_O>W$Q`V`r3ta^p%ngdFP#)U;m=!y?1MV z^K<^6$2`}EI>Ggz>tUVb`ZIMxqZ&Jov2cAD_a#uFuz$5o-rw)Vnxp);nqRoK=*wL* zU4N$zCatN%dbeCWZOUZRr4BazZTYgAH@(!sroSO8C|2W9J)7qYu z`XSkQ;HAq<#HPP#R=#Dd*km2{87oqXqW@+@i(K?jo~?Pk^GGvUbEM?T6w_l^eLiw(NnC@38?Fh3-{A}zlvF=t#ter`ckQo+0u*TH!a$%Dd1#pIU8^%;;J z9X+(4@Wd|3yYOU-;or8yUN( zq-t@2c3o&?R}U!}-+Nq0@$3;}R}bnltU4pJD$TkoZ}h-{x%?NSv5q;VX;oRKWhxT# z%I%iP&&tJBAfh#ww5Dr-u1SihmtO5asaORBKzO09&G+w7L& zfBDd%Wsj9Lg70UBduIPBIROa_2cGIVoo88oRq5jkdpk=j`Y#waVaE!UevOUgG@S8pCSGH>q4QFC*1=Sheb5gXltyNqOJ@u(MX!w^V>Z=H-7t3U#N48cIpulPc?0@q z$B&;ct!h6(YKjceub-E9A-(kHy!4l3hl9`=J1LQu{+fFXu=BaYOMlM1=Wfqrl6*Pl z@iodcP5dKgF)VSy>XMQ*6Gqn#s3>*z${(LrFgY`GazWnIjLaz^<(sRkH;pUG)di=s z=MKn@7KV+Smzz6xlrYR)?nkXp@Ga~x^?A{nf|V?K=WDBhayVEc#j{i<%C5skjq0{E zlhNn9f1pHGNlD4+XMea@_R|ZjMn=RT_ROKf=bGtA$%}D_hxbfQIG8i*oCzDs#;mW( zT@>3hDYq=Os$gp2pm7_<=gcg~KPNY5W`6$6-Z}=hOqjHBY)VE_`PebB>9s32kDa=u zq9l7>*{C_$*>gsf&CAx`=bfMDmMDKDDyfr1**&ws-T5NC4q)6@gDX~!ELmMS{(Sn~ zB0bkJw>-TjE2n1Y@Cm)k>3)dTlqnm_#;h1kw;C~N#*oP+1IEos&&x=!9O7vYz9WlV z$PO8iFMDj0_VBkv=h^f|_t<9BMec0+OMGFeBOlR)Hl5wkK6KHAHeJ4a+L2!5(WXBq z-&%0Xhi`fIbt;eONJ)>5TyLiyODRR#?Oa}GKTe1@7tw__{eamQ#E8mR({6LO%M-H%s;cpI1zO+hdeoXXF0(o-yC!|ugs}3S!)IH5ZuYJm6&%sC z81_yXVc46QSuq5CgoU6pk?IiMy~55g16u^cSA=ox)kPPl56?)A+o_|h$>L#%O+EdT z-dj?Fe=#`#2ydZW+WoG8s#Nm@hPR@(#wXk%7GbB7=bYc0l$h&tY-NR{fD4?fw@hzk1%O`gyaV2}e@gtM>8m!i@l&B5gL=Y}9%)ne9~0^csGnKV zA8qR16T;mRsCQbzU7Pw`iBQjc+CKBN7vOkbOM0T6_LUbT-}l>#d~!(EhVZF;p@H4IlFs{k0#A-jzx5$41&q5dpRHgBA(6Hj9>+8e3 z0l4R6I=Uz#CME(F9>G0lO*#Ebx{+gI2PaK#_rS@JGxGA>?{lBn57g}tQs5NtbFHH& zFQ7<^BVKR*wq@4$TK92nsLVob(+&FYmI^(qXkn3SycB|4<$gyl+9lQWnkcuNdyd8z;O;#> z{ixJGYFch`X?CxEbMuSO$*L$TNgb0^F{U`JELne7ot7Dyo{&Y)s&c)hQ>RQGI<>_0 z4-=t_eeLe4Z9LQNsa-v*ved8N++oG%WLH#_W>gN*-_4!hdd zZKeMOG*=VVXL%9uhJ zQnqRGw2ftD8>da)R92EXckH-18JXvf8#^~s>LnvI-DbjLW0j_!6=bha(%nHTBg3Td;7iWSi@t8Am}0!PlIAtjS!GBjso#meZI zm3CWZW=dP?1U(U(Ep0+Jg`YBYV_E5lVz;$6dd3hl2`U>g!qdtbbEK8Ooirn{(#&=e zneF)5vz=KYtH#-FMtzyQh4npSC8Dy_**kxH*7(&WBUeo*tsU@m{uDFUnL=5PSntjq zm=#^YJVy+8*DJbb-kedk?LKmDo;|yg=e=e7`FUR0e|lVnd78|s&U%{T3D=uE&SRLL z^*HG(iB^)QcI9E{e;@gX$|+)b^o;81kNeLrm$|^|3HGG!ly_>9G3AIZvS)Fd$_Hi+ zo_9K(`uR@g+#0HeCmLJL<|f8ks1*@bS?b@rusVBSY)R%I{atNB_JHwWspIlo-?;Ti zjp=WA;gIj=>pj|Kp3z1&^`$97Ekzgc1Z2>r9xN4YELQ0scy5+0eatuP6-itmn0KBD znZ5Z#On))-BH8<)O6C?h$NMLg3`x%EKe%{E{K%Z>p;HPcEefpgE6K|(7*v#+JvC2f zP7g_)m>-=zC^DsATvDGvXLxK*+|aV5NfU--4@roOjS38k9#NQ4ks>9u%Ocw2Ftw5S zz>TKY+jP;cLU-zyOfA!0E-AS;^=ph;b}liU=m*XIdCiXJHfw=(gq|kz<&->Qaf=lz zHuxy2YV1_EE7}<7p-jD~vAx$uKR$hVV1<9#u)N_}#WiDMhNj0%ES)sIB4_dVar3jH z)6=8-=4Dik9y%rXylI7F^3qdt`V1JJJ~(wybmE}w;WNjdK5g|VIj=CiYG_hcY`;O_ zy$AO16;(Yfvr@jjnn+WeYps@b(OQwTFxCW%SaZQ|jk6rP**SDn-0a!GC3oDBnwLLt zbderfvSH&0*L%4M##*xPe+ORR)rE5}Dp$J;jwZsR?bd29{WbRtJ`q{qd0zTK{sXT_ z!$_o|6^n&&(s*mc__3Y!#F&yhou`M-%C4v!%@A2315ilDf-0TkdfyB)I@A@&u*q{x zK1ME&n({o)f18lDvFS1n*z`uXcgm*AIAGIx7uF}ei~}}(uX_dJ%>4It%3sC-JN*ml z2{R7Z>17-cI^)1HyEH}om)-BYsbANH9Zxl0E<2Z($)%(8qQ!0c0rNJM@lhMD1u$y6 z-N1i-Vf+IRRK3W+P_3VG1qyHRI$LkUTel}0r>}ARCOGmOzuH;3IrQ==mxpey+*x@| zDF2zlHC6x0AW*;L8VTpj-G-yB)PTOB$;V3<&e`<+?lo&Wy>QN^?^UOK(n}w+>H8!f zN=J+9S16tMvYDxgjthvQ#RDQAdu-y3H%uhF;f7PE-hcnpsb+Z_CISr^OnR)oS@^td z5B^Us9{5W26Tho+?Kz^u^$V`GddKN>DWyqmN`KNWJ^#VEgD$1F>HFo43U7KTy-nZi z_5hrj&%RFiNXyvi519Aew0JW3@6@K09bW7tJ=k?zFL!;S6N~i~BZ^%YoBfFg5gru&@f$I%{-)}sFY zWo7+MoJ>!mlcS6j4!O@Go$-_PFd z4*E_neXrW>L+{9cpYqNBDsTE%*qLnSQ)HzYjck|ab-s)&+_InB?oIzP`^7t+E3Is& z#|mzDVU>~I@jEjnjh5L$XFf)F{HbTUizB*p8G4N)H={=`80ajGJGapItU8%T1+(Ku z2lN|W7TeJRQ+2l2Lb9!eysUFZC8XFMEsu?qk~q40a7v$%UXx|ioV+$;CfRkTF7!9^ zmX`F}yWEn}&&sEcV);=+mVP}WFIxo8vNpm)t+Nb{;+z>}Lj%iu_1%n30`5qo81VcINcY2V{>+ODy_-n)~wjwyGjvdEw5@JZ8z=RZrEeiw&XrP}C3}lj_{Al~@kg)ah zYv&i%hQe=3q4NXEKuOEAbVxIFW%)sgpMT%`-jmm`%=|S@{3O47-?`_Wd+xdCoO{lF zI_GFhuQsTs9_7DkYw&8fa!rXXZH+|jAB!h8`g|J`@iD(JW)we2Y69T}-a0++3#0ep zBN6YvK&r$sruQ);#QRT(a)nCXvzUQ$ejNEgr^VZ&L_T$Swjt&7HET1Mm+k%vY2<#J z$Tv0R6GX|q^_AVAAP<43V429}|H!u}+@}}{_fIccGtN@qgLofjDlDoGZWHgH5_dG0 z!+&y-v_H#WEfMQKEqQ2uEjdel5d3|tB^Ob8CFat!pYyeUjBLF%1?=fsB0_l%P=xxR z3$*~n`#++4WBdwS%daKoWZ=@O_4@_i%vZpqAN6S4QBmY z&#GK$i^X5-+>na8e6EQu;^cll(C1j6Ksd6Y_ljl#7qrP!SSeCi@bf3;=zU5_;XY2F z5OJsXDJ6ybr$lQ`s84xaxc{W6Z3y>iUxoWW;`b8-59Pbi>1%KfI_zEOJiNXMtp^T6 z#LO7+503bGr`2>mPmNu($w2Jc-;mYST5UC4Fyx8Yh+ysxajUSm-pWii)YR11*VHu7 z-l0wMChxB}PJ4$loO|$zy+54Oe1!QCI8z6I#e#mXTqdgp@8#>BoYmUp_O-1m_IgSx z+RXZ(F5~lNGGvo`kY)Q__QnqGn;izHQ=hb_+S^kp8Y%B3W8_ZkX!17qqBaW7(IqzK zzxn&Hjo}xr*m1>wT~McE$(U;Z(F0EBKqxria% zl?tg$ugG-XI2~2TSzn8;Ej*cujfd^o;ZYOW;*DN;#U9qwW^=ULS|?e@Si5g}%V@7Q z23iEM{+0u_S6DUXWh&j!osW%Q8X+tbLu;B^XPTLIV(DVpY?FV;8whmur(2S_;tpwW zqPb<0vzE2lS}cK`W!}klTh?yLSlP5T-Wv0^w1*L0L? zhcz^oa+1}v2wMbeE09#-C5N$xzF}Zy1|h_CM_F=?Ye*b@lO7vHBrUuSajLKjBN{3N zPLUbq*e#IJMUWznO_*SIXJU1xe5^g#ZMEfmiQ$^o7@6UIY*md!d_xI?HZfY}9}UHG zzV-g#kejuWeTjFqmd2J1LGNhB0!*W5(GRK_B`~$cxN7Pro)7w$RaYw(?CljgOk3CX zWPS5hL#fT7lJuJXWO$SDM8RD_UgdtzTpth4eifPm zrIi|(Yp{353S&-1NN9cwjWV`4!a#d|F9Obq`R~NldU3*-vc;2ut*x2KKy%EVY)sCy z4GwPX&TSkRZ0*grwdQ-v{2OET?$8?fu+Kl_^9}iZ!}2wuZhLH_zqu#X+0oIN>LFv9 za5H|8N5Sy8#TTdwds;9#gP}lR$r>*(;EMI#lNt-j(xo8h2DWHzY=Dhl)DoG=|)J-ZmqZN%c`YdJs#?MQK@f^>A;`#^LVcyi-5-DbezG;5Fpyz;l2%i;kfV1U-L8L$+X7u$INqh7VS#RB*LF*0KCad+;Q-P zh&P@0gTneT(K2KPa%Op>g|8v@gvO9zpMei}2H|DK`Qewz{0hS!jn$~C*B3>k$yg(+ z@i+#*N48idRBWS8r*CjH*Lxal&Bhd15VA&~1>K3mDlIM>0-O5_qCyM@qQkA=T|!60 zZN*_}wN|b(S#=(d*3zWa8cTvjy09tGVbs){pc}CM8g;2wt!Xf8>+5uCWxY)Wr;v3O zv&yD7MZsGl)rD1Jkj1p(-98GlpY=X_;=z>1^PMZnmNv(G?|R#=gwagkz5Wz$aoI}O zd-!PPm80<*jiv^_#n64|H#*TViU)DR%P1Yg5g7C&mK(bI)mQ0g^H7)~j6xemK}N6S ze%x2#33#N7%(zpBvye(ihL2A|eews%R{s7;e%#u~I6e{Ih$|y$16JSRxn(Vm;Dk>@ zwg|V;Ro$x_c#TY>d6FPXCuYeJ zyzvHO4?bNn_QX7oC4Fzxo1_VzKsp`^+AS}uA8rWfbb$s#K&uVBsb#f#`bDn`XerOc z@us8u;3us_8zGrFgeW{S_9B%srOd4SY3U6Ox8J6@u`E`8L;Y>HYi=kbJCBaAspi1Q z(W4{&R4Ooh6cGf}W&azV8)!}uFqnjR)>9FUC8LSP*F1bz%U#?*+}V29{miYi_d;Ai zu+ZNZlgWQiLO>yg7rCli7=9mm1W#%|&7R*V9XNl2mNlSkLMY3?`9vl%=d&o}OO7F` za1-@ojj))ym{C}EF=-p>s$KoX#qLR?TBYh%*{ecsIuCSn$0UaYexLi0=l8)?^uCX* zBL9oD6_t?NKcy}D@Mhx(&eOq6qIrHkMn=}eVq%GuEG~I@zGUt`#x!?^pMCTh^1-$= zeV3MZZV$;w?bIe7;gi^qPN{&apE{cr=YyNW;myI0#8`kGOC0gv_V})uNAK{-Vt0La zeEhq2#o%Nl5-T7iL~9IqJ-%A5(*u17`}ZOLHSgqe;9Ry zS`Fk3-iR({Uk{>&5x*xl_@loX@khv+U*ZR_me%6y7(?F?YcZ$zT9_Z?jO5$G+D#!f zh!B9~;u1XlZIsZb0NE+IirheO!X1?^(`Gyd|1Z6g=+spE_U(V-uUDNEfAEA4PaG;d zvDZl5#!CLW57pbJ+WBkY0krMLxy*0y^&zb(@VO4Flenkd@a6?zr3@QmeHPLrhmRS2PUcf&Vq)i`J%qJ8B!~VegB~e`16Cf=%dEu;oxUiuddGNi zbFw5;q>nlS#iX+Mv1o&pIXs+?dBd}N9Z@xNFOp&zoZpj>{w;Hjqz!LW5UrAe&CGjr zLo|Ah*J}9N2%GauOQ19qlomm(QAALW+Ss8WHDLJLR+AV39 zGWx@TySMLr{N~)yH>RSOjIteJV{Iz8xi_?}*VUFTJII}Jgxx)(_R;Gztydk}w0VD9 zWu>>O>I2XEuq|tCN_1PJ)V8G&6yFD5DQO<)Bv~-GWyo3*j3DKFCLTI2n~xiWx*o#R z$JqrXCCp~-MyJKr8-#U4vPr8i+|)>pb7PrZQEPuxZ8o-NZC&2Pq`%s(H00cBpDMPG z+~m%=9T~GZ>-P9qiy>v^Hk7dwslZUWdbPW(ZYbu+Si&vp77L=}y0x8n(-qFYx{v$; z(hz&=naX+JIwUytFREAd@AUgG>U*nsWE;7I-57~(WY53NoSm&jKV67~RG^=U`7sr< zwfJN$Apw1%^M#ZxI<_w$fJX2BFyHXYxw^Vr6X$9C>GzG+|RqOPu;p?s&;XYG&2`>Z}swr^zMYvU7N z>+k>C#Q4_+uu=u_R=#I2KJ@GjBThPm(_)2}6|2&6+@LB6ius~k#`Dopzkf6u-Qf3c zSetUUje9#RmJYAC(_-n=Y}T92dY`+Zs;a_GLV-<`Ns#Fn*%TO`no8KaJ#ewub6!uk zJ@LA+p~1L*U-{Y!sGtnq6*|T|1>Td|WcI%PlFGs%yS& zj2ewGqj0Tr*y~hI2YFT(Gh1UiUCe5Z!9;B`HQ~RBuDf}h@BeinUXVuC=#Ptnu{`;r=8Dcv(OZJxkorPy?zb^BC#L>;dN;#Z?VW_EN@CE%SDZdVw|g zXIVt{$3NmSTLD;BJn^r10@^X`4^{~ufcR8pNMTl0@qlDw=bL8~`1kOso z0dwEnC(J)HKfp<3#>Jcr4OyXw`A%&$Drezu;=M#Na?|9!qdi}r>APmVefDk3&Yr+< zpS3aZbvU4o>UO5nyPIVBZ(O|N!6|m^ie%z}KoE2^wdBcHA9MKv5Q22q@@`~5O!E4P z8Es;$rSx}UoEBz{5M;yWW=J!cjPY~wGj<+6%%lz<=ITEqPXm6ER>=f;k$lL{0ws17 z?bNR}z0fYtAF$++K9M1F)Y;>4=bf(nzZm)qA9m~VEmtxKhHX*8}) zeTMuC+PvYb_Fk6lwF_6ZvCr7oW9;$O`fXOWwwATp{Ix&rHRMfAz1Rq#67)MvrBn&3 zAhv>X7cWKr6FIM3tLjT8y^ctCpT9HryF(+t8;_|OHY1EC4o z9rTw>8*-M8YI9ZYlB}U4cZ_Q#C(!hxWouS5-zqjeb}jW9?!}H8HC3oDpGt7#ZbJYmsFO*M7DmVV_3K|5*y-~k3Hsc*Z1y&q5PsXi z$i-2z0ZHLV<-Ry_@Zc}=skS_|iu2f+e}zAtV-VV~O!6}ZJ~;F!gdUBcRW&@t!hB;{ z+8OXawkV9$a72Uj%pj4%#4)vX>lG1si#mPT`b2w6GL6*2lZ6p-y<9xSsO1Vz16tgqYO0Z| z#TN6my8=I5u4n!M<#zM*dhIGKxmQEW3>&-C| z_4&jzPv9Trd8L%*`|{iZ@?ygf=l&G(I1}V&+^7HYqxRA#xj)mC&ZqOgJjt@(2;c{2 z_bf{8r1TVh9Pl#q^VWq*k|S@DPxv+@d%+Zx8{bHCbL5#EhJN6mke@*$A^0Xv!S5!e zD~etb!pme=p#UXW$sY0$d7VmISXh|Zg4^a&+u{B8{fGJM9@{PZZToNGuYeGeTm)Fu zN3oW-XaH}qvkWs~-phn`o)w*V!uG00LyF_^`wBiMQeOCmQ3^?plPAcxgq~0=i+M~B zabJbWI1`Wm7|s*g`exMnEnkb`3_lM&cZSy8_kY`7IY{{Wo5|l`-={)&2)*pXO85YF zJmDeUON~yitnd8!(N90MoW;-5@@WKxK;0w{pm_8=tpMDx|4Y6_-pBLU0}&y}&}9CT zPsV0vHlj~VMc@R~{KKTpxT~tSH?xi44LkW3@;H|2d8|csF z0NNyu;#%?=_fd-bkh~TQUO~pW`;Wxq-~b0~=;z7l5;KhpncD|D^B(?v>j;~|{r%L( zJ&ouP-oH)l27cwB8Iq){&fa9IQ5%Ybt8{*Sy~EU`P#dJ761{&;p;k0C*rOVSy1Ge& zPk12y4YB!ha)O@rGL5}R%!`*eIph2HJ0jFJwn$z>bS}%v* z%#gddOHj)sIl|mbPEsuk9!2Uk0zO5eD1qT*PBKbiGstLg6$z>cN<+#D=JEJ|sl{YV zdTchI*5-Aa-CfoCGEdf(7__unElIE4=F>HLTo!kiTwm(V9_eazr3?l(9x(W zV{EaLu2yFnH)E{9XR`=5@y`0Ww_wZJrFYOdDOz%%6#N6CE!S95qfr%YF4l!D$`W~9 zL-FR~hM?`SsMaEFbA;+*^``TuV8+q;L#5|A$QCCZJHL#|6@lnfdSa_fp%>*%!RM<~ zL{FDDZ*T>-T-Vuk-DJ?UAysjj`(0`(V(-}=i|@$UBHNn7<;wBD&i3w~2m~hf_h$ck zTv;BDmG@qqZ@VOKv-e)olE1pQ96l!DWWBpE4#jv|EHJ>f3$}};dZLbz`q|gWJMV{> zgR@tMLJT%L>8MGV|B2d^)8LL0cK-F1`}&z1`?K6XG6%xp*=v{sv)9nNb1#!`qHY;h zVdRscvYybCZVOq%eMGM2o+jno`y}P-Q*FL(;EIN@vY1=QqTE)FGJ`H*$e-V{E*QwCc`yBPwuLWti&NJ z={hoV<5N50&iuB}@E{$$;XVn*!G@LXpPA<|qp5}Ar{_g|nNwyK<&PG$bKb=Yo}>zT z%^`AcmfKFYA`{ZuVRvRN)~rKiQ>(3YwGOq~&OM9*Tf4)NwOZS0L7h#dva9PH)J2Yn zYM;N$V(Iexa+XM~r?JUXTkB~;N*w81S)@|&MRc`BUyAhT3ynq*`Z6e)TC5!lTEcP- zvG_}zs`Ewtl^(Fup7I^)aMYoX4pptQzTPog_g|#M5-NmLo<_4rrSdj4c~tiQI+6G} zB{gE6tj5}ke#;2;5m?A%giJcQpQe#tw24e|$DG77dp|S5y)4YbJk!eTqR;F#(@+H^ z9vX3xhqwXqzNNX(NghgBxpGKOIuAc!USa+>51(y<`KlmhVqyBZSDa)c_n?!wNHj)B zt&{tHi2J^isOU427Qi1DaKglr(e-D9Jk)Ff&=cGsGsX=fT)5ntA`gjjVZIL`oJd$n zl*DKO%4yw|tyv$6@-p~IjJTc!wT1k(vqzWlh?E>5rT)Cy08FO-jDJyxO!wI&F z`;gXyL@eMJGq22^ATB3|R{=V?SD1bh<=%CYju7c^a%bTkU)+mnN>%=3Os1L}Y_jAOTHE9--A+Xsg{El^dhm)qD5%q*#)A_#?dy3i>)nC4>*VvVW1tzaKA9}s2b@>9Y&D;Bg@Yi$ImPu;dAzt*DW7GCN20c zvHLAV$rRQGWUBisl_9fHrVOp{R8F%u8y+z|YP@NMv-A{Md(e3Dgz>-^LPtylYliYJ zTLJy?(?0cIo_=lt_S6C15&QNtPkpTRKJ&$pS+h(@BZ^i)?tb(U<6-U`QQo=$T=WHh z`=t4V;gJ8(a_DI>CJDY zx*9H__;T3FN+9kJnPrtLV0&*eK5BZzaPvx!@G0(32aG398V{1SUkG0Yw3V=*R*tAh z^F`p75q&xA72FasV+sTJm2~Mc-ipZAbBB$OtfaaTBsZKee-ZQ$bYj*h1Iw(Sj7W6> z^aY5%nC4j0FN8N(oM)K}V*ho^E>g40a??$gUEDc*F7!d9(Bs-`uho9j^iAPoNlz}+ z9zVX~#KL$l>(A7Ianpm^>#x^7X!;-YW1%&XPmdln?;w>sEe8);c5;8%K`CdET!t+C zPF_Q&yIgR?1Frl(-usXDjvqUA*?aH3cN{;I`w*EV`H=Yrv@7T{i+9`oi)KcPe?Ke6O)WFe@peW#c&GGGBF+m!0>gAlAj<0xd?U5A+PfJ z=hys@Ff$JUG--baOg6?PAA$utlBQ@XjAG2ey(ep!5*q9|#W)!XrkX_LH@c;53qedZWaXzo=87q~s=Nyuo4jcNPsOMhy=X z#Ue@?n0u&oK(T-ZR)`d$wh4R^&(#?l6zh~ydx_gvXV5AtYo)d#9}}%r)+k+WB|aQ@ zOB~<~kU{2VP#Cm;{WQo7z(S<=gP`fJC{35{2M*WBExDo+7xSw{L`8jMRgdDW2&lh) z$r#is?7c-ro?kWAt1B{9#)>H4D#zihL*9GbKY#8XC>RtyI>RP|!Q}FqqgoAXXkNgmCB^4Y^+w*$z6PR1d2>R#y1?IsPo8RXk}=p7pEW1umehS$ z@)PMjOXtM9SBi6DX&FB!-t~)f;(byfz4kNa#QXDe;v-TfyC3yVf6+C`k@}l(gN?Lv{kDm{^+$`&M12|WJaiVN$Q1mwy+D=7yPbKYC^>uR;Sx~i`3AxP%xDz%zP6gaBz z2`*GHe#vFb9m~0}Rg~(Czfc#R8VSQoX87u!gs+ay`=ye4u{5q?%tW_b8sE2E8dotk zNT%=cyv0k`Dk?v10_&lLD#nWP#};_+Zdz`g=e;V%LG;Yy7v{Zt7Ry)1GTy6XJd!hr zpIWiDE#|$wRKD8cahu9utX1g^3{FJ20PoRWc$mYV&3mt3Siahp@m>`(M5dWrDDP2! SVHE`I5SWir`o9tPN&Y_;-P_dw diff --git a/battleship-game/public/assets/fonts/DMSans/DMSans-Medium.ttf b/battleship-game/public/assets/fonts/DMSans/DMSans-Medium.ttf deleted file mode 100644 index c29713e5455dc13ac51d68c99ea5ceba313a6c08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56380 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 XsMvN0ALaD_OX)LeMIC58uMYe_U$CI1 diff --git a/battleship-game/public/assets/fonts/DMSans/DMSans-Regular.ttf b/battleship-game/public/assets/fonts/DMSans/DMSans-Regular.ttf deleted file mode 100644 index 28ff3c878d4c58bca4517901a4eec71569143ed2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56352 zcmd4430zgx8vni4K5z~oBFNy3OoE~^BVvvy;DAGdLzV+74vC-)4h=S!Wu=u_mSt)4 zty}ljZ7^-bF}2WCOw&NKP>L=Q4OcnucddOm90$6$_kI7L_vL(kYp?z6wby>u^E~TW z6Dhx&CPv!0*EW`qI*h?6Ni;8cM9zragJFi4~3OTqf@xmD+=f&k&8Q@9yDxPt7B`;@lDDDx<%i3Ay|Q#gWKg@_$2LPj;wGRKb1 z6d#G!|1r$6Tk2(>5Fs8>*X3{eNg<-WdbXGbX&`8;u4#%8VZ^+-W|3RvM-V@eyM(*k zD-T1JPf27EB;CNFR_*I1MvxAnb=QwKzv1bT%0AW5kC>u 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≃m+E|5 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 G@c#ml#i4%y diff --git a/battleship-game/public/assets/fonts/DMSans/DMSans-SemiBold.ttf b/battleship-game/public/assets/fonts/DMSans/DMSans-SemiBold.ttf deleted file mode 100644 index 4dde30434e6f642a2891d3a52b838220bfe982cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56340 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 diff --git a/battleship-game/public/assets/fonts/DMSans/stylesheet.css b/battleship-game/public/assets/fonts/DMSans/stylesheet.css deleted file mode 100644 index 7367dcc8..00000000 --- a/battleship-game/public/assets/fonts/DMSans/stylesheet.css +++ /dev/null @@ -1,47 +0,0 @@ -@font-face { - font-family: "DMSans"; - src: url("DMSans-BlackItalic.ttf") format("truetype"); - font-weight: 900; - font-style: italic; - font-display: swap; -} - -@font-face { - font-family: "DMSans"; - src: url("DMSans-Bold.ttf") format("truetype"); - font-weight: bold; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: "DMSans"; - src: url("DMSans-Light.ttf") format("truetype"); - font-weight: 300; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: "DMSans"; - src: url("DMSans-Regular.ttf") format("truetype"); - font-weight: normal; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: "DMSans"; - src: url("DMSans-Medium.ttf") format("truetype"); - font-weight: 500; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: "DMSans"; - src: url("DMSans-SemiBold.ttf") format("truetype"); - font-weight: 600; - font-style: normal; - font-display: swap; -} diff --git a/battleship-game/public/assets/fonts/Quicksand/Quicksand-Bold.ttf b/battleship-game/public/assets/fonts/Quicksand/Quicksand-Bold.ttf deleted file mode 100644 index 07d5127c04b17a9a62121d12aeb00b701e920500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78596 zcmc${31C!3)<0TRx6_?{Upq;svqJ(Q>Fn%TSp_6)f+7I|34{bgSVd$I6_-KB!DSQ` z71wb<9Y+yyM+Z@HLq)~~5D^h~L`6xz-#K^b4xr=rfA9OhbgJ&Tr%s(Zb?Vf9Z(SjU z5Rvd~LJX;`tFL~!>TMxZ7O+Q#j2Yc9?bq<*LJaFKMCD^c8pcM&bk?!dBU^-6bxeqd!ke2KXC}?F6(js=gqJk~5jZB`LEIyKk<~n}bIDbkF9QFJ zF+zmi*4jR!G4#28o4~452>aN1jZ5Zh11Uo?1)jUDabD9+x4d$d5E{}9m^r_FLFbNn zAx{cX@Qo18Ve>nh<~Q4~z7+JKpm%JM-b){{{Ta7Hdc7h7SE2O~?ZP3h5rK5)_h%<6 zgdg_W!Mnj*+La$rcnXcsa+ykx8_S_7LM@)%+{w(8PA>!0Hs(x7O*d4n|0!RG|E3BSQiZ4}$PuUF0H>)m z`1h#$;6I=qfd3D*8U8=jNJ}0s9gqZ6DjHu0}c>Qb&~yADT2i&16Cp&rOR=p2AXvSY(t5yHsAnXUZh>P#4H2v5E-J@ zfCGhFWEpS}AS3TGnDceESSVV=3^7+M5RIZu%oM#vgJ=@-fUQRDX$9s?G-rWkCTJFd z@=W1l5k4ECt>D^mMv9S$JzF%xW=>7dpLcgYzBm)X-;7T@I>mhCps(nI-vZ>P1EKSQ zT>v{@0Js&`c3@{Ce6*++BgHtR-GVST?%I*_PCyNSW&v8vQa1skQ?%kb11YwFp7QNR z&PZ2H;OGW@Ga!mR41C?-Kc8v+Ig{i*4!uA%fn$?wl)76KK|*qFKgqhMYf9577C}DB zQ=^y;pVD58dy>Nq9HmC|M8b{q%U0*AB#;gYX&9zZ;rZ$Yn$JNA}j^ zwDOp3l-@#=r>Va_tW8scz0auYK4(b39`UI5wnFv-ln&WNPeB&vvk|IQWXT<{B;B5U zbzl_7r@UpHfqMqpk5aT2i_yyeRoo^1DP9n7i;u+@;ujf$);?eMlS5>KJYUY0i{&M9 zt^8CCRwLCUwC0bf6WRc6m^NN()Gp92(yq{+)Lzlv)edN1X+PTnY*DsUTW{M8Tf6N- z+vT$IXs=91lC5a_n%t?Kt50((zNE78nue49pHZFR(fA zhQK=mHw7LJJQfrelpfS8s3NE)Xmrq&pxHr-gH{DS8FV7p9^5y$K6q^K)ZjV6i-K1L zuMOT6{88|c;Nv0XA@f3(hFlu*mylaS{t@z2$ZH`VhI|?Fb7(+lTxfP^QRslsVWHzg zn?e_cUK)CR=-r_Yhdveha_IY^pNG|l-57RP*ygZj!d?&iIJ{^0)bPKC{~R$YVsgZ+ zh>nOA5m!ds5OHV3&yfLywqQj$|(K*qc=z-D0qbEeqie40bS@aFj_e4Ju{dDxs=)EyTF#}?T z#hep!S} z$6XtDOWXr-PsHtrdoS)#+;?$Z@nP|)@x9{v#gB-e5Z@R-FMetKrSaFs-;!WUh)i%N zg3es)CH+4Qm;r|pL%cVx2eCn z9Ikv|j2B(cko02vw?Qdzv+``?@J;XiMJ=NXfUg-Xl z`_Jy(?t|{H-6zrqrC*SKQTm$nb?F<@H>W?7zAOEs^smx?&ah>~WMpRa$>^6cB%>i? zM#h4SOEUhNac9P+j3+X-XS|(pAhU1g>db31Z^?Wh^NGwInY*)6vu0&&&f1rCH0#G~ zEjv6rDLX5>PxhtRf62Zh`@!rdvtP=7GyB8r&$EBX3CLNLvpHvL&PzFO=6sNIIOkZ7 zH#a!9ICoI)@Z9ma({ktLF3Me%yEgac+tH%dgBInm;jrdj7op<@s0T-<*Gc{+9d~@^|I$&Hpt2oBUsT*?V2t>-t_B zdu{HW)H|zppWc0Y*Y!TT_qn~BdoS;OQ}6qFKim6_-X9b=3+fA&7i=on-6x?>Tc6wd zd|lYTaAx7tMZrb!MO8(!ita8t=1KRodhYYQS?n%8x45aet$1@?vC5O4gLzRC0gG z){>ni|0y|I^6RO;()iM<()Q9#rB9b0DN87uQ}$HZdu893Pbq)6{H^jI%1>4VRD@N; zRiswrR1B=Bub5h~sA5IMWff~H?y1;R@mR&v6-O(bm93S}RUYme**CGTyKj%ag?%gf z4(>a&@3_9x`nLAHvG4PJclF)dPxQ;}H@e@fejWW*^t-Iz+J5i$pWc7>fP?{e42&AM zdf>i6p@U)v^%^vB(5gZE2d55h9sKd&&#H!0-C6CdzP0-Pn%J6UHJ8@>rRI~`3v2&V zmsU5w?(zEU`X%)ThBOa(V`$#c!9yE|UOn{gp?il#4;wJ-Ps1J_c3^ns@R`H!7@HSBHpwBgH!9~w@M3mBI?ZsfQ{*|bnCLW|atwJfcNR-hGWrP{NuAXkJd!IkPtcV(kh z=;JDP4RAHMrnp*M7q~7&`*4lxudW+ix4C|Hhqxo%ac-yE<<4;DxC`CI?!N9?_k8zK z_Z99t+#B8Zy6<=Y!~KZ+U+%5$r_y86Y%p@NL2j1YWX%yxZJKRSDvc?EnHt$wQI6#s;kwt#I@43)^#1{WP{s*oJ6}5-6?Lj zk&{Z!NvC@ya&njZ9^~Zj?uU_+C*0foaxw)u2|!Mwkdq`UCo_=~%&=7rW>}vhKf>Eb zs;>P6>3?1Q^s6_c>tnCPILPnM`?2>U@4MdDy}P_Sy*s=wc8&83{7vwaj00&DcwmM} za-i(My$9wTXgFZozYD(y4#0{IgdM<2fe`z@WqcF#E0PyUL_DOf&PFrYiqQ%#Et&6tF^V-wc2{^9&MA3 z@%Od+vB5m)})4sB6>`wN%YePoY-K!|1C? zO;%IXcJ-WkL7lIzM;%MWd@&ofs$LAiIJp61b$zV32qU|D#r@&|@rZav{2ODted1Gb zNPMG~t6AzI^@{3LC&dpkN=C~hnU1-AUs)yVI#`#mlcriP(l3xDIpV z%f+2yt$Idm5U-;hc}2V?J`?xJN2Eg>7hN)32FOquA>(AB%#b;(=8l_TU?(kU0o z%jHtJT;3=zQO{znV!M1wJ}aM>AE4#=NW^3Atcf2*f(#L9GDc*|1d$~Zg&QklJ!G=T zlc}Og7KEhkG1mjlF5*-wm=gTx3qP@FAm#b{YAX2^-6QH~cAM0g~v|LSU3hjN47NCAbTN$i5lvjPC4q|oa3w2a|t`4aE>PvM*eX0(N z3>h!-rAzdZX`(0A8f#>!sFo$7SZ0f}B)Mof{T#C(Z4lAJB($?0MtT8QQH z0&x*mu~y23Vwr3gcgdT?M)@~!8`iXLmDh>Qa-(=y-Xpfk&EiSu{b6_7tvVBiIss^UGs`CtO$im zB_e1A2;HJh{Dj`{1lBZv!J6i;ST+1v43K@qAXy~pu+mm4b49uADJo>1sFeAlO!g4x z%dz4-IY#_NUMBu3*N8RpB5|d>SX?DnimTM@V*Ycn`TQ#T&YOI>5E>P`i zKKkJ`>I$`5U8XKqm#PiwPBk4Xcn_(+s|VF)^)IzaJ+2!)NiP_(9b=o-bP>d zBHA)!Qv}P8u=c2G>qm~0n_3$?+n|LNBB*L|om)<>sT${&Wi?~rM~|qQ>=s|0HF~65 z>>M?+)-CQCJNhiQScS!Gx0pI^>F!jCjg76H z(leuRL6ht?W5&Gs(#?M4%+{9KGI(ZN`#foz)zLUZoB*Ox9K$|AtN4oj!|Wem{{!~l zW&aKKce1~o{ioX&&g&3c+B;^piH8=nw9OI^ELc!jBsMNsIDLV*ZNb9%3&c&!nmXFi zPmo>YuurSu64pR|F8igN3c)(ArclvKJ7(F)LrtU*binu8@`6# zDh2&6g*n;Jf=@dESjR={Nsj8cc~5kiz$m8e;jr6>2HX~a=}LgGy@X$X?IUfc^?L}T zk4|ltHVG^Af$AIl4yfIzQ;)!(qt3<8C4WUvT!0q%CG_oM!JSeF1plET9ple0#WS*KQ0;mOqR7=!FA`qjRKZ|g6Jw{y7=z~5LG3b-N7K!RxbzG#Y zpRl8ni(KilO0-70Zft5Ja^QU*= zXs?IjrNdX^63|cx?aXu!k>UrY(^DSkJ!%EBSd0l zl}d+vfu2Ol^XZ;_!7`X}sfJU!k7LyJAjVz(ISb-AWZ5S5C{Xu8+SrdmI*}q+eE|FV zLj4E+mufHkPt^PH5BgE;V~UTN;v=T`kSU-C*xTpeXmWR<#w>?L&Bw@XCPvJY&<>2m z9AGf|Nou_?szXS-xPZrWZaGVKsz|PxsE1T1Wj*}4&@JjJ`$-rRDzS)Q@SO?2h2a*} zN-$%xnI>C&XXRaC*EartRO56DPcf`A3!E?yVtx+TB0*2XQQ7Nls^nckokF*lGLeY2 z>2v-^sVZT|+@>CECLvdn>oDo`YvJHJ9LaTl^r@mJ|sN+OOd!S60fiPVI#8p{b zzd;WJTcBB*K}q)P##+QfVxz#QT3iOJ=)k_jRP1aF$L>gfk_s&Y?fX)_gWbdOL(tka z!Ag`Gs#>u7Ived?E2Qs<^_Kx^2%sLyqxvh@v&vOPs-LO@l!G;mzN!{bw(6rQRSlpl zRiG+VHK0ta-ju55nKqZ+dBN6H{>Cgm&-= z%n<%x_FZzcoUCHxCbn_y;JWWS>A_rM)ll3dX zmUHQ_R%hUricGB-a>1#Op+kp$CHQpb{Y?AL5C1*jACdO|ZTAV%BzH=>+P{ID0-4Bt z4|p@Kzvsq-=8w7~&`}`hJA~_Z-E&Cuf79I~T-s(4d8$L1_g3RX)E{zdM5a2`bs}&7 zo335wuiYkkkV9HkiuCzgj$|1Qx1DLb$!41b+^GLuhcz#kT7fiv%MFM8!@XZZM!J4Z zS8-I7!}Zmjcb7Qo{SxjQxXa+)(H+x(&ig*-B(ASvm4xnJfg}1SP^XXjJ5>prG8|g` z5$w*UtJe$IiPadw4MiVExDVitYB!52aJ=LjF=qfjM`Z(-1zZJSqPqlf z2jkj`_3{~5JAVxDg(&~?fj>|5#u~7P;s2lL@Qh!qHWKYzKe!RXqvhZ_9oGwR9SYg7 zf~0aVuA7BHJ7#orPYyc|`rpr3_m06@c$BD@IikP10QVtSeTKs-MlxKg_y{Z0=V3i& zuE=OjTMaUbm(tRUV zn@#*Rz+VIW3gA}&PqIFOIR6Ij-+<|!+#%e53w*4IVYdmh_ubeFG4a6&4@UTBB1WTj z{zcfu60`+_Ac~wE|mFtTvv)7*!>#8@o8+RA^rmB zq6W`bqHmYfek}0*tUTTmJTAM&`xV-n5VaI`NB#82-lJ-Y_Y2)&{?Zfl2&ev)`cmlJ zqsk#yHSlwxryp>StL4G~hlwQgrvup$T`h1aa1X%EfxA%TXs}Dnaw627pnVH#I{R=9 z6S?Xsgik}9sbY*)h&pmB(wc>*D@8Zw!M(rh;df7Kj3sbIaP&+x(a}BeAlRgJ118#D zaKFF}hckJa@v;n@8P|hd3XeE|d~4Wc2oNRMV=2O}0NW9l|h`G(Fzy; zdDnAV`i-BjQEFM($5K+0Htg@&r2{)D|CT{A7*D5#$}se%(`5v9#UgqCG6s8Zv3TP4 zS{Wy@k%yDmbD1gQWddq#E}mch9D9MuGDW6JmrRpxXuL_L%M6(*cE~K5ja|cB*#rA6 zJ7u2C7q7@(*hMUmeXyfgBt2Ne$`e1yVp$?fWf^v7@?{0@mi9vp?~fg>0oVh4O%B3N z%V2RrR*BbTwXBh~vJUGFy|Gd;6gzCgL?1aEyOJZZFF6Xc)G^ql9E)-*#GYA^94E)i z334K4hv&%2atd}}&%>@Eo*c){&G~W~_URh&)b$KGQ#N6jZnm5)n`H}jaOTLlvQ^H* z&SATpFE5ZCasi&pUMLq~muN9|v6f)>a~akKip7_(f>L=Q_Chbhvlkc3mDn*VldI5D zA4F^Xi@a1`hP~1?@(Ot+_KeEq)$-4H=IyIFmbYM!_*UK}-hgL0?v!`Qjo9_8M0~{VKyTBjHkL1U4pWKfT$uQXS&+-#_P=1Q1I6lKj?XdiuR@1Sr_MYgZ zHFd0xeI*v_>+0A?^jlfSjw7$Fi&3*4M=+VvGt9XZu#!Rfq~zVJaMb#S*NQ zj}=Q*6xKm5#F}s{R%+r^f=U$2Rg!Y5WU)-8;OznzucD-PU)2zIphdh0Yb*Jxmv~q- zh_A5nGahR(1z4jg#M+HV6^jX2Unmuysxt8_)@UlQcGFk&6IY0dSmPO>24Y`+u&Pqk zXp<+26{;5P;7Y9h{0U=*i?Kp9Oby3={YZ6|8l^_7G1w&>i+#dz*#Dm(&JmNbTR2Ib zgXig|h;s$nYOxi26z8d_cs^ko)|$@4n#N~p2A*iZ3cIy}kM$-s56=nEF5?BNLoLA5 z2>O~nJ@2p#&lfDmGYbCe`>U}7N&AqrBYCBGRy-$e6}O37{PzA5(aJb!ZwAj8T&@0$ zrzozmb_Ld9#pDJ&g>Vy|QMg&%f@c$M#ZwHoV^8xA>}uYnHmbYvWb3`^K0M9v0Pk=9 z1G}4>vDZoaoBzam`!TGc9aoQH*Yh##dTyb&7u1tj_t=JKGoHpC5%u{l@pr8H+=W%} zJMld2Ra1gmjV#WXwv zF&KNPuc=+?b?m6Vi8l>i6pxC3iO0m_{4B@Qc$OmoBd@ox&$?T^BksY@Qjl1Kb-$~` zmEvk~iF#L@FAj@U>OJwi+Jm<%_F~0(HP)V=!b<0d>Lc-^`dID5%FzMdS^rcW!uru+ zaVb`pZ@|v_7g+WDT6}{y8Qgf^CLL|}^>}09uXvKAQEbF0`>421tjGHGS6FTQo48xt zgq6-f>_a_)eJXt|^BAvY{;02K;+c?N)k!=7;>8ZX#O}U^{rv#!?K`wUEeJdO-S%q4 zTJeFX5r4+BDtl<(M(o#O#ec+y;(f6f{l~uF+Qq>$1Q}W;o+8M`vje$!O01`rr{!zC z@QhV~)<-MUitJU>JDL_XITp6H6xCJL>DTHq<63B3J;t?!u7yQ4wfcP(-y>d)ac{({ zsxa=WnBG%p@ToGd%&*W>=y6odYn;*1-sY%kpWWWpG&i`aqor+j*N%QYD(<2Ga88zQx|z~+tJ?0p+$9thJ1yb zzrvz=J^iAZQhOa|-(Ke**`TgAv{7T^s>YDM#?VHMt_@FNNpM{^af<4y4Fy!23Mg~b z85z~(GguatIO_C_>vC7u*oUwrAwztb)pO|a1P?hS6;GjU==8=8J*uZFWN7y|MRlGM zHEg(jm{r0kxq9a2DKrH1n0aJDi|T3^kCLf!3^N2CrVD5v*4ffJvnhlOps=K>u(+@& zWO(-k3yX?5Ur46hK9UR1KGILI#jIFRRog})E4tiP6hoq7Ly{7+jH>LTbXKGMSe59C zEh;J1xs-5O6xEd&0#vevLXc`Byh5vMn{6NMr;6GlJ*d_w)>=b=TBCSt4VJY!OOI|u zg&vPlrp2Z?80Jz_7cjcHy~D7;S|b~ECO3ns)=+p|Vc6*Ag)sGwh4We)7qT*-_BzLC ze>*8PVwZASg{WyEqZhO`E@<|v86^hi65Y5xo*MgDU14J_g%uW+8o4Mkq%JjbQDml2 zXK(OhT4rRvtSqGAltT6t8Hy@1Sd|$p$_#v^E=W;Dy=@%K(>~5m43oB8&yc6cP*a(a ziLyHTc>gjgrZOt@pq_BOsWY!-0poqTt}_y@Hw3CPb#E}Os|y={x~_}L9OM0UU0&rF zubXquZH3aiye)Ik{XQ`y3yA{H#Yg1Okrin3}5zxXIL4r z&$JAnsIJHmw9pW!P;ZcmYRc?QoKJg`Kea(sZDhN~5WmI{v&P_7qi5SwSQ^}9rE6%& z$Z55i({e|Xf3X)CEQ?AVP2HMey#?`-;mN%AJkGnPx#=;E?s`J1*>5SP*$s!IgS=13oS^^tz}aldDzzq5 zz;=H{88yXfwGAO^4GX9>Sk@XWb^AhVZ4`U4X)%UH)zk;H`&y7%BP(?#H-oCyu)DgV zu=dki5ZG?JzbTa(u}e8EwAR%j?WeWY2Imsp?meDbJDvr@aL3+ZDGaT(k&7Zj>QW;Y zX6-4hw=eLkdSyoD%gRF*oKo7JB12JS2CFhd$g)aXC$-LX14VBeb+Ltl= z;AN*&`^sW_V*x#Y7t+WC2FyBQIF!4us(Qbh>T>^^BLACW|C>_lhMIN0iEQ-czzRj@ z;3LINt$&DrT2+<)A=TCm^#Xho-e_vf3IjhqEToYYrPlafIX@Jl8NWZq25u{&gkohLU*D70qXnFMvXtU0r6##dB zi=F*BeA8+JVone}F0na}PF2te+gc2UWP2Eh^PmM+t`@j*Lx(FH9j;utaOFycD-RuTW#hz^2S2!0 z>N3-Vp)4~4Br^eq%mnH(>k!GzbR;v==`u5@%glrZ4|-);OU zF{xk1v)RdKMl%Nz213*Z&uW>y5UF9PuFI#lji_OTA4bqX0C zFP;rrLl!1ul#k55plL>X+f2@BQBiSF(}GS6P&%7TOqrum&xo#z>e8?o?XB%?^HBJm zjU7vEGuzu{+v*l}v>V|@6{xDUwYGFL8c3s{t9guo32K>re$xWPH-e4oQ_Z~zMoC8b z>jPbn(GB8S8rU>%e& z{_FGvoAd;m^aOLg#+B;;uH`}8qRwcaH$8|u4}wTGgjE~-Y6|dBxq;K`TCp)5g=_}C zDu|m;zt|;V&F$@T8>hD~Lh)EU^?^sRKC~z-)+d0tR)?Zfo8HvgzSu|X;fh>XtSbpu zy+Sl}Z^A9@_=lD7O>{Rs`G?p0-4qr1-{_J=`RmLt*rPMnGwAUb$D`-g z2=Uj0r_PT-v7Q*0tw*={LXSCzG1^^^J}m-XSHDLeKSRwGv}Z)m-vwhwXPn^oOhmZ; zo(a}r@rU;quyGF>CA7Is9c?0KUSr2x;hHyh-dsV?`(s%WlmUR~$xhmrB7XMV3fpA$ z0oLXFV?ET4r+4W@7otePkDkrMvy(Z?a+XnyoKAL#&8P2})btGTqj)Pz;vJ<>k&Rs| zJ6NBv4#IzcX;x_$0$#=N1==Nm z-_}+^vdLO6!0%vHSBj6Zk}JjKnhpMk3a9#DzhFQ7JF(MCG}pp^N*#g!4Ev8V{VMh^ zz|(TzsdmBNuU>_})u1GvUgp1t{dcfFP29f5KAp(k0`~~qgK+o2Z7|%;xUPd+3%3St z72I;TMR4=s=D^K_n+i7xZY0^91Gg>W}w8PBu}spV0)7ETtRN|-huuyPJ|_BA+M#@NfS^N$*YeJ^^S27Anz zTj3ss+XQzX+?|G7kLwL^W}a39UIDiRt^=+WZWi1$xXEzi;6}j>g(G~mkeOw0g>ZRr zS#UVpDico~XNDpi$!DB^I|la^++nx_a3ARLGu{RK2HZ~EgKx%mI6RYX^32#GWX2-~ zze426;eXl|>pg+b*hg5C-4_o8-06n) z+yxfY!-6s_2sn2N)5Tl3NDB(KAlvCs8tQ|Q210c%X{aAME)BKBfKXQq2sOrl_L&e# zYQ)`Z;?j0o&@KzwVM4yVr9E%r(zaR9V?v}ogaQ$14_MGfK({gOCP3FQbhQP+nhYF; zuCzjR$QQcIqU!|I2G>lq^q1D0X5rGNo1u(5_mohgn_%I_5Tx_y4y6speQnx6_!Sle z8#i#hEQoM9Oy|S7tx&=_IW*S7g8`axue6}mfL6dQadp6Ng`4Ff z+%(2bhOdVbZXDxA!5`|XhTk8q%vA_K&%$L{kn0RkqJ@jLpim34TM(roD2>z;CNA}u z1$|{fhfT<3NtJrQ#HD_K`0rBAQ{S+lohFpF5jwq%LJ3OU&U8P=ZqLAv%UOn2;WqaW|jBg<`B@y0!4vFmHlZF|-`eB8KK$&>Rb*(3uw9RE8#X z3mwb2k-*hkbb}e{YtfaY7Nqt_%}7m2jklmk3kp61Wb?Dm+r65M~agJeyGVU9~B_HWVchJNo>(ED_ z*aP=gvJZN-8}215^jQnqYC(@$&?biNOTIICeew-}ueG2nEok)_pcNKwi3Jgt4(8Ho z;bvLTwB$QoD>!tr1rcr>R?0Lpv#MrX}rsjGNHs@E$FxfePcmKEa;#G zeT0L4_rSfC*d2P6aW8cXeU@=s;Xj(V3I2U>cQUlzf^M*&Yc1$X3tDYKD=cV<1rcYR zA3+_=xz)nWvY=@uM7ak{vP?E{eo~FIaH9YXW!h>B>Tf}17E}l*kLd`?V#sBVK@t-a zqZ31cwT_lSifx(BTo_b{}fTj|Q_9iS(Sd=i|g63GzObeQ7 zL6a;9xP-AB*N5}P7-`YfThL$&>T5wICPcCr{0dB5LJt#4bS11xt>@G-Oo(s^DU6FZ zaX4|(qzkqnpL{lxUwoGZ{bWJknb4W^5`WYTjXz{Tmj2@RTDaW_tKxS-*Nc+&LBo4V z&+$9po+ro|No_3SwgLATLl0Td0~SP~8#(m0Zn&EmhnB{OOLSK=?lM3t8CqsRofgz) zLCqFKF{X2jbGzXtFm6mY+;9u0L$&b(<10YniT^FAmlc|0L2ibe-Qvbtq2UY##;dqr zp!F7Xg9TlS+1*ysY21~ljVMn*t1W1S1)-fZLOU#| z6|}P`MtmTkX#~Z6V?iHT&|4NX*@QU8IF9j>iHm#If;L&udJ7r_Xeh@(D{4UfEvU?b zh^~<7@-X&pi_5~j%YqUu2S?-|AP})tV9mFoj{UQqS;b;b=&zW4$>K5j|!r~iyry{OCQ}>(a zb&~XO%|4u!?tI@!-#2c@y8mjNPbQ_JvwLKoIuCvs-p7;DhByDne};SwtJpF`?PZMa zuLK+n?g*9N!;hpL0$Ht5Xe8|u0E3+aiBsH!6o+YV02ta8_>SRl+8dAwv^M~}?jJ?y zFT6K!lJ*8WN0? z@Vaz8<6&P2Jw~B&63eraWRsUOhewEmT*;wHIt|`2BMy|u9L`;iwwy7P#~hLwKIJiy z^V`L6j*%{L4rEMk=AUEul%q+UBVJ#ZIh?O0$RBZ|-0kPRf&HAvhqW<;;a!3Kyic&7 z_X%D^=>gAi7vViMDIQjr!vB_Ieao8pmSg=y=>ku?3*TyVYR$JSNv3uyQp{w%(Mg+x zr_`5m>hE)jEMsm@QZB?Y=Jr0v4dGbJIM(~DD_AhNIms&2OoG)+##d<90AHa!2!9Ui zvx4;*$*IrLE~ZennF`itFAjB)K4FKX+g_~Csa!gFjE`h|g?16e$~lDQ4x zTu7oeUf+PF6T16oan^~re8yQc(NCB zOXbx0)G?XLq1TZN*pnm6zlt&Ua@?!9^cPVs#3J6wTg0W=%vL&zbRsTh8Sc~8GY!>H zt`T^Xh|OMIWg?j7D}B77fCtBg4~ zm|Gu)8`%aN%%KlcRxn(_@Ou=hozJP<&G@?+U(EJ4OM3;Ji@BW{VBo2p$!41mVfl+W zcX13Caqfy4?#rnc8$Pv5{aHVC+@cO(4Gc0kP=1>@zaEx>&-s$YoMJ8Kx0ZH@Wi9O@ z%f+;FENhvv7T=+;tR7E#s1EWJwOGmnjwIQ%O6!vXVLUr=4BE z)Fwo;B~&t>O1!;E=hu-fRdTF+rq5^H7H}*Z)92er{(O!#)rP%GIhAFmH*kUHxRW@= zNu0+?%x4nIJcap8;<#6FtVvAIEwfz4a3u4IBpC0AQJarZ82KD}kl}+2FSiW@ez|Q5 z{LQTM<*d)UnR5qIb};2|+eoIt&Z=C_mav>pNXA+|K;pVwzayc01EtO>&B>`B{ytNmpV8*PY3vC2=*Sf>6{Q@rzHyir?^^d1s^_3Qzmg-50^zc!-6fO$wn69VV)kgkSw+h z!M5SyR6J}I9vx%DzP-${-41`9Ef2nna-kA5)IRYe*B1}V<6(K4SkL#fZD7_yX>sZU zx$FkA1_pAum#_{mprhI6sdRzfi6dLhYxcXd(X=rQS;l{jc85i-%&yAttK$0D5jw?wP}v{L*@T!?eY zwuy`QOJ0xDm%L;&-d~@F_uKI$FT8cW5SGzQU-H5m;P{dk-r&ZUyySCu3pq~yf_IM7 z58_ZZwm za1X$3gu4yyCOFuZg#F6P;8wz+4P$&Ka@mGcD}p>I-hps-2w zv=TjCRsqfj$r7sW6~Ca$JNwTl1)2vK9?kxv>|enC+w5<{`QmsQNaxA^R`O*C zr+5itu3-Od_Ag*xaBn@Cd~uTf>)HR1{ZHAyll^zte~SGr>_5u>7#i(VA0{bt+_kT|61b<`BjkksIO*Wyzr$KfVoJG&NguWEA0%u83-Sqpz z$x7Cr_YLpo-fz9%c&RM9{dwsO48eHJIdP387^g4^oNdZ~-e5^W#~tg#CzlVhX#6zhpEC;Y9@|e=zc?lzre|I2QhGo0anNZDZpbr- z7+UNuk$0c>J!s_}GcE5Slw|G4WRE~O~<_-nfy=#zW2VY z^D%K0k0{}+7LD`xBX}J5wJym0NowbOX%YvHYuT$GPi}(|pRLOKDbrf~bvin$%KSqO z|Js7P*+6%DFlqd+XQt@Z#-jd0mTs2i&*6Ur(~SH~e>6AxKl&r9B|YK~V-D-DKSn|x z{#hsnG?W01JJ6q?Opc=FuwKd6ZPGuVMq9#mqK9^8cKY3!>d@&_I_6Z4r^O98Jtk`N z5mQ1)Z}d%PpySdqDa~-R6j7c&tx=g}00F zzuEsD()DG=#nmS<+mt%@r%Tp0@*lUhrS3KjWg7WaN=m#&Z7AMDbtsfaGDanr$eWS9>qH% z-{3cZznL&l;(JPB627REBqn37m5lGtq~px6bLqq|oIO>A^T8JKSkAS0&BbShF_Ptc^8mW6j#2B^Pu)1iv8GR0wM) z2zt367}859>m`i!62N*1V7&yeUIJJz0j!q*)=L2N@-fP6AAS+g&Zj83L(q|fb>v_j zMX`<~bQC25F$;~x9E&uiSVwd!eI-sJ>nMjhr^)}{=yD=+u%6Fik-nyqJCeGWTAMw2frY;&;Yj30JhKow$K2!&;Yj30JhKoSZJLH!1-nM zuyiVea4v%gw$@0t)+nPq$XcU~Qh5M28^dK2%ViVCWn<^Ev2)qjxoqrQHg+x>JC}`} z%O;-7CV|T)k;^8K%O;S^CdnupDitS}N($R=2$v0gzoQbT2vXU&xNL&iiqp7+++0HG zTtXRKLLuEsh)N}sOC^g-C7Vknhf76qspN90^x#tI$))1pQpsbx4&w4iMp-PUK2%iV zt8ClxjkYz~3T=rtN-M!hQcE-&&boRP=W5-DlfF9DRBby>GV6g(WaX6Q698UD};MBifGDF6)3&x3m_;wfl@U<-RC0Z+LL+%y# zp*)@uAM=@l^wqRRKL73!oME?H?uEQ`b{n7DW}Mnar=uCCp{eO=2A_jAk54}9#F_5? z=bF(OWjIX?r-jj3VLNEeS;eCdv!VR3n&CZ8t14=CU zS=c6E6|kTAI8kh@nJ^F3JeJGgcz~&}HwdZmmKmiD$s9;~E2NFb>F7z6LluvJ6z>6? zcf3cPgPcg5&?!)>C|5(^E`hrrXMx7!EKbT}GShAa?E&U<6sOW63lyKYA=GJbH1tAu zps*92dJ67oxM$&Zz`cwRXWHflHznvTvTjkdPZqX zMuLnlD~&42l(E3(${c%Kk4*VUW@gu@%yNfKZcw&>u3-W4R)?*t5$lkD%gj7^WoD+j z(0=lMoEfSn1f0Ayz^*0&hOGxfqJ`>ttdF{csM75A%#57UlJc0cvII|jLQH&IEMamr ztvo$Jj@;u&jY@WEKL@7AM5j592V}-Yrv|>azFdaKsI)FyOq?q|C|FI1#bZG+Cm#z7 zNp{D_$RD~^FIYhDn{ry(CH5RxyATd7T+lqt#9wLQqj8Sq6DHo)-@xZ;j5p%x;q%l& z&5W0;ImMgIw|o4-r^OEwYyJ2yIxRdNr>AyU>7O1y7N9m|EsiRn2=Nx-t5(lr9D%j=Kr& z!i$DvRSZrJDElOpY}yrX`%$-PJX;YO*}Gp%aA;6ak^|rFF6~;D1@nHrq`YT&RzhH2 zsEV|cr6(nYg{TJI($@zD1;+=3Fv6^a2g60#gntH<-N|r1K&7IJ^zi1=TUX`G&Dt1IANNzN8$|drd z&T7w0FOSRBOCU27povBKl_sRWcrZGy>&fV(m`sJQmfjSS8Yv5$nVHV6UxI_)BVbQ( zunb_#i_XlXuD$r6olLiPxe`;7V&l}Xh>&z=Qd-a}F?5Oe(3zQ#`E ztmg%%%~BgX0>(5OGCMJLDMGpE){$B6ajCf2aFt07VN^+3aRP~p0}xP3nh(s8tEWvZ zm|Sg38#AIPzkW>i&m`TEN5VoMO)bbzek>^X>4LH>?72;z)MrR;@2LE<`d5!Dh{|-T zYG>x6$bSXpWaZ~}eHHk2a8Xh39<)Q*1AX3Poa@~Svc$*3ZgX>B7U2-arI37iS$smg z-2uTe3KZEql&MOcK`~)H;}T0#%f|Ol%N#haD7h>tu4i~`NRqR>B6aAWn);SDt{&BE zoVq!zA|cuq91@x_XhO+=$^BDL6TR?53p3W4DUnrmVt+=%ALTN=& ze^|w3gucowqZm&a%BKK@Rvwir7Z06(R&M>JjbBrdd^%`Mc3iL8KAVH>YFk<3#X}o! zpQ@L_$;Yea4(c<$DkrEb9-kuhQW^n;+DcmvEJ9!u_zg~7zI*Pb^o4euNVy=!y<8qVQ zX2^;ef!b-||E7+Zc>tdCpbl#g4pxSo;1uO;nE8tavkv}d&4l@{k)yfV9S#aSLcnJM zfii(H55rg6sKQ0P5J;E6ok4oNBNI3Dsbbj%`mkog#V4kWz*E1i8tx<|2Y=YcQTG^I!V?LU~W zfBaZmxD{^355qk0a--y9ZMUBm9*-~O-eQIKI4wLDCn4N{@B%6e?r-({CWwiC`l0?- z$A{qDVxK;#Zs_<>@tmO_8J zjG*sOdyM|zDm>3qK{~RU{DgRONKU;24{k8JDJyrBCh*9;te84kec&UnAGvyFW#!D( zBl}Fsj)-t41x5uXRivTS8#K4dH8de8s-1+`=*)--EtnTvF=N$;5vyiY#Ks0DhbQLP zY$2gl^Qx=bszQTZe~-v;Ix{kzyJMY!De2G$wbNH|9Uj7UCR%J}8`AMqr*wRjc$RJG zRD7g((P;1c;!N_FEcz4~>PJtuuJZ|%F@AWmMI9f9RR^;-r>AeiFwUYG6O<6eQy1#P z$)tRDGCeN+s>JM^q?C*-`Cdv!W-4yFrpTwe@W@D}^W@W{6l%l#;jRxCU^GYbvXe$C zJ?U!>4JdPr5e%En?v~E!sZNPcO^sLW2`MQFCy$<40(m4gJ`Uk=DR22F?+=qGWRc!F ztdLM|G>S_g4QG*?^>Q`0YC1j=HI91L5$Iw3>7Dq#yJ5jtBPGp=#g@j%h<31sQWCQV z_!NTi_Xw1{VETOIzgvtL%oJH4m^#LjS<*a}$KBAreV56vrgC~(Xl_hIYG`b35(cw` zAKWVYQ8KcY^}e_uKRPNYBRVuX0z+82k&s>I4rm^1}YDykc{%duIRxzDJfaOk-Z1RgoZ@MM$kmaoB|EXQ0H+WZKO$0PEvGqL^E9ZHZ2Ahv{;Cm-!(rC%`>a2RFM13~p>+rnr#I)$H z^8)19gswSgJ5o~8u@+N!Uf1@R_>@fbTyAV!bXWT|@~niDgZvv1F7>_&X`*aqvy3U? zd0h3;81)`8LNrn8cC7H|vkpo+SH8w}|D-cB3)L`wAx2s07Uxf+D3_>>wg?^vwh(8m zieaaY@Mx)mSu2D`9VxM}>Kn+x)asD=DOyZZ5bop)b9tOIYo{ME>?fgJ$QscC3Y!`}&eA!_xx4_xv2= zO3cYfNy*H8H7GeeEIH^IryH_ltEVDDyRKBSGdUyq*^ z?sCYBqVO=TJMrWb&di`d`F&(pR-)UTsD?N*LqfWoq4JGHw_XazZQHn17g6cJl0LRd zdmUR6<1uupuS5lA=Xm3=1NRUawf(G80v^mPfEn< z0ISL6>Q#{WqD)UnOK~_{J>u0YKdt!b?Bs#+Aw8mOx?KIW``MaFUb1HBiLKeJOU>Qn zc4Kty%je~$UbI+oCFKV-xB~k!+pycJuV$4|eo7N$g3rpV0_LpoBG!*7S?Nh}DdG06 ziz0P9jz|iYYof`}OU~Yrl9-q-Wq4ZBFqoX|8o_pkAx&s_S9+k_PPZrjIe5re6s6*p z@^y?fW2nwm(b|VK-gGHPNwugPzkk(*L7)4olniJ~yXpHM7oL;7Ys%=z#BoxO#jR#Ik1zE6B#1lw@Go23_9n8lCrkT(we zXq3VF;W;YB%hf`S{80G6IUM=r@wLvE^J~V_$QpHg820$B^mxpnxgCZ`s(j*GG}OuuB6Lhy3pXx5T(ZRZd`BaBN!W$-Ry^HRX2&O-qf7 zj!^dm2c_V8axxZvFZw+RS@)2T+msEkL26SneP!lnI!p<90{TCHA?X zNcmNC)}V2H2DRYJ@;n|ahD>oHgV(xgu!;54avF0QLr#4W6|Ft3a?93|DHRn{O11>k zNG8*HFeWQ8F)LFmqW_S6CAXnPfH|aWikJyYN@y5vU(1#OBp!4FwYf}kerC|;p>y1 zugokhEKX0(4v$I>{aw>d$xKM->5fiFO$ZCiiO&r?D}HEtoHH&uBrHxY`#mG3S@lWv z7nDx{?GgE{B(aVhJl#D#sfWokgc+CtW)K(=7?3C^U|iFpt_ekdy8c{O*~L{+46HfJnsHZ# z(HSHz21J?H|L>`~@4nYP4eR>z^XJ3de)rtEbx)l-byA(GS{QaKuJ+DIC?7UCx_u6l z$!IN1_jzIgoAT3ehFzE%N>@gb^E^RTH zLV=o|MqC0+Sm@BJ6LAVrIg=T?4RdylA2 z&y9M|Ma{RyRA`={{GHF}j`Md8;}k@SxruLCuo6mpi`zy5?$*6Ti_x`~kK%N@W_gNm zi1Kz=S^|FQiu%K?aBk^Sd5X8Ayo#5wg#Uo-o*(J9@*YE&Ky;ZFOX7XT=e}x6hh)k_ zcj|@s@`?E{-j6g#h9I%r=)zxS&sva~D;73~%*uQ^U6I=-GO4kAc6cte5UC7xXJ-eJ zQZ5$FN~NVM=4a1OO+?F~L~lG?4aY|M5>pphefg-A@GB*=CDiVU`4X9s)7d`R-8)|i z>PKCE8)I_ETvz=zl2dHY%$2*l{mxKNz-uy@UGbQl3R`|y0BV`(g%8Qa>~ zb#~cT_4@Vl@J(Bx1!@EPZ?u-TUbPs?<*vz3bYi>Hy`xim2gAX%%kAm&^%NS$Ib=1W z)_kp=StnB@1fhpscpZ9jwzZ%p8;oXe$^D79?Xz@+*qA+yU()(yIGmt=;3>5xLqYlz z#&KCPA`gssfx|gZ;U0bM(Oo6rm^a+crGkK4bbqJ92V3Fr9&b|N!>w?5kN={=FI@o- zt9EQ0^JcB}C+Wm$?rr^9x*9%yf@?wY6G>4tV=iDEE>X#w9t|hwuRrUo8|Jf7C0Cv= zmKQtX(&wOx@7#9t!otnlm{3f2_N*@!*Z0sJwRi(EYOdz;@vFSWPRtfH;pE{6xEE_u z$-@!lX#@+nr{OR1dYW)IPR6Aq{Vr?%%X}ujcwh&?`u5gthk1 zYvluC-d6OJK~doacwn#O{Y!Li%xMv4jdSTGBCY8cWG*#Gp$e-N`6-_k_Wk8nzm@Y| zG%0v5Er*kVuJ%+_UOAQ3KG~HtA7E=TBr$7Y&z6W>DXf~$;@tHOt(89b$<5X`xx$Y% zvKpM*%%T@KocFR9HZSAj{0{7n6B6UfZ=zHd=vaM2@A^!>0SQ9M_^c)6amUTi>ZOt| z@A-M=>mKR;RLJ2xeZSwwd|qkR=rG0-h0~{z3`m(`Zf;F~p65kymjgAMC?$<&%kWQd z&5mp}1ndSBJC*fYYcIa5oF_Q7hmyItARu+FHsJy#?IC5bcE5RYm`t4|-ZaQP|N_qUD9!K&}V* zf5Kd0B&IRvLiu`%$tabSl;i8Op9s{?jrrN9>_vafUte$(9CFh2&FO#jOP|a7eV+QW z=R6jZ!l(bu9f&5w(t5W)oH;$3@*`2tci?wXl93*0g?0EgWHe5{{rXl8)A&H86b~6y#sw z6#O+>40(ZkY~nNlCkhI<8yOEI_XM0MNN}UxwyRm1Y!Fe}uKTp8W%(u41`Qt8-H+Lc zMlD2dQQkpON)1j@PrzlI?n}}|e3hhu_-bHNvvi{tquxJDbVENOgPG5Ai2h=&LF&F5 zQz*I*%_?Q(va|jQJKIdesjm;`o$O{y{rhx>P;JELtNRTJ1p9Nc&&QrLsydd}&nfn_ zO0nN_+y$H{Cg2|3%`I@Ejey&A4+=Om0`Sz}VSOVj$Af0f5TSDxNx!E=~xd(a;CDevuk6evazdkV+GU~82uTTqNRwkozOjkwNVZD zcT~7hdh}fC6<%8Z1{Io@9z9~@?>wcuia*_t)-~QKNY6m8fsaFQv z@6c-gVDsrgKgIlXAK-Z$;=9*3pJL+GBs~UA@cPEP(r?tKCh3&QaiVQa_(@gL5`4Y> zuvXhiOb4Ll>>@tLQe381G~Q~o!h|@akkbN}n^wL32y76_@DxwCG@oAk2(^QaLAy1c z9#fwdQ0LWHcStQ+;`yZlHMsP+_RXi7JuQ7ggFe1f@NWTUxTlb7iP^71tJssvNt*p!o10aAtj&kE z#N(Djh2T+QB z!2vM!lQ$yVDYA-dB1Q=!ahsWEv7#2-rkbfJ12qISnLD>>s`#>OPaxBkcKgD8a}sY#|<-!S55csn`>v;;OWn0Gl*Gu ztD`wfzjJh(lyYUqs@IzKFDK{=ia@?Fmyj=P2d$aVO<@dfgtTc$ zLLPxETR7kgA?6GIicO@>Fg#iHDrzw6#gp1g?;nJXc zSm)4=&YO_r9yucU*Tr@MvhPW&i+2?mha9Y=9mmZlJD0{x_u-Yid+)M6V7^=y|%YOJcdXm(8}X z+g`3Mb(tsS%1l*>haxWb@VVWOQMbHPB(8$14D(B=MHbw^Eur@dxR>o38n_;(0t@J6~ z#f|aOQkura2TMQxrVA?A}#I(i9yrw?GQJXhZUXkRgbmsVym9aL{3SJIG!OOArQ$kBx^B!x^ z?#Y*fEAm}w9AgJpjY^MAt{QjnaGF|?j0FW#S~Sr@LCh641xzXC*?E0q+(}p*b7Q>z zCRv}=On_{)VFH{7z4-D?du~=0HU?g_lk4=_V!`1yS`t3e=_LE%owARkhk}@ABR^Hu ziQFA&c&mN1ijACQ)$wB6$+n>NGkEax7rh zdtIabyIKs(%Y+Lhbd%t3!ky&NFqc!0s%xx@$UYh45=p>M(d-H5_?7UJl&#W$>u0oj zo~Auf8gQpzn%m&uRUo>Ot+EQ#Vi;*R#C~8=^!l zcM0k-Lci#r%aZIElv3jtO)Tqpm+4ad$z*>@+(|q@`$xT}kPg84e?oi}xZwL3-G5rX zk0pTP)be)1Mui)tKa!kSew0eKHE+~(^kx8G3T2AC)XYs7c1n)foee`{VA=-lzBuSeH z=qa9+O1}Q{EzpzqQ`y^4ua(PXDr=IST)vk2hxXsXuG7R9qK=2})}Z>YsL;FwD3^wL z-9G`xHCjs0<^8(*wf5&FYQIr>#!2=4lv9BuxA@8<-vSiW(IG>YD_PQ-4ywSYK@P-1D&}11ae@1ihXJM ze7u$gt0oP4{7y{u$t%ofJq10)$cFGZ1fOqUDt?4I%pZ&STazxF>1ZOEiN-0r0u$io z68jJ8$ohrRgx4KbTJkLP1v%=A1^5M+ej1qebNMP-`PiEX|Hqd{b>HBv+=F%*rQ=}~ zf^4T8FlEq!gPRHko5ZnSGHkQftTl$i!Qs z_7fw-TlgmPaDEZclL!WhELjgmr~_HZDV;VW4QYz8$w;UoQ?`caW1&#v({8tm0hwl5 zB^|6k*!C-5G3@>HzJK+#Bc{d2Az9IqlJ^D!^~YZG3*YJA`2T(TzxzYs6!q_h`u8P# z54fGpdvuTPt;>5gJZSv<4e$`7tbV}@;Q@|BXZfM!OR>vn z^V`p1qF%z@1Ul?)d;)uQBpZ3WT5!b#GYJHt(1SW0W1(Q;$3~km6!bWMY_z|xL3JeW zI^(VjBz?~544N*`OCngx84DjEjiTQJ-HgAm1(X6t2NZK75frtr)-0>oz#KAXlYZlyo>0y>DT&`5#<%c@3#=GjkJqqh!oN0)Y|`OX8m4D2o_P51<=^VXUSW_N%YAx@_`rD zU$=4Nb?e3Tn)Y?2(zX6_pk9KP|j+TC~u_A|}=+l~iyukhA#`EjcDEbb~LtfyP7(IuF zJko3-*eB+OAkhwb{w@A|KWI!Nk?JH% z70(;*Q4C&%KcZ#|a4K_qOq72@2eVHtzh1&@ms%)S?;rPx8-9u_$ z?w6YHHJ?ADyRW6*1|H4lkKlZF?YkO2&F4?(-qw81Z79OG@f_o6zVY^g^o)k}ue2B> zaUMkl1f`#9;V`ls1@!TKS{*zpKu|;l_HjOfwb_UYEbyp6>r)io zW80d&^-~p^mjLD5cuMz$2G{F9y6Wk}xy{rX4z zrFnuu%o8+cOexj?YX%9L+Jw34M*MB&3F^;4_wpst=MXkgTgi2whCk-mp} zJ!@h_5r*Ct8ofx29$w8~7o%4Yqkku%@LWp_ga=C|Fsr<2MTnkTSL{6;qgKC0wH_#1 zltwfjvtIalgYarhwoIib6mL)aeF?uem+)cTm{6YQ&IEHIds<1woStld_6d;#1`Urd z5Z}I6<=a|;{lr?;3_&iLph|O$9rS(@xJ8f z-p-M$w>c|rtKJh!GE*olhrMQtoEfh4%;jCFh^yqW>+Nt?m5>tgn9Xu_sM5QTYo~Sz zT#1q&QYra9PDu{ezgvYDpmPAnXg{vINB14=J)$(d2TJqxkK(OQs?a<^`8zl3PV#pS z6J4}-et%gLgJw-9hd2~{)+|f*?8V%k75I`pEATz8S|maAT5I`dR=^wO$ribpx0AmI z2@{7Ua}7?xnW3y$kr%FdHjp%?0_Hq~Tt-k#?MQV#2_2^f321jAa5MaNu64u?0pRja zgwv_<-L={My{X=)zPz=6;M}pnS-0q0Ytoa*xl_ZrknD1V3i4n_s6FmZAEiNdZrJ5Q z7AX7lz^?IRbyHVnpx`h#2X~E69UM%_qNA-2tlRDw&05SMpFd)9#PY#x#+|6f>NChE zzdnUEn#oXztWC_kvX@A&fv;SEf5_F1*w_UgG7mR^IeUZ}!pMYZg{L_G1O;sAax0b% z_-uB+!>NpA0=?CEMsg&BN`n5~fI!TQ6RZ|iqFGa9u$z4;oIyXUUqm1M3+IhLS-z`6 z@6(T}P|S4cj_WoO9CMbyPb>X0_H`{^e9l0lmgc0bhyq2phfBf%^;ynyCv-m&Qi^|xY*B*42H)B&P2)g7PaR$h zdXkTs0bT=1E>ZSLK9m-_^5%B+pu1>10ypGFaf|Hd9c#D-v-*3LxeBQ89MZFC?n$H_nDu1rw(|q2rQpNjZ ztF(T4E|cx`AF(&9;(_C)x@q@5>+Q zzJRvIv5Lko1+k|W?Eu2_K*a*8Zqz-g2U_(?4vp32kM z6Yz)CY;RGXxLd#?dfe3;Cy6qUKszr&wGiV!=j}2~FOJwA0Owyn?jT zdmOotzuqR8kQ7W|d7$M} zyY8l)Y{{x7j)ihYERPfyi8?4W@FT1e2s)Zvb0RefI!+7Y3pj2`0LAQtkbmR|TA?MsV0@{ms%uA5r?ax;iNa3ktYu@Mj1P`+=esH2ZGT&GM{2 z%s#_ng%7Q0nIZ73vCM|RCayI3C5h9Ii~Leb@X?EjEiMkg4`2t>G>nMHSc+ZGNND<_nxQ0#3X`aOhwy zN|dJzR}RffkG6{p*NX=J#HToZxoDa{*ig`V6^y(_SwtQ9JY$Q;aCl3ue~WUl#6 zvjwg1Qr1fAyN}?kw?=NO$XZdK?i5kEuojgQSu5((Z6a%>%42d#&O>Cc&{M?Zd>XD? zW(w%Tw9gP)(8x|9C`HvkK3`#(sYW6N4xdQrlui)>3 zRObABU?qQR8Lb$p4QbfeSd`fPf8zIsns3qa4c7meNOSGz?o7IBQ}NoisyYxNv$=Xbzd6;2i|sDFXQg-D6sxkkk|JJO;kS4*$zN5++5U+afrj zU;$c2Xc#RHhZwgIAy756)TBU;NV5#7cvTI7%B1W`+mo1NPmUd)o<2M#uGdU-cTdp2 z>zu(h@7CA9bMtHV&0bgw$)U8{HJIt&)>YVf_3%EkY?ZO^soBi7j-Aurf6mw#ZKg5Z zJu=eWH8S!In`g1@{B6SrM$!W@egq$^@rJ_yu8}kyJ1(Fw? zPixShY0y*iYe7$L)S&uat?bhu(V(=Bg4av_^;>WvS>t=}(@H;H;82(jhxiQP5RDD& zjDIg58_3l$Bs6$Iz%gGkuRp@a&~g3cqTKRmoAiR^5aFhBG|yrf6z>_%((13C@t%pD zNA+`TNA;Upp3f6rkdVjOXGDF{t)f2Z-HrOBBWILH>#01|hk<#G_8i~g^BOJmr90nNp^eZ zQfFm-d187j;tB=bzxB$BCshg!mo``1OFiAG!Vvk<410BAT`6((i*hvEQd-|pT_}|n zsvYY~=VcP{bUL2MNV)2Kd;5H~W1(DL=tz~zsYH7_Yy>~rO6M%YI~VZ>zU!(m4M=Nd z(v657_9PcKuL(rju)HW5V4tL`yDb_3`vQG?q?}mD2d46yN_J*{(bx2f60-%_g&L}$MJUoq#l2dx;@ zp3wMoV&;N@soL$f%XlCo6!JY<+@9ze^Ckmsb4vCkJ)wM{|G;$Z_K`PQ2n)zS_PF$K zw9@_93eiN7J7LFRAB3hsM=qYJz=c*rtiiYjhaR;A9G=cZqLxkc#^hMUtAuQ}k4OH% zO}(B(!fE|P#8z;O?CPApW+}H2mR+gW8!ZlhVyKw!37aiR*(p2jQ-uBJ2wCq>x0%Nd z3@*N8*z2;#910vKMkj6|9?W;lJOIt*QB12=NeQQu(o9~3{VcxN#?I%&+7KwX*r++| z#%2-dj~}%?#REO*knCl*+8k=9Fx@0{xdGIGguonzXxNH%|0-4Tyu)GN5)-GeD_%3M z_TRbf5r+%yN9LiwYc8J|N+mk-zEsjIB@EaHKgAKM+aeBQu`e`pWNh|2t0LPnZcp52 zb!Wy)`GL4U5G%TW8;B4wEZ@vqy$&da4M)c?QhR`*5$o&tek$tTo_g*vQqMT`0u>S3 zJA>(C1G~mjuKeubjdq)oiv`m&L+#jftbL?d*ff!!I6Rf?jmLYF{A#UkKEE%$|H#3m zfIgU%QzmO+aK4>+3bE|Oj;_fgt7$2kEDsonrF92`N86hz;L?j zWT+CwlKonHsdk`C-6MUPU7&adCeuUb4dMTenGRRfnj0<*?i(1`H&`A{zbaA+g-VfP ze}8?)NC^qCk&aktgk+HDov&jxAIvYY(=@uIF^({2*J5j(k<}Sl)jJ)#Cc!1xcxU>+ zz{HVB^h&fh&HG0BdUf-G{`C2mUUXJKA4(`mlXL2v8gmz8Lx<-kj!ayZs-<(axagpU z{R7zujT_*)>Ht<*Q?3yr#Ox4uW8!ijy{1_)U?y5!p!q{z>R7Cl7Q4FFw^!D8#8XMg z{gkzD_dsoTU*GQ9!0x_1qt)st{Ue!zZ#>P8Hl$=fq@*ALMhz)449^FAVN<)wW0vL6 zexFs2hQj{Gg3&f($`x|f%u%KO-~KRaLZ${zg2A2uLf*pn(xhXf&Za1WT%y`BBKP~l zR?CJ+!SAsvW|P}2E2Ys$$52?#24;*e^(u-t?8DyW>%x5@Ka!x#Z6UXkmve)0rCRb2 zTNRH7Ow4qnpw0;P?rKN_p@)U}CMdI7K=SXekdObI=yJ-6w+)7Fz$51pK~K=X#h>m)Y00WKg^wIqa9Mo9&W5*&8bj z#|S%68D|XNKpwIx3v0bS0l%tYxquS1W>#Ogbi3he?d?y=i8kX0ZDBJfI5T_RrWA`& z+3Yoa!D#}~Pk`vCxoi1ZHqS1n7z&qyXSSQVlYc=aI1UeK(FyMfbbA!9--NATkXM+A zMLi*}HR_Z+davUHK1K2Uea4Y>_oQOIsg6w+yTcptcnn5^H4^m3E!LFd%~q%E_68%j z2g2b{f4OfAMhWri?{GrWb=U<9Ef>7Xr7k+WkT(WQLiDfVTdW_=hOpgHM=?|_jt_cg z%l$LO>4HBFGbt9ccW*BDo;4f~DgKDr)HyOgG(J%+PvsVq!9XGr2quXd)#YW@&n`tQ zOUShWESOgHp=iActoUYk#Gt>%{w|*^``#1AktdfKgIM!zvYS|25esqsDQu2odd7iD z^pFz2V@o)RIgS-s1C6#IaAI09{!9hUbkT;P(mEsy(}i%}V+fV9W4YXDwll!8rNUI+ z6ApX)!Jwa7ASaXdWIyb{klAG}CX;lWLo$;yJ6*joz<(QXdi;KmGw|V9z#qbC2(dNj zjNVt|fqtYLh*r}O#wc@2t@7d3MBw%@jlk6@BD<0HEC#LZVRdVa29O#4))2c& z_eqpN>~VPrkgnxU6Xd z;>#7h^)G0uLWiPuBYf$)g~GQ}|@14=+%2Auzhw}`!OK$#+YEpYxbAcXU4c|F$x=RW`fI1A z2}6{~NcW?L3^c+be7^;(?G`0Irq=O0soqitzOh8li%dMnh}RFUs^QhVh9W!Fs6oG; zm&h&uk!|GPxLYmpoQlQo^hsW#fHSqWP&=*=-}oNN(P{yv`#e@!fJVpE$vu)!qz|u- zB@!_QU05RKp})A$JJIE1*n#5;^7@WJa;oaA;eZHvgi3z8R!XsX?L1;gkU8M|i+`3>;p?Vx1Z%-iCK5=BGXHzX@ zVv>}jxs#_`nhz{v%kAt0<{CJbhtS^Us%aR6u*iTKNC5K{HZ~d{ES5k)<^KkC*ahiu zai)+O&P02B?hcvI+&?&bbWJpoBn~W7{jFGDGX26>GVC(*r0x^!*jgj-Vy*R0wzdoj z-ns|bD0@PEXNCR!vHVoNFp2*Qg~e_sO(+9#G@E=BYy z+TR6sC_*-LR26w1uzOVrT2fZg!_IrzWf>7V=c$B z1^af8|Me`}%PvEH4c95?0p3nyh9Ca%F&e4QVsK*zPNd_IrWECY!KILd^!{_~2gsam zzOTki`1>qR6+EZq^YHTe*%vG?y?sS_{yknlzK7VZxTp7Ve^kBa_&4#v{L34#77zIF zp5t?rBtOp&L?Qw9JYDaK`2G0frxkTQEP?jl$=@&X`xM&qR{lNp9^a$;qwq>7hhUNI zg#3q3wvM)h1kVnr!5J}Qf&qxnv8>C!@$kR^;xMjYI54y^m)STHh<(!Bd;49xcHMP* zuQ}^hJk`r@oSC`#^0F)BO`~oX>Yf*M3$9bM?)bpKjsQHH%VeBFg~JT`UFa!?^ZfIKw> z>uyZ_Pzom6E0MQokHKVEza=3l#jwE_iTI46f+Bf}^R;Ny=PDK*(r{1Du;eHf)4^{r zSO3P&3-etH3;X?HN$JX6m>KKJ+S+1%xW>*@HF@#yl-uB*8ooGDNx2;{55)ppu+VQu z`$rpnM~m1B2nhr*dN{g*5}XtqF_l*{9AT#ffrnjOeXjO`LmKJs9ue4h8i==tnuxpG z=W7Pj*HaE>0QhtyE*_b5W9x(Ai<9NFi|}F2ftDt)U}s)5fzi3fOUu*jR$!`njFe^2 zKm|vPsXuQfUVD%(f8S<*7yZ3I63~a~2YjW|U3U6Qed9-M)bFTmN;vdf+f$`{<6qut zrkqio^w~(@`CqH`N#7IofrsPE*Mmo&#HhapmM!I|U611ix_ldZJq&Fa+~3~s*YZDp-5Vm+>D0ZY4H$WC-Y za(s>b93I2#bU%S4G)k{~p4uD-{5XfdUiS=#zurcD?1Q9y8rc;HJHcu!pi7~wIir}c z=MZn&XM(O{7R$BHpeN%v|B$gQ*Aw`l)9JE*z#maO-dDNqFnP_P=*qfaDbnbK#^)os zhP|1&rdhwLE+lpYKIm{!Wl@<|hSQ#Kx(qC@1bY*sy@hRr+cwU~ygI@U2#Vi5ZJjZM zk!J1jr2cXK+rocKuj@*Lzn^OV0sm8?mZCo0zw!E3)P@=oQ5kO~lKRG5#3Q;}*w>`8 zO2;KmM`$Y0@fKLE1SdKY{Pi}1yRZ-A<5E9(?{&}93b8ou|IF`SZ`+I3_?G|7PJxHg zl=G}=fF2n(uWC*RQWx?_aWkH2c5GKlVV}ik^!eK6oJ(6>VP`lH_JdTJym{8SBSO&* zCeaB^ZGmK1HdMpx)(uONzAfqr#2CxA*I&6b#}3D2IU1E^inSD%&(*&hb3og42Qdo- z0~T{FYHkwbE$E9KsD%v#`>nY>0tA{k*b&MF@)v`kdFlc&i&M&BD+Snud36US=}oEO zxDjEW+H@+nuAH0N)l;4}L;_Mcl2O`TfTJkig#_v&RtOdS-6~(4FOvv7Vpk@v6aMNrkWfWk&BDHoriW0j1ElQ z;S49D&!^)Z8_(^UJ2E6hoDM2goO&34(6g$lC4x2N05~0;2;o4R z`3fjg=3hFMnXhf0>x|D1b#AC-j8Y&JjvFk!JFaDZyQgj8*uhF>IMaXr%(}~c%p486 zy>0SPzS>zC@+CHHo(VV{igo3vyqG!N`$7io_D02yR7-Ktgqy9xvl1?&8}FLNObDQ=0ws`tfzPxvK!?{((d-|OrOa+i_<{6)=decE?Iv~eP9(UAZbod?EE!*bZG3n^;FB*n}bH#xz zIPuibS+OWcmoUW;|M2;ueuu%g>#_)QguNccm^7NgiZzA!EalBV3GVY@-g-0f9~p8q z9LdI_xF=a&jor=SQcasT0W~ldHA?UfRyy6}*2Tu(k&CxfDqAid8M$an z6@NDlTsSp)XtY-K8|~Jl(-CuLN3!|Rlq=?RCaq43H`t4F_HJElYz9x&EYka<7g0SI zjZ%FJz58d7?-8_=-3|l3njTCS24m>gHix&}Vu!Xd==|`{euVbr`EDdgqH2xN2+NN5 ztKUQ(C3r8N;hX)dNe8sWzoNC7kGC^+qPo}SvRigUOPJboGNw10jTWEDj7W3A>>PIb ze9j)Dp*()k=;%e`I1XU!!tss`9rXXkYIP&K#O1i(>?kEYNwdMC*zE2$qrc6BqshZj zr`xjVaNU8UlAXqB<5Sw}sA{;nkypWMK`;8*cIi0w)OBF*g9*{brXi+>Wy|-g_JO-` zN-qy0G;$I8dqFr1fI^|y!+%hs=%`0gJP){o9_64nyf66eK*;*axtm;BcR;3;i;3r-p?DLpAc&lXs;NQD8l*=2sy6M`TDU~wmQi;8yx>&9* zRw|3t@?v$VH<9Y;$|QQp_E0rBe3dtF-)wUER^6xIgOV@AEvH60?57&*<|oPB((_za z;I$6rKgY|H1-9Z12qiKw$k2s_ie0YhY%J~-^1tjss)%{$`us!9-z0ykx?i*RNk0P? z!mgtV)anYt`%pc`k5CYa{w;Df>m)TR@tse^-s#_fN+q?b=7Ri={Z{%vn1w}r1i2sx z2%$?kI}f0*Yna&V<06&3c6xxg7D-#d2PmrN&J`DE$fKUzz0WAMNujF6qy!xyyCJo4 z`m7zrvo{&C$i=n?O4vf(AKrXHJnvBgo`A)E_HMILVn_!K;8<#Fo88FT+P4-5_m7-6 zUp;$oJ8PTF#qDON!Q<=p$SHP*(pmL~W4@&SN((r*s{1OtT>1s42_oP;Dz};{L?=+4 z;)+eKzOzB20iw}EM52eZU(#Jf`T9Y+E;oqvy2cOc3(AMvBW>op&k@x$&O?ZZ&frE` ztSZv@*Fh#9HZjUWM3A`z8Wz~(jvLplyK%?T%h$Itr>%ajL1M{G9TWTWW}C^?)^W*h z3zO2Ds~wvXdW&`G)!Vk;u{3wxSyq?%>yloIC;Eo%R-4H@J;JuZF4D7PB9YJ=-ft$U zwE>rpKwnZ+c|x}d+Dd3k4a?Q5%Nd3?KiaIxQ!9=>V=MT}@R5nblVgWQM-Pon9-g=+ z-kXSaMDag1^M8IPKMHNd*qtaRq1#2FpcKQv85JjOvd={*@{3ZRn^(BnbzlTjoeexPWl$Xrzrh#d-($KV8-~5*z|2;$uvwc>wSGLoyh3?ZQ z2Bqu&k|V*1r)Y-j3F&*le-ak%n)ri`_%@Y%-;=%ydtv!s(es>G?`eB51- zJMbP6H6d?wV4#gFAQO^qkg`fU_rM0^mY)$8IMJd8yU%27+CppF1vkrqbv=9=>>0eRLHi#uohzIgp#oS3?vcg14P`M_)YcJ}t}?Ca-OCGK{|73{?7 zPD-A@9M!ZgAUhMXW&WA@K&p3_sH(qjSMTM4 ztgK`MfvkeW5NOEa@~t>W1#3954wNDl@6pjZA%1c%`%g%oB)rCP9d_zF*21w$V<@Ux z3)_csHNA3U&K07DjE|LovMb|q? zo_~ricU3m`^lq+12MUoBw6eQ?F>!de#naz@zMS#+GqRlVdopsp-Uw()W{N3A`~j$1 zJz_0?koLkCCe4c(JG6N&&U){0y_C1?!Ij`UE zYjE=D;km7s^jRHNqc_xVM-~rk8#<>KD^xyCayF;TJyWmEBFtRjE<+ zbN-S;Uy0{z%a2KC!wRI{nWeMrU#x#j7@Vzgl6t5^Pu2^5k!8jgttc3?@@VG zkhVg9L)eNC@&=xr*TvHmf6OOIl63t)?Ms_7o(`u)u>?c;c3+P_IJY?IwMRo%kKf~s zMnnFdUhlb%fWsg1*DhLUUxzeAQT{D+p*P`?NwHdjPZ(pIxYKc$${-HGCcb(67)1A{)dD~oEZCa*Wq6_!V5rlW-^ zq$$ywvp+}^7^4xKf;A~5wrY<0$X|nD$9ovw8<7L2!HRqMMWEFR5JCPt(m`61nPQ{0 zio=+6$K!qbuKWobV_WY3E-#3LbXa8i5*UVxnzrU<=pO~QrIw_y^kLr zE9tXt>_3I$V?V6j^V4KWPl}UV$QnmH0G3UQJxz8B+Cm6xR$%L%RP5aigS&nTr_S(Q z@iQ@;Iy2W!r_QixJ`&&0@xppuc4Yfa3kx@Guk($G*%5I94c!3`+Hnh+40P5T5}wH~ zBteDkImP(E*=v}i)lBpi<`l6MH@Dj9OA{q_Z!eCC&4f4h*4Jg(pI_i~SyrZTVYSi- z!Et?WTGK?*3@DOYj{(EK1BP@)9HMwCj;h?kIn3Om7Y=KKh`z?8Ho2}vLP{#p_17eu7YXCVLj8LYE^*Ea zvrL7b0kK%F|2Y1e7i`M)O2`v*Iz2cW-tWK66AF3#eji4i)%t@MYZ_z_1Ene3+Kf1A zndXL$30czH3l{jF5Z9}`Bm9&LIn|5I_(Eu2MXlo#ighAA+wdZ|)t}caW^N%b!`1q% z@Cih$2C*V0dR9$l~R zuWss$cSV^$g~$@l%0rN*{?X=h<}c55(II&8a5xelNLO&gqHu|e#kp#Hyx-$-l{yqU zHP0M|H_JZUcn)dSl>P&{{TffH*#AwX{aJrw3D3s=wvt`a&hX(L(AuL5?1)(oqzS;4 z;47+)8ALDjTzEk$tvuUj8}-pZUfNjhrC*!I>ZTFtfxq;;A0e;&ev(&yKYQ!{^7J3{ zEwTpq2|1+MF_-ybdfmqd&zUFaKoy8aeSq^DpGL3$r1^V_PS$zIn~gYtLnTolun1( zo5HD77=u}%0imSONoe&A>;cKiBMze7Eqhwk_z6nr2=zpz!-2GiB|UKCz4c#uPt<>j zy#cVgBm_#ei=CxK_y+qh z>a5>Kb+UDsIHJ$hKWJhH?AFu*>NMlzGSq3d6arSC_A%nTaorqb#2!cp#Q(U2c!4HB z;I;T^Z^900?4YUsT8AU(cgEdpkHc(m*8VukWL11^cBE&E1lYyuz7|gi}%FQxVE(LcTgA#y4mriT-WO z!y~4tI;Z*?^!iIfd57uU_EIESw7tjV$cOD=)BA!SG=UzIdS4w|`@$wEnu33|Yb zbe48a&+IH!ig&{!D5X**zuD)$yI48s3*OycF72F|-c_m=?sogk;wkmF3;A=%=O?}b zB~|;1A`c={Q|&VzctEe+7OQ3QX|LNI47Z)-KW`>p%f{j|&WccMh9%#DyKJ#&tZME{ zuwP$&fgOV{Z;iAE>fx&|z?YEiB)uB(5BT!xIyyumN$o=sih&4vVDf>c9(Yfw;f#je zZ|cAS&Epc=I`z^W-HEP#C3HzBkqEur8@C#!*Z1w}@7vv%8m}0vaqrvd!Bt7Q)}8F$ zafS4ijz5TyLS%s9X!-;K%kW$B2bCU?>M)6=B3-< zvP;Om)JY$az65&}i>MCCm^{VF5rsU3jTITY{2;UjlQeCTKGJc+kBOKV>0E{6DO~6;;y~{ z{&FO9OMyoVr3IP@x-p!)CI7WtOnUCLDVEdQGm%g#6A7lD|6MMocRc^wSPoRDH5tE> z{(;)^GW0L9Q6R;%pkN9SUnCPXmfT*EE;8l2ZU3RLVwz3TH|kHDzu7dTwDfawO?cTI{bkdUNjOd;lSuvlBVE$vM>%b0g_I!;RL&u&jNV6e5F z{wJ>sy+dNK77_D$f)OGv(4uu{dL0ykYamp$+BASwrEj^S2GOnbN*!qHpi9+t+m+ z+SyMhb9HSjmp68)Cvz=fJO!~nUd=|*BiI5Kr=%60>_e(uSh~d4jg2}AbdK2TV+ls= z=`QDEm4vGiIF=0Qv5F-Tw;1AgC1N7V@ss>SE|BkuaR;G(jNF8n$y&{uT#oSDXdOr! zWjyG;(wF(1a~av!h?hbh)A%L?xXfvtd4{L_g3p9y*Ib|TrLM)&>XoDHTWc&Qt>3s} zB@dfib9rg~oHfB)SFQWenW#;Mn^v@G8=YPE|In_#eVf_q)*!@b$NvK%_WVWUf%aMc zBQ)>b*wG+KGvwS^=Jq(I6NN8bkfCyrzXScFu%58*yB5p0ag>#p{#rvGgW)Zb^cGwh zGly8p>2TRuDjcr=m)+%X)_>`6+-NZThhG1n!SEo&7ozc1X_DPY`wvNv>cq}Nui`ro zRi!z=uSCA*qdKvxP?_&4RFyUZ{y`2G`w30*{e-ap3j3J;dV+^_673{peSrvmmHs9T{s>Noq&g9pN)g(Rgf(R&E(K?^s_Vnuw=j@kbNUcq|i(OS_c_wyKe%-nbvXqH-XH zU!+e_r|#o8T}1Usn{^yj&jyipH&6aRd8AR}EQX)cx&iPpI!9H(uo)l|{t1Z&2ferPM^tAQLw%&UUR!0Ze>v4Z@0OyagVLW zecLLy|3+{juai>rNI(mVQB;d*xF6;wI_y?I4!LyL5KK+koFRmMt@e%yX*f`dhvGgD zqLpY*EEq52U>M@HJ($_m#++MG=$ z2QiCegB6fTcuEQW8|DP>#og=<=@U5d8sF*fL+4>3{K1}{XL>Ngs+CF=Ws*|A?l*eA z(rBBe*3jkX2esF^)+b(q!JQxIb7v!^DwyBu^gA5^i^=T5U%$nKT+>p<_nNqSC<63C0yqZJ=r4PqCq9KqjSc`NN+HK14B z5+y45>W$dtpZEisTez)ah7ZlcH?eBshxzdiyUp(pgq(su9N~a3V0Ba{q{mnBN20|0 z@z2r%`;>l$k3C@%5chJ!o2>tav-amTbMNnYq1^jL_GYG+4s+?(Pl;{Z+QHafEOdlJ z(LjDHd-K6~(woV-k<7;Xd3nF?GHR*MrsdMG3+JYTRx04u;a8hjqr(THRKPz z%$f+=H_zAXZ?grQF4y6|hni)&>~c4AW2OT3^)W88#i}5pVZ-1R%s4Lnyu)C3V}7Ca z#HcvmT5ZB+w&1{Dvl8{RoDn7VN#pnovT>Yd1&OvxbUB&{RsI)Cw4-YaG};MaJG&8Q zwt=^(rTyOiCr{1qCxyH<_dxA1{WEz;H5-W99DAoFP0Hdmq5wHYC< z*}101Du9RiN)uJf;{G_lSG6eaAK~|^PQ?8Qey{2`-2X~_pX&(RlVw3#dp-LBJTX;k zgKgDlY0IiMX?US&veW zs(5fIjeB+Fx{$88$DF9zZb(7gV-}Zl!vCH#!KO5_Xtmc025s`^yVU*t8tkbZ9YN=q z)v}7Yl|8jHB1p&lkzJ{$wS*XpFKR#aCt~qwvuXqj+C{ca>4O<0T`r#0x=F1@td zYIj@AcIyIUnRCHvH(T6xYd0SYC)jTN&D?&{c!VrIiqdHMO;PTl%AGh^yQOk3cK_P0 z9~iJ%+!mAFChE4?O%}Hw+oC|;NMq1t->0+d$l7h1I^sk4$PWj%`N+`WimWRj>>S@V zX{@^abfzDmC=z`{u+$iT^yfkQtV_RW**4*mR^_RW);eKY*m+Bb^F;(Ias z#)fpO)%MNukEN&C<@$Fvy#Ssl*fg7Ky#H4WuwyF+*nKN+rKeYoH|wf<;)x2z&W-xJ z{!05sf7jaf&0k}QTnbBs&N$@qa;4-UOXMvrf``WZ@`bQO9um^;e`SgM!&;UIC^5S{ ztos=-z_>>KzAziefPyj6-v@Rh1BY8wKg0H9AqCl09<$A9H5uUv=Huz=#d0|&V_8X? z%i*xdzM#TSTUM^O*37&^g6!VytfY2_-6lN7b%<=H;nr&QZx?edJT Jl2>2&{{USQh2;PM diff --git a/battleship-game/public/assets/fonts/Quicksand/Quicksand-Light.ttf b/battleship-game/public/assets/fonts/Quicksand/Quicksand-Light.ttf deleted file mode 100644 index 800531084fa6cecc3b7ee732bc66582d0f889aed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78660 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 diff --git a/battleship-game/public/assets/fonts/Quicksand/Quicksand-Medium.ttf b/battleship-game/public/assets/fonts/Quicksand/Quicksand-Medium.ttf deleted file mode 100644 index f4634cd7c3f16e8b1ffd01f2ea4a824b3b25991d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78948 zcmc${2YggT_dh%{ce9&bHp!-MHiaaVgk)0*H5CX|I;cQMLMOoxs)z^{^ilLtA8e?o z*c)~qMMNKLsMr-15wI(EL`BHH-*ax+4WK`N@B4rL@9t;jo_l8I%$YN1&di;eJ6A{{ zL^M2`5QA&$>Z@O>dP@kE4eZy0M~@o&PE77BA%>nNMCFx($BwU77i@S(2-hJY!d8wN z+uOV5;faYt$Q_73eeAfZamz2Cdk*fWc+-J{T(6Mal+yC4n zL?-Bj-!Q+esWJbEd-u0qQbZNecg6~S~D@Uv4a zgn#L?gZ5b8h|V!V-H(eSv|Ns*r;X##RH2s6n%%*~lpbGd67s~4kea-3b>zmvX;J-t z5t;_M3GsgZv|V)FvwiA?z7f8#pzgL+xU~yKSo~}%4HSYl!*-+W?Gf?{3YWjCt+;rE2ELRy%}C?qs{~dEqK(=| zjUtBnQA(NSz3m zEZX6Bh;!ht6$C*TvO8aO=yNr!v$rpfF3!h8~%8j;HI7F%i_v*dqWp<8Co{IFUP|*C7_7 zB$c8!{)>{*-MS$ny+6L?_gpU&SVz?LwKIS0IgS$3JpaalYKr;a?`8%UYT<)_dKu_kb8;*E0mh$3)E z&J(~{*L+QG8pRUuM`db6&Cln&m*SrI@Bl~oRzXe#cR(f{miYf(LZ)1GsV;?7mV!TB zTiTK9Qk1h15+yEM0g=>N5u*tuS^y46LV7%p7=4nMC)Q-X2(0PjB~%RBh4_~VKh#%@ zguF+JI??wen$eZs|D>OuF1gpB6br?2)+AkLJ;ICJi$ottl(dKH{KPU)S=*6zF2b82 ze-9+FnCpi0kMu3?g!-6e)ZSv$rzyYQEKO5_`6rci?~~+Tk95>h=Y#hG)DG!IcR?EG z*AbEgX>vO>N!Mq88yLyysce}ip`HobQ3~42#JS>1u~|GUc8IsdK5soE@UskTKQTVq>qyTNvs?FrjX+XuF-Oppz5HJL6d`K2Q3YHBj_W0 zn0<ae57RQs07aVUoK5`s%{2Hu+BZ8BH zvx9pF&kAl2-V}UK@Z-UULPSVLNPb8~NNvcdkW)iug)9nL8?rv+`A~bPGqgT*Oz70m zxuHu!*MzPQy*Bjy(62&&36o(}VN1i-hFuzVUD)kmkA=Mu_FmW*VZVlJ;Zfn~;l0EA zh7S%O8$K<(E&S~8OT%vrzd!uR@E5}03jZYh=ZMh}H$~hV@$ZP2BHoYqDzY?kUgV}I zd(>%Bv!gnqR!3bNb#>I{s4dZs=-BA2=z{3}(Lj?Gzn5{A2#{BLKa>h8*oZX$J&MM~!=VWJ#bFuS0=f9k{Iv;U9<9yZmzVoZt zs@M^+lVj(^UKP7P_S@LsYn#O>woj7P?lt*14{9-RQb2AvPgB zp?5-M!j6R36O$7sC$=P>k$6_(C5hK0-kSJ*(uAZLNv%mMlFm>1XVOhcpC|p4bSya} zIWaja*_&LIJUV$=@`B`L$!n7@O};Mq_T-0>w&vB#&~plvtG!0H|s!luk0n++p~Yn zKHAOE&DkxjTVA)~ZUeeq*=#_ZZM)XpfaW*7dle z$BjMi?it$C)ia}KVb6g*NA^6u=lq^ad#>sE&z_rl-rsXu&sTfy?)gd2?|UBU71S%b zS4yu2(;D+}K($}B1?;W_i781g$tvkpQd%;gWN^volF21AO6HYxl$=#^ ze#z#Nhf8*pyj}8X$)QqPY1|3_g3`&Q7nHtG`d*n*S?7gxd%OlDcm%m(oup+7= zp(4E^x1x7NdBvcLNfpy8mQ`F367q zdH-hy6b-m_pc+^(ux#MSfy)PO9;6K#G-!R5tO}``Q?;YIU-i?~FV~dSTwilX&BL{h z+8gU+U0vOVx{vCI)!#5Uc<}nczYG~YWaf|yhCDdr<)LC|#n7gqw-4Rj5Yo`l@Q;QU zhjkxz`mnQx-8byW@NvU08vew zAN9(p-J{j$u_UW-NjD2nFdt*Ny``b7%E_ht*xRh~O<9d!O9yfH{igBCA zZ5{W~IN$iP@h#)882`lh&nF~J=sBTz!i^JlPWWWP9}}}Dj-EJa;`E6ZP24zf^Tc~5 zK0NW`Nx_pmllsuG9#0wq<5MBxXq3uVo8vI9FJhc)7ehn@#%+DXD!B?h%H{HUd6V2C z-Yn31!+oavJolyUE8JJPZ*c$a3G+mI;yuY8w-Gb z#OX=&qOe+qt* zc_5tv4>Xxk4wN0Z{lMG1E(AVzJ?$WksPiR}UZQ6G2S#5{*y!MLro%VyxZi}|LY#tkpodmAn#s2$xS?{V1>Qc2#EmuwI zDYS|OYLaSEQ!obGp`KCyQPb4F(8kj6+}I7Rs$LAn_<1bG>iSr537+q77k7%g#Dn5# z@q+jmqr1<<=i&#oQq5Fnsh3rUIwpRRG14iMWCou7D`l0emy_gaa+;hY=V9EpQQjbL zl(*yge=Az)JMshhq5Mp(P&cSE)k|u;nyPMBkE=V?6Y55FwfaL{qnwx(*{NF9wOX*+ zs9sQmRF&#f@2IO(qZXnDs#x_8)u4u|VQRXFg|!I9j6@7(CQ?L(7=ZRvg7N=UF89U@ta=Uz1?t$gmD_k-ZR_a%gAj3quj1^fjL1fEB z;la#Vo=g!vWSXdw#iB@NiGG;lsg-4z>&X@kvcDK2`-P~+$(Pu_sE;XL-G#sxV%?9ChrlC$h*X|@=@`O zd_-)Q4~viFo8o=BOS~kvi9PZS@g8RFK9sMcO}r<*lpl$&#EZWa&7+r$&{e(|K-A|94^ zibv($Vk>6Do|8|A=jD^)Kk_lLSH2}az}(oU@_n&izAHYFyT#Y?V{u4+C7jYO;$$#p z-+UqhGeeP>VTz)eAasj1@f&)>Bbf9212aHJF{}8y=r4PVfwD-{VJ5Cr=8AIJT~x>( zqL1t;%4D9HCdY`=hsjw)lr!EiRVlhzsQ^@h^FixC-;SSIbMp zHFCY!ApaqD$^VGg<#Xaq`GR;`z9im}JH@;5W$~7LQ5=-}#W!-F_*Nbe-^)+cDQc{m zpvI_)>I~JU7NQ?sr!G|Is`J$a>O8ec-K=I{hHs0yTiv7XSC6Rs)MM%a^`LqbJ@xDA zP4sh5s<+VBJqKHcVv10?7ju)Uwto0HdEflTj#fxvl?bVtQsTkq}{2Os1{zjbezY!lC=OvAVZQi| z{V&-+!2TZg-(~-G_II+sgZ*u-ix;$u$J^SQTg8?|b6RJLyA~}fEE1a+EuOJR+^}fz z!bRfh6)o*;=qE@oa@eQYatUo9KbL*z1$2gHLI{_{zFxivhNIZ0^%6-dC-7;lLZa=G zAH#kq``zGc=&e%G?^0MY``PemrGVyhL)cLpH}5H47Gfxlo9D3GhXmaaRDr*+J&%7s zZLhY|`ftJLqeGjiO~MR*u=)Z21L|$GsR!ZDRj1+amPgSO7r+8PkG_2js8bHXpg%-p zVEp-wJSe}F-^uUg5AsKhMt_!vpc1oWTN-Cu^Wm7@Qt{f^@ zg^c0kekBSAjsa0e%vX-71jsjG!+fMUSaJ) z_EC{oap?nGIA7}nQm1li1$o<56ylCk5gcb6@K}$4Z&EwN_oG{;4ikSEyUD$`GzaXptCeM`N_@)MB+bEnahJ30k6-1gWNIsal%m z=Cu*ztQyq}R8EVUiFJ*6Y97{67N`Xxh%6wuTBgnt!5GzCg7t`hVZ`M`AM}}sMW6J& zNK`+n!y-fdh834wluGAS!W!wavC-;;T&5;bX)s6UFHIzJabh$C2doWlEo8n75+*&# zhMej7>0LNl3!-!x@ReALI21xFH(f)d_=V%?IS=q1G-%}*w44YnFleQNl2jhm9rr|y zYQd!D=CBggpW{k3B!H^j_X+N#Y6-v>r zUKMgzqD4+&es%6i2eZKumAF}w^dKQ=aw0%Sm)UrOx{fiWpWTHc7s^jk)hQEKk#JHq zg0>4G5;Ln*JLC)WBvMYJd-etMV5X%OPWe8DQP({fcLkO#gwv2_o3TeCb}!^@L-|~= zDxqo*^y?e-A^dOE2k<{p@5BEzAjUq9@iE8P%P~IU7?1<>?JH0;sk_l)Rzjl|V&vA0 z5%VP2f#G-t7=(V3tQSUg2x${%@R-gcXUYy0%`Fq{klLiIhd&RpMO$S*31dPfmJkfO z&G6?iJV(tZm@(ZrPB-zBRd$6{UDyAr#pxQJYG`FPDB(GX={cZ_1Z{((y4P*0PzOOzU-=3sSp7VO@9aNiyCFa6bEKzYim`YGtM%2h?Guc`x-gE@^#RST$_ z>aF^y8bH~qKvk$}Kv|f*DOXj1GF2~CrUn7ZP(4+t8VFgW!`k#vC29b;|61u~(`$39 zI2HFTu!H}`6T<(;zDtghQ&gD! ze+BFC80zL({B7bedeI>6Mcu4@-B|l_@MOJAUN1qL1PhT7c3!Q!&$KHUNOmbAMlm`1y^OzEXDOP@c3u$bumdR z7xfBP)8UD2k^bpZZ5z(-Nu|J&{Zb23p5JvkBv|zjDtb-hb0wFEX^JMe^}ZwW1vT zFmC)i?tD>*_SMzR6a}yg|L0wcL9%PeIe_~!N4!+St=H29@@A_CuK$16 zVV)^XEk+)H<_3U&^fqv~`o5#9_y}{1A7P%9o$r0|k?#k%pW*I@`&4%v2l0I0B3>k} zpJ1+#?%#x?_%F$5jINLRoyrnpOecQENDNLo>FPTQxCdr#2sc#z!nlvbA>SeGO3^?L zwpw>Bz7H+f#L>0Ew^y4K5RY(FSN}KN6!cAhlAm@6ypXQwt^jkF4FN6#a0uKWxc>5= zzPIHEm}C8$PAw8?a-N9!pBzRQ4gXb_ialh%oanG_lKOY^#Y|h?@eVrE`@iB+L~$3o zdBUy!#A%vH)Aorp+kRXR!%aiGBDWZ_pN?6~(?y&*9X53`=DwGq@9&MiEE;w;OGKz% zq6#|z%kj)!iK|z60aLuwFc;v%T*L^#gE5=gBs`c8FOmhqjoHnfau{UMAMXFBcnULx z>K&9}ugKSe!1o8D0)2;93kB|=D8X8QP&pXa&BUM`Pjqxo4l57(?-lG_`Up>`yD`50 z0wcCM+`ogB3pn{R%J(hy2E770lTpUOm?gLldXg-n;bO3#u$1ta?TChp5i@8t(KiA! zy5;2Xh*z#n@Lw5sd)F|m7UaVv$Xif9w?MX+VW#^s$aW_1GlAa({Efh$4g4z9#eR{4 zI_QR3;#9aa@im^)KSKS!ff?%85f+QOB6q3C!3s-`g~!v1ROq)nB1YQ@o*#f7wTqq@ zujFbj+&e^;mWy?hM$o0SAL0pgKh{QW7ln{RZ_Gd!;<=*0_8j_qN>AfM1zU2S$i+NU z1@-OnL*OqHAs8Qp@wn`IJfqAN>1wp_a6gUpGc^(Gl;OY!G+qlw9 z4AG$QeB(M0SDKromGrCN8sI3LoSDwd%fx%-RmkUg#Q7HW9gEe2btv0RxG#a<16`bq znEg^JfRDjls9xuccdS92FFtp|9l&nwtf@fV?Q{R_$8^ZYukqPJ-c*ZCFKPfB12^u zR{J7kBv#m>uqqbK>zA=udyB*F+{+ZUf% z+ph{W?+RSFskjOAZo8WR-YLR?8Y$E9)@dkdK*)Ay{D>iq_D8RmtI4 zmmGv!dQSf5)Y-^cjl46J1Dksryu@?*JA?#KGqQ0VjT@)P-~ z{0zG|zQD@vm+~u`O~<_2d!mEp)G<5uomi^Rt79E8U}haFjy$(6M$+s$R)de5Ux$?% zt%AfU{#kbHqYqaRDiVFbGW4fo#Bvp*oZ?K(3CCfk#-$QeqFAYtRI*ADD^#jVQ*NF` zIc`=%+yqN^7UouZqBnj3>;K9ih&i7AY5>;d2dOGmjTxOuVwI{zf3_Mn?i|bnosAiyp;)mWriQB#Y9w}mj>anC z7_1YH!}|XOFbj&rKjya7lu!EtQX4tJ6 ze9Skg1*(--8P8DdY7urL=yUqC-(dyz7p%k{g~0j!bFl(R>yWe}d6C#Io)OoJ8^m=1 zYk!Hbp2@T}gFOZpt4pwp;!;7ZJxY``vrtFcGnT6G=vCR~qQ3^!s;^Cqln-l8_E zTk#&l?dlHfX1I&jH}A#j=KWafr1i~*FyDR%b7+Uv!&vov6sw+()7uT|Nz9#X#oml< z=*Oebue!zEnDw~@R_|uZ@v(dJQY8Z(vvMbK+s~hBaC={RUfN; zm^nJYE9;-B&oO`Wr8p0>%Nww={tcdZz861;$I)wDDl#ye|1azhz5+W*8ZpCIh0)RF zVk73SzZ2JrYs9VMYRq&7qyPCg)~WQl%tJhz`Kvyki9I1l)iLY<@nMCZR`)fm?+0OR z-=PI-Az0z>vQ{J3qsOWdmte2TZd$hy`?WZXDLxYKix0$JvG31Taj=IVQ_I3Gf^OJ5 zkc(Yn-L)QCPpudBSQTi!wL-1PUNxh=Wl4);aqFC-x~e+;T3u#b3yrJSxR%hhu&Ab1 zzpvtZq^mLRjdWEN#(fpX_ZAv-s?00XEA$q69aRe&o7&r29aU|!+FD!Yg;urCX`R*B zw78?iQB|j3nYF@-u$rbh?M;gp%$(n{EVQP%t)sE2sin1pb114QvDY>=5+ROV|9si|Y0Ki)u>kbzFRVU0`A(cC{gm8lzM-2KP0FG-`BdcneEH>$>@TcdLa#S;@Nv0#3vEMYG`8zW zy;WgDx~3_r^OmTg4fdf{4Ws7jnVPrIV9;xpkr^$jt6@B9rphtYV0fs`pnYh^ocYZy zVWa?sB~^vRg+*ZvT{A2!D&}$_n{xYbt~~qj0KpcsU=gd@HXKFK`L>c692Fa!l$do? zWgn@N8W}*UL>FvPNvTeygzKWHuEb!V4{InGsW!qZw7S+=_E7<%s4dciYK>~GH5jNh zs<+l4S*w%u>Pl4T^%`|rY^sByE;V&Qqh`0Y8yZ+^6r;|hX2hyB1YTDdF>3Z=sCxV2 z1@jvhvoIj`I>)F$Jt;L(mvUZ(XlY@i7R_&5G&`VWlo*stbmjJXYwTlmfsL^QR#;SO zl%mMsy3{B|k(ooCeQW^HGNbTiWnp8Ft7LDHA*eEgRGC4d%)s~287Zo$w~d2(+Q$X3 zVa6@j3*;>_#8hS!qO8t7KCq68sg4T0XeZom>db3d(0ISB>x_)+4TkDW*&9Ub>LSLU zDC?p!$M`^5msdH)>#80!o{W%vJS)7Oae0M(B8w+%qF)>#6PxF>w6`ppv&cSiR(s=; zmaxhGKs{ZBQQh?=_Q@PYN7oy*QEZ5=zQR6*$%jrku8sHc+8Zr_p#Hi2!oZa4gsKfC zu4X|2&+P$vZ{%BLw2vy&VjJnI`snGaxP3tJ3_4Zj)ewAPv7^xtQlnv^8~ql#u_Zud z3j2gL`HLUgWEI5TY$-rdU6H|Pp}|n0Zjg#<%Iqy%PJ2sWY$H~+QS2In{ThSK8iQJm zUTkk+X=sa;uOT6$q}66g%N;F&)m~(fEGl)hbTP%c1@V^lvCm?T!e;qPN2Cjjyv3oj zj?2wkWSi|b$<<-AyQYCjF163G>a(y&H$ITR!KJr8WKIF?@WIY5oqyAU)o={NtX6a8 zI_4Nfm}3~{IhL*#dW*|-BVDE&>A785fcY&CpEs+$rKNR#V{7xACi{G@MEm>zxfkn& zFDkCF%|{7!PKsGl&@F@4V$-%3+gtUv(b`BaIk&ehoZVt?4Io#d%f3jr&al#^)z&F` z%efhVvT4ftXf0@fZGnO^T8d@04JK+04X8Cp)*2*r{erbNs=e6M7(=6K>Vw++7NpiF zN}Wl~h*fLoU0qQ`+ldwgy4x10N~K2XQqBw3x;m`w1Z!#en8FBpb9_I68P zu+~N?iVUtxjZ&Dcr?lR_D4^+;8HFz^4_kCxZF`FhL6sS#$_ysU`q(M7YEi2TV+^jgN-`#S{}66FXK9ck$QuXI#cEb(YpGG#V5*` znrEPl%aO{k(u>(jFSazlsII(^eW|XAOZ{R9S!!A7rMi_~?hn*8yTYjE`cnJyKr3z3 zLa`yT`abp*Og?nQam~I@vAwZ?HsFOdas&fr88IBr-B(q8z)f{|;7w8BO>y8&sdYnU zoo}KW{UxwM(K+~|;-)q*Brvb4K7k?C)(!Ond=uGdO3VraJv}U}kp&bO;O7<;j2olV z(4!eW2j7Hp_rYM4zbE1Qutu&*hV8R-)GWUUVSj0W&-my7Tg(WOFBxRMiSk=zD-f1f zFMu|4+RPxhX>;uC&*hu>HX!DP(2mIh@^pwcYX;-7q=12rrELs^cFczLWH4lA+v0Wu znzO`+w`k5XJ>DWbSheb4%N(4#phs+-V-O_W!$6z|Ex2;Cz?BUhuB>#pa^u348x^iR zbikFB6IUMm;Mzy$nKp(p&kPXH1Q}eGH*Ch@`SV*k7!G9< z&0yq=#-@4xTi03&{IhZP~lK=`9LXDyxs z2`p&yM~byj$3?^T;#r7m@WRm;<&S1x)Y8<}+RP;_Dk=_XS=506N=J){DRVUH1<_?u zT^iBUHovWP0V=sL^?|O}=mv2u4Q^Smuwyw=a>637uAAOMeMnwdUCN`U;=(e1#HISw z;lcoXp8&YnfMNS!|MmC;oAC)Y;}gv78dq)uxR!^oMQv(ZFe8LJ4}yp{gjE~#Y6`Ha z+`#E=t=M=R1#bqvDum5vKOEqy*I?eu(gt3C$^vhy_$JblPGDFG-#EL-DKNY~;HIc3@J8n(CQxPp z!CsxPUO;akJ6^rCMo6F>ymbKtiuKI6ZoRtB7kbTS7{l&*^~WOMb@6-k@iW9s3vRss zE)**|;{?BFA|mzoOfV0NAJ$eij-!M&ucaM(a27PS&lBzi^A^m*PE6XxslNw7Yf_Te zrLd$R?0Gg@yE>#Yv33!OIb1q>hxR1XPHBCwH1VLzM{*QuZ2KZo^NDelGU ztP~Hcx8UE#p(`*S4*KdD_)Y2-_^+rN;qS%_H05H4|D^gF{@bV&!q7hXC)FqLpGIDI zw<4zuk6gaHqjdfEx{m_2%qa zIIOQ{qv>a3U7E{jmN6OkdO1aQFkrOJtfO#;;eLRF=4I`LL+i+T6Ydqb?Ql=PJ&f=> z;BJQ72)6<5GPsN2&V^eAw+s&YnKd77Cfsy5y#10j4vuJ!gu^=uS^eP3P$oy=Do;(Z61eD4+7occ{LM_NaiJ7%mxX(gASS_7{80L{2-%wcDEuuJbe9EfwjjdY!11oO zaF<&U;V$OT^DW$J3tC}89TtQ(WaK;Bf`}KL$_xv4ngva;pwSl8U_rGOgw|(JuCO34 zpk8n}=^psWRQ~ih3yQR$U<;ynisHGCnmG4i3;F^0ui-v*?}fh`?oBu0USZtx@byr_ zZD-sQ@E>;HCq(8(KzF!rhEEXV+#4+DG7GxMg3h&|RTi|&g4!*J@|aI~xMy0p=@vA_ zg2q|UNQQ>MueNagP)f)O_hlATXhA)I&*o5q+zch+e28$|+2NdwvEw`(1Lw9v2}(Oc z@fbQ}LV8-peRmucO7SJ((hdlbwufjl^e#iM<8CKIJ1l6M1yShZR=fupx~EI%ZH(Il z+_hG`D;ZjE#`Cz+*5Q<&m1#>np(d2J(1biT6H5Qhgwp1k5aXIDElvwEsH9D@pfMIS z+=A*YXpjX}nh^7%(ad_z3z}^~lwt;_IIRnA0^>$^!8KSo9jZm>063g2 zWkFsGB3v&kG{=HG7L;s3aSTPK2B)f&qd27Uum$~KL0?ZnmI}CY6*87Ic{fU1UP3ktydInlc}5CPULLXo>}mv!Ia{1lvY^DDGk5Qu;9jyJkRz7DRdIq1hHhDcHiL zBw9G91%+FX-GV?q`3U8ae8_^nvmjV9Jv4=49N>6+P^0^jVb79buMB9X1?{jP;BZzM z#e+>V;yq|V_gK(v7PQHNuC*ZG3@TSzxb+sa&Vtrh&`Jver$*W(7H**h&9$Ir3z~`) zlbGi*7H+r&)mzXY#H&m$fnQ)jd4MumLaBgU3`JW|s0C4|%?f2GsnZNi`ptxrrzZWB zJPF%Z4|au;pc^OP_L;b(4+w($iE>CfnDjPyUY)cH@QW7otOaegAmEZ7<#<~x++7v~ zT+(I^y}`m=Z9$h?(8U&Xz6GteAn;;PSz+NiEU49jW?Rq<3p&k$CRosD3u?e9r3aU| z7I_R{sKSE07SzjvaxBPWLCF>rN0f0FnbZYJ3TB)N3{BchxWuF2;Q7SEI9T`xxUU)d z)PnX}&~6KQ(}G^Hpyw@Uy9I%=L64v(nDWCG?mi2;!-S~xfQgrzO&oKzk#QR=++~0+ z;<)Ep&?*aBW^4{#_- zq^C`I7ja)_+|Gm@sRI(WB|M(+patDyLAP1ZCKF2DVL}POC0xsCue5OMEohwut+Ak$ z7PQ2I7FrN^G3d>;aLp!^ya&)e$}RbI3j!{A8{>$c9!m6dsNRGUrUKGSImv>?SkQ0_ zq7-_(K^BBlEe%|W1r=COo&{xEP%6sdf`lKZn$az0LNx9}xjv=>H;H9$!+GtU1i5~* zpr1@AfkF>*=;vK<`xy5@7u?&7+XdW<3_WW>TP^5O3)*5ql;SQO$aBU8vMl{wV=Zm^n(R`Z9$(} z&|VALjRPp&B$>v;I>y5;!ryK|Pgu~y7IdEl-2n)e4-y&;Xd^=vCKSKHgj~rc6n~is zaf*vLMWlrbHlg^#7WAnFoeO9crHEf_{Jhq+j(*aG19|wP=1r4zv*i9p} zAD}XhS7_m2360Qf3vydfq6IlEh;TX;*hwQTtfc`F-^@!Ktfc`RG9l)a)5d*g;^Mxv zAlOYK#U2ZK7Y9|o9=8+z4hy%owF++Qy{0+VmnAMa$6i!!>-6frd@{78I{cG9pg#QQ6{{MoV?-Y6id^)WW zFy8x;GJ;kGWR7+h!$&Z?i`oQC=P*g}yV4l{IQvK8+wpd##QO;^G3GYFo$3p~F_=XL zH7%U+m@5Zm%;HKXcDWP03%&zy@PTJ78NP;H>{2HBa2kVD>OS~3TEjq0f^*cv-~==0 zfT3rM2Pfh?ijOxVZf2iWY~mHo=tGMLgZXKxl6(Vz_fQw2&T7Tmt`!PivAM&T*xpIeQP~D|Yc3!!9oMjapA& zUg6b+UA*3~i`N?-6rB{4(~eRkha1&8_}_A>Z&_9cIn~dUJMgXKYYWI{PV8J3J4^Cg zqJvZBDEBis_m>n(2bd)P1eHRxF}0UiuMTjkGdR^tEGt+)@SjZDrRd!{_>A|`ikI|i zi{KB_&LNoAqU12Haj!fEI81SA`9yq zQkE&q?*orhevs-Q`CJR-Ou@@F=v8+EKMe0kB9x?u)kBhbmC{oY|FC`VvzhZEPL)m4 zkl9SFh_xk)>qRhyiWMx|6)e?dEYB5Or*~?X zP^hdRpW=&;RR_Ubx@gW3HW+lAOy@kV(`&dER!g){yjeo2R`aS}8?O#7WK0|Bs%Ycd zoXuJ~nAiUnF%RpsQ5*_g71OzvJD74C*K!-_s#wRlwCU71_oqm1ph@kqUE2h%(s?~> zxf)FvuHXLLM*6eF`qRpytl?JBpC#6xTLG^x;q5$<%vSPc2FpB?F~4hzfvMD{GoD&p z29-i4b18o3wwA&4Gq|lexvh2M8qd&d9G`4dI@dymIsiDAc}S!h%<&m3pn2rreL9MP5n&fv6ePV1&MY{a}6{s^X!!4%v~p@RLboN6D( z+($806vy1hG52wtQ4C*U%Lkoi4Xqw;e-RJOwn)Yh56!gt4xcQ~Z1x+8D_P6*XE9e- zG38lI?Q{+u#G%a`+RQvOYwMW~@!ZU1Z`QCvEU%!n>TIsZW~QK9{$}RHORLDRKV&zG zY5f>5*@{%w6ED;8;@wfQLZl~NPL8 zbh01EtYkW)81o3%>8G6P5stZ*c*gtwWKq``80fHAOVSf7xiw8AiD5?qf&c>dvr> zHD`{EG^dg&SF+|5v$nWcTPiuPO4gG~){{!spJLl8q`F4)!S79FQ9&B@6qU?R61Sa7 z=Bko4XAVpLZPpxmLmn}ihYGIW3YJC%>qa?C@*FOE1;;Gsm>tZ?DyF}T>91n?_cG=6 z9CH=N9L(@wg4G5NeU&hH!3khf7_{<*nuN)@pws&R&gr zv70oEjU zY@{(aeSa(w`%9MKWWr@)6`4BnHDmw(``=ydEu!B@!SG5QJ_4$Q+>$Z)bLzCwnRP3b+| z5K%4!PW=#g(^_C8ER+qR>V*3Z?kBi|aClCV``|u+dm9d;U-=^3vv6DC9)-iGAMdgY zxf$*TxU1nVN4YP?xpwEnt%h3x*MZkvTXCHYHv{f8VUrUO7q(G0z(F=RH9%lQCdf{c zC6qaE9=K$jm@56a6*fplEfj^9&0B>NwiQ_-T{+&1@ z9lMs8{&Va@LcsjSJS=B;5&KWE-{gayAp-gPnTO~2>EeC)B`}*9^BTi%G5$J^`5fv7 zJI)xsPf5VHam+?~su4FczKO@Fudx3%jeEpX9Or3$kzHto*|e?Dv#&bM%*905O^B4z!2ulv68{pkC_ci2K107@-< zzcU`%hie?czL(*kdGzx=?fdk^bR2TXcZ8#K@qF~WZTx%(e24vM{g4^XSCl~i`Tp>I zWWvbzE#E%=?XH&iO*a*%cbqy7A*Ybks~d-OCu z^bfwHzGG;+=p_PwDEHUC9SAk}^gWK&a3C;-4uj&COq23KOMu&r5KEJMj~Ho!!Of4p zT_V_|2z(Ucu^a*0C^gZ5gUv8wajGu5W6=AP%ZU;@5fhlyw-L3u4t&8v5!Wd94nUZC z#GStsZ*j;*-{r&^;{WJd2k2*L(_!CUlO9^Y&%T$yxs{GWxHOnY^Yg)F{1r3~`>hK~ ze~j$hNzz*SYUTr4Y=e=WwaWJy=M!Kt`MxtC{^!2$%{$~2paX%h8Kdj<y3~i{9|!8S21GXgkZ$#kADizUmJvd^wpvUHntAu zT6yqRK{L+znT3D0n1g>eJTI-qj{Dp3&*gK0^2CGq_YhCx-&4GRC*ofCQqs$!0B07y zirikqzYynGy@x#C$KNYH6nl^}eH98PL*d&%<>Daz{qSV*1Gu2?KMaugHWW@hPQnRl zQ}9%lf^X?$$Z~ww2;YjrIa*aX>ufQfYmHOmC^BkO0 zb|y|Kn}=`i;CoW|>JGjrg%SJhIEQXCp5-3G*MPQ4oMVJ9TI?6warV|{ctWACOTUCO zr6%LO7$wSBvNo2ijU{Vi$=X=5Hb}`0nGeQ4ge4Wm(g}fF?gWP963%joV7UabT!L6G zK`fUbmP-)JC5Yt`1i5^SI@^bT6r}SRYVLE$$iXslu#93@Mp%Q9F(Mext4=(fk)#yM zh)&q=BVuv(cO}kHBuNFcjN(~F!7QU-mQgUvD3oOs3K=Z}g^iGu3zE74@QsjHD9bC6 z<&^|^y@jXCxABacEZ>3bQXsnza026pkf5CqU6LHZ9W;tG^v~r; z8j3fS@DE`P4Pp%qVhs&q4Gm%q4Pp%qVhs&~hSrH7oW)iTO{Y4D&DJ?W9PcDbKTgvZtPq)cCH&c*NuzoCV}fFk?SUy>n51% zCdsH9s+DA}l~mT>Fs>W=7D*qReo1xX=DG=GEl%ee@^B4ha1CX04TW{7A*z)uu9a-A zm2O-sIb17>YbBR!C68;RJJ*VXYo!P4bqLo-3Tk2{^`WAV_AdUfXxHMKbQfvU@vXX4 ze5)iH=W^}FDPIrcbh6cIuJ*1Pt?F@#TY<{Pms@_r33Yqqn>g+6d7PPdm)s;b$kq79 z!*rY?I2|Vs4v-bnixUl#*+t`=yyJMrXP$;8WZ>a6WzD8Etgl8cs&T$!E{v z+_M*HZCAO_^O1iLCI8s>rA+o6mT&vMSIdD{z#Ntzz;bJAxQLBL|D!ER z`I8aypzjc{oxmPeEx;;Zzd*~PF%Bpp^-sv{W8Xo{%7juZzWW5R4j>(^=q8ho7?_m- zXAb205_kp&;QIjHw{qd@2dTaTY7$B@86}svJBSwMhCdi?E!>^HgNT>UB~9VDPb2Pb zrgK;&fg7}Cotp1Qm26NX3M8Gwpm+$SCg>^5ZEb_w4)-G5OVBVX=^v_*OGsrutTsT( z!NC5mrs2fX>BzkaXUetsenx1g>cC0V8+@JMeYwa`XW{(c^Kmxo1+Wbcl=%;;Bb@6O zs+y3l#dip4{y-YcLMa<~BxxPyT<9&bP?p>EICr%P=km?ONrcPAT+nO=&1%pbsn&}D z>N?tSfD&U~2H(+3>yl~+Qne!0Dx|`f$Z+1^1-M@?W+2rP*gN8eN}zM}BRKj5-0TE@ zQ^ChHyhk1(^tE@DpBumBtn=5nd@p)PD!K|##ky+&qo7|*qL7hW`BRM7#|fClaH=E z{Mco|!Or-|2-UB1=E#v4&2w(rJbMmwUI>R4i7(g1S@?@Ayi=SlPB-zkd;_10)j{Bm zbnkI^yK2?Ubh+5Yv7hO7P2c;3^bvSVR!@)8+ZLV>?!veG)>!!uIw3p`U(WfD8Llli z!W~+SxI!da__Hj0wAdgnvhZ6idW@&?VD`6#!>K%GI)8b(rvLtg^bs;oY_RAbI3e66 zPZfu(@Izg~mm+^E&r&PgU!DZ?GV~U-UT-Z%I)@g9(sTzreziy#4ij zpM{5<#nV>&B^Evry^BBJ!3N&0#h-x@l1T9NLtn8SBMZ#S*Fj%P2B`7`2fon7>YH2A zMSbzXwD>p|-pVg4EB2B;+a+{a<#ZpIoY&i>(hs>vtK*`f)ymLn6fh#YI62xG?1*+m z#H94>JS_?Oy`#9uQ;^}ZyFyiiBvp@z4hdF^byZ*Mu!lz4Lh@4*lfpwBF_DpJvGVMZ zBWXmhOK&oIoD_^kE78s}bHFt7!wltm%SuafvNDNLqY!`E25VD`($b1jQw!bh!c7LwCm{#CJaaZHinPdF-v2xR}Ur)fVb-#l*yi{1KIa zOL*r`&cvt~S7OY0k>HxSW80IWmj>s4)0dSd!PZU(*U1>u6rpZ(9dYD(-6}pVQo-it zz}l7-CuD(l9P)sg(z4293@}HYH)&elhzga}Ffcb~;E3GL-(wOIVt#)wJZyKbft5W! za0Kt|J1lRY+Is5PUJboeYFw`&rF};9j!TSD^I{T4Ie(AnQ{gS|eAm(WM@YYcMWuKQ zmLea0%Ph46Phq0U<$?z1=0H6n!H`>lh4M02g3ImzbD0H-v>%GCM#lt&honYk4DZo* z#*n-oLmT^aAD$VR8X9hoP8w8~HDvXSK4p#P3@d3;>qD}mB9tR8p?ky30oAjI=D6Y= zw(#hz;HacX@6_|gj$AXnEEN)CE?8pd8`w(WS<}LkmC*4q7;%%;%lEYs*A_kmXWmjP zX1qlw7yF>-jc&4ff%M4g>GYz->ufFc{73@5Lo#%(`nTA>i96Md;9U! zI&^$Eo^=@y?Ln?D)AE!4o~5SC<%I)2Cs4L>fFICzNk5dAsn;UIr+9&cLRztT$>z~g)NyU?rmC`{;l zh?@JKscS-PVvm%R=s1Vn=?ITW?umXqwU@``=%(8OR}8ujQsStD5GXN}IaaeJX2c~X zn;pAZBF(IA8bQs3H1swVjIzLzEiw$!NsAC?KgUTdPUF_|oIOZJF!ZAX{T;O!S4^}k z_?NH*=3;*g?WiGpxEj0VDo9S2;ZJaxgLLX6c(8-fPFcC5G=WSaEFukiFz!J&BCi^; zwyC_lY3+#OX}O^x2~qYid-{;PQD+Sqa@MH4@oq=-H6*x4ovyHu`~{)qGu93tv35pT zLSm3JG$zreqGKCYjUIJ&16u!Ek?3O+5@WsyciPjkAQ9${+wovX!hx~+6Woql>yGlB8x z5t|?rVu_0?e1xDgUw$1Ig(%Tcv2O;l5D0@E(o5gzm`S1559Uw{>6oE0TkSHIwvLZR z?XcB>wFr!#ENRt)^;q1^r4mamsgWYx%~FDZy8C59eKKZWj&l5-kU*Cdv3P!DJ;Vd0 zi&T@IUU@8z8n8cV(rfA8l!(uv?PTnb5aIrcgF=8H>JYKuLHQ26iEt zdD#Q=NG?(vp zveuYI5;9gJYpusle3oc@0&I>(Z9~V#Z%Gmot5*F4?dHK4Wg_V+o}L`J{wjf;V6$pH zFEw=^n3&r;!Jd`mj7HMT$_2S zM(i&i&82J)pyI&D>fZ+SzW7pw$z!gZOgv%^^Z>ptqUWNCnVl3L$YLeM0|8&qSKj}bkH6X z65_Of6;DIs1oc#CaA%v8m&Hoyavu8^ThjEP&TAZ@p$<7K`PeIrnHS9?D_Cgck2>fe z>1fGVcQE-{3pwyJkjW49*3Smab%Jz22x@8!o;O3BL7n5`;$x!Y5~4$5gXC=y@oH;) z^sy^q6C8F`7JlsA==k_()#h|L9LL^_R=LsfdMzBbJiSc*_+Gf;pZ6IDtm6#i}=##C~>4eKLBYu0A_{oHa zRr|)*m+g9s*#MT$FiLRKuo-y{$F(HX;6hdR{@_}$t^zI{H zjEjzONmq}w5pI#eC&f@70=dV@lL2(*wApsph0IeG%T!=Q)v)cHe>CGk!u^v z${N>>9J6Z3kX2(&IeW;EvmqPKi!}+ee$-nA%nQ86eYcKx!fw#4upXaAlsZ0eMEM$9 zcO4%%kMNrIq!FK<%rL*e`Rw3X*L<`ve>yz*@osSR{{iz5uW2;vN_73{Bd|yJDvO_A z&2aSvtoQ?{`)~18Ez%9<*Jd}vt^DI)H!n29xy9&wC*W&6q#JrUX@sHU!^E=z_#+lQ z#-ltm@_ofh=MN7z%Ht15d3l7b)8+D7>1f2E<0CMePQ8Q92aP#&yh|M7Cqy0J%fctg zbHsC2d>V;S{9KLkUFwzOZKm^wpPUbW_{sV4hj-=c{1ftz6E|UhoLQdpEWV?#Zfrim zyvAcFy_|`#T>g5XQIwA7Ck&GgKlAG4)SopY8amcd&e`tFTI7f;re_Yiqsg*jY6y+RK;Px&xtkmf{4Cqc8sZ^c}O zkx5XSV`pz|t~lJL*zPBifl@l&AfF7WdldB<0DI<9@cgmXL# z7rJoz!fKLlByN4|#|K}%u6gnBg497jD-U?QOyl34^|~kg-cJv0D$e zo4x*EnZBxjRr#M~hewr4fwuJr`xmcWAZ?0tHrhcIA1pGfzlQa$N!D~fb)|NfET(*^=B3b_)rDt9%FHRXn~{>sDT z=;ZIpW6!8cGG(n*DRZ-s#7Y*9^=dCZMly_KSKynCy{S}h<2Tb!^zZKL+ueUuSf6j> z7T{cVq`7%0y_vs%P|)Y19Kp(Jg0EyAD~rfdh%oYyaJNVq5u-AE$9OT;nf%`@FzI)i z)jT|z99g^DB$kRr zeEtY~~`>t9(ji7PyssO0w{e2MKa{ataC0ci0^wjR8?5%-U;1b#OI> z2Tmz94m3qG{Tb};4)`^%&mE0=j8r(BX^s9@AnbXrzBfJ9`;`! zIzD9Ugwr^!k90x-PvWG*m3BzN3%F(b%XdRkuf9KllPOp3C+k<-AH(T$91g8(_5F>g zi%hz64%&?Y`WWS0H_xMSy*EYt3dK;P}D1YW&$9??jMT8mqssiu&YdI!GAINeR zeK4>Ci~L79Sg@<_PuhB|xSzClaesjJ81efrU2}h8HJp1!#8^1o?iaUqFk`n#KXq*3 zGX{6TaULa_Gad>nTR3z+2N5a@4i*yOF+PtJGJ|U)TAjiNn`Vcj44z(h&>fq}Gz~Pc z++bsRB-c2&p*3suj1+0Rn3%Vrf^aIdk7mX4_BJXV)QXTA(7BeS87`Yfd*9}C3lD%@`s#6D@DN|bS zKK7u}KE1QEZ|`iOWp;1h)Oj6&R6vup@=d#EkL)j%PCer5+I`J@#IiQ`?3ipSES^0+ zb@qI&t;^4R{;WD&9ysGw>({^Pi~-`;@PtTH;5;5j)ZsXtq(Lw2Cz(ucbc=YZJIlJw z*pAp=i4U_M65}Tq2l-2-izBeFB0-ZhNV_FxUiu5p4edp3i7#<#;Bd|t@Efxo#BM&K z(KKQ_cr&O+z`ZyvlBg#Qt7sJ*Hsq^p`1EQxJQ82C;g_y~Cy*5=+BvcY-pH*l_+60G zbQpf16`Pubg@`M1>v6?@Da{9?b60Ozx@Oi28S$PSJ-s_iVd)DH%9kx2nVUPZ#BSz- z`7$ix?ww`&MQ`SB;A{EoVlA_{;E?oYZtDoR2@XlNj<}!Juz&}lISOlS%H)_wVTu&f7sfw?MxEFNo^D1(Cx#tS~ ze2Du)*ItieU*k%@NZ(s~Jxr3IhF`J;=(-~7u-wQN5cndABH%Hc%erzu*#ZI{alFML zyfnZ&=f&bZ9FFz~&mSU>9&~-8tTE2NgwK_0A}1v-+f`xnt2MbR|JX7fZ|SlYd?6pF zy-*ai*SE6|&WmVWxg}n#PXv*-5~RphD=GLrxrBR^v6E6HQEU62MN7{V;<1F^C-PQS z#`({+afXl+z5=h}lj2@)UV(G{S&W~<`8>xRzrgrurC$dxTAXW{!br&Ga!6kjjNA%k zL;ccr1eq#-bw>jJu&eT-B-N>PfoH6v0qF~opvQOY9jeOIfOMYI>k37Z#~zSI&>TbN zhC{wX`V!BU;06ftfD}qv`{lppZ2cqsfJs)*P1OABf zCsMs0h&u1lKH>_ifr#^ifxDgX;zq-Y=h)i=c)!ZtE>{kVo?PH@hb`o}{hYlmKyKd4 zTv9%u5uSLT_&WcUz0Tjk=~cjK-3qwDdic5(a9W=N?uWgy(hjXd0auaXNLeeneGVOu~934ET@ijmB&rs8(wLg82x3QG03HW zvf})-V{|=^^6ofa4yH*AO&G zjG+ck*xpESKjB;4uR*6JU}!??Ep9EXAPd))Sw2tS)FJq`1gD4+j>V9g}8%BqhO&hEjcVEz=i_k6*B^ZL!>th~C?? z)Yi7t)4kN*wj}uw(VL@j9+0Aa9rbfZHg39RCfPMq@4gTQWq;qEf%2Z-p5223d-~8* z(W4)sr#zzww&l06kEsg(fem*{kDnc_Lgm9YG$%cNSqfgdN0B!{`5DFKvoX5rGkNJ* z$2YMvVePXASDw8hjb|TmyxZ}CTFY0jTs@p5{~vT6lF7W6@}(6*_1fRjI3TO%YgZTTt9i6}Ep}+Rr6>1YQ@tuZW?ywnzuiXb zMvQ`duQWq$>7mnz!UV2O8>$Fg*Y19x27d&8T5&&7-qSVs(~dV{hgh}s|5t1MnX{`H zN=omqL7zG`3~jc!T*is^CbBTslLv;9#8!xtb4iMWo}89#c?{KCL`GM6=5nj3_m{#8 z*K`7jn?cJT%yiWmUezT;bKAsfQm#Btsih4Ocf(C5A$u%|5`ss*7RYF~+fFX6jsC?N zR-S+^Qp1+~VH=*8o*?a+WHI(2E!Ljwt#D1?XL=5z}E3ePhw?*6Mdwe-#bcbYWjpddboaeR_G^;71hcrc161|Pb9?i`3mDd;4NXu|z zq;s)vXm_t!r+LF#P;Ka(zG~yHYbP_4dk2hYyd#xtHnTmEf!I)s;Dm$|&==DQgIHzI z3xTUeaKZs_jw&Z4QwS)6#kSgU25bcLW3shs^n_5hK-};AspiR2lP4MlZ4g`3m2B^L zTo6;whW7Rik~wqrrcFoYEQH=QB;Hx3^e%2ue8&^-Y>qDW>>e06rLXUlfq~s%$Bb4Q zdkpi}%6T(4&M;N^6&e?wE1(JF82DsJu1wrXa`2!?ug^l!Ly zeDZS1jOJo$%xAb2Paod8yD#AJg`%G3EGfl@kLF?q9dJ*-u27k_R^D20?ojfW#0#2A;(;oPn-QH2h4OOm)_Wq#;e;7V}h+CWgtjtt3 zZhMk-jzH@9&^f?esT9X z^hMW}@~-)77Rv|bTDmqCV*~r=dsJscGh&i4ciM%Q^z44s?55rwecju7ySMiB?dWAc zc6xO!ET_$+?A7$J95HNe@+0ESuw-ebej_#7GdTdB{b&vTyzNOMiE!#F_+MBrTj1@G z;#ar{pZ9R*>{W0mE@t3a#NylpFtm2pSesCj7 zrO3Yw>tchOub!GYJXYMft^giWxx!>O8qUrsVn_9z+Xu3JIaLklAtQO3Z#CL@y2FXHaUDC*B!xoFkhv@Sk+!c(*=L|aEM ztIEMJX$l;gla5{>G=5(&10@%BP75*V ziwE4gr>>)`K3a$TS3_6pYxt0$L)ch)awFAbqP1_uWq#~&c7WRHnxP?b0xK&_l z6;P&_YprN!Z!jy@8_r@)3&@tLTEJMz-M0X*c^iXPJtAgiblV{# z8a4h(AJW5~aL|bO!|Cv`pAom03R4?@9WjhZR1b!QtQnBnFwfnNNn3;B4qQ?LxO%{) zak(FiouW?2=FnvBU4*7|f{u_S+bBfJ!OZ3JsrdmI#~yEe)SK^)?bz#gHTvlmZJ z9^TZurK4j@Z{Ox(akFIB7ki?CU8GP{7Pnr|Z&(3e9C035^Y2+W)s^gOjtJqjD1;F{ zfi+IQ)N|rRL!3uF?zkGemPo%QI7x2-f6Vsw2srT$0Y3^0N~|5+FVo5t@ZUN1*(;6O zp_MG)55sFHRye_Ftr6TUJ#|qSR7A$|A0Z#H3zAb&ZMJM(ruLgFoIzzwX4C7I(iGv0 z_O`c77w8+!Uf7lCn~>DO14EVH(u^@PH`?4hniIby5k34#G*N1eQ*R{kUi1d@ht>U; zt^ls@{1DK&4UB|m9=44~$k?+!MXn=m1b8YeN zr@s%2k7u;HIL{W)XYL}p8(SV`uarImZGfPn^*q~yOmphl!-$7bzkdXTdpWg_XJ~8FBmz>UHwSd@Uc=P8|$}HAMTOYgA`gKqaoA@vQpY^>r-K*U#Lz+ zq+iH!D;|qmF>=GUr9w&_`vqT{3t{AK)YM2&{{2YUKV^fb!3tLW*I@25F> zYI)f489vHA7?)dmm{=T#ehd*6#AtR2HbcEzNq&obtYf-47zyiEqe(QC>76gY+R#m> zJKmCHPt(F6>`?1};*=#?f3)FQ8(QJiBA`cqgdO&dt$6XDu|idcMV{SiR9bL4Ml2OM zv(4~5=JRD9c{^eXLx&9;mQlG^X5m0xQ2oisj{`|CQoayLg_b;VHK$0ET2MXE8XLOI_L#Pl{?T6?8q965O5C6nxXTwYM1FIF|cHG9teO&&+ zZPiSLRe1^2Z{SIn--do4pc#|3&Jl1Kg6@QONTpoGwRsTGPphUj*ZLu?6g$`#t-a%) zGCc{e8C8v7P<88W#fL)sb?L&YS7+)6n{nCg_E>sAcRF2~Kibemv;5-n0A`sm$$KO{ z|1DZ;t;>GL=T|}ZD6g}7zmx0Obgv?vj%eH#z!$KV?^<>Dvlj8UtyqKasNGGg@7MgP zhZ*=P-u#Q@S1^6mQ-A&hWG2;7V=iFSbTqDH^K!n94J%NRLL!Q5FUK&pbAH3=bLm0V z_YIf#^;N91{+K`F+b2nuFA#L%Z{-hMLUY0r5=CAFm*sL9xt&-Yu!F1VpvV$EUa}nj zoA)R}l4f#xho&omp$#qTHbCTnM{|)wk~-4UURYNXK2c|ygwM>lne5999vH4X!$pvu zA8&3R&sTnbqCgV#w;`73YfsRuEH0l-y~bRf%Q5*ZI~y9hkdGC~{2S#X@AdlWja)uj zrDE%B>xz7A>R%_B1N(<6M|pQFTRuL{fAQro$HgP{1~XOR{Na4wn@1f#AUg(CGaM4? z<~noIEik>@?EHG(cYZf%4&v^|95-=^zqmYrR!Bo2I5NsF7bEqrf-2G;$7fLmuKG@r znWB}4iK7e5thxVL$9;sE<^aQ+HHI+yNhe*CnI6Uj3I-W=0V_>w5SA#k zHGR#}BBsmcnGnVTF(=~ggT>*dpiA^}SbBl;YwA5#goIoql1I`Zdlau&H40d^-0Bf{ zCe2!4=*j)0SrgutF*5k<`Hpv<4}2os*637>G>S~TC6NM62|zYp3X54xaW@$}}Er>~}`A3+v+)z@F* zHaGQ!eB?JSKZom2v#evO+E;m#{j|9L6xP9$2VYse%5@%k8rJb1iY5tcAXdf42Os)b z#BW7ErfdBG6z_Qo-rIX?SLbW*dDtEWUH>w_PNSrCC~(F{S$$6Wb`AarH2&J#q-SgJ zryXx~$hG@P7ZmOM9=bE_wikW=kqysF9FG32L}=*!)#p~O^QcShdD0059;?qk;&=mJ zJEDEE>DOL=+HrHuwl8rFYV~#Cc@OD};^_x#z5X@!2(OIhzihZ$dgek}$Kvi=YtX08 zsLhJ}1{(^Gz!})_it+u>@rmj)^7Y4EC2Zae4WJbs0TGKBfsIp@KFCZWKRW4`v?q%P zv4yXl*cMhA)r-Ox4G9BoDlMa+zM zx4`PN?TMQr4a1#vkx(S;uj?6af?`VaNK*bru1$T2bNWZmfi7i3Nox|&$C7k!8rBbb zQ-kiQkZ$DVEs!Tw-22<#kza0N`Rq0KKC2P;MxHC66vqJn~ zZ$tOC?&RoD)GKNJI&Wk=7b`Zf%uu#*xGUMWqq}_mR<+)*NP%>oY1#T@I^ywK*;1}! zU6a~S=Su}Vk~dzbrR(c55uYcLDHV!S*;c}g=qpK?J8d5DM($hZaQQSFo(ES39P9mI zWO03__8j4vo^wl&P1IWBUR;9a2+E&%J+cbuT^A8vYR^2!HCNFC(mg~=N5@ING-1Y8 z?j?Qp2-j!D-K5Wo{yuESx0^6)tM7jnaGEy(uij6(2;g>~Xg$|M7h9126SY2(7fV*S zo$V^51#-hlYG6(Pp+?nVYNL5Ov#qOkpmZ)LC zr6FODiG$5buZOjqhlOabKa7d`&m9hYRMmBfBw*Nz{ZGtivm64K4MGum5ZM|q_Z`;C~Tf8^Bh7w@x+d;GxgucGG3i^CXK>cg(-LscgGJhZK(&q0|q=%Lt1iexlXRo>Y z+4G4ef>^a@tZMns%d~12mtSDdNiIb1S7+wbyjY}I5MtPO&FCeE&b)+J*6jG?j3v2% zgl7&NK75FAr)lMx>Dk$7`cC~7t9pa$XRmPR;;n#JM@hOU;C!?qn+We;_1wz!s;(;9t@dN(dR12y z*Q@|eT4vA`s+CtD9)uDIJM-$|bfT>{ zw&=40tLTdyj%|^)R66W~Ta;&|wtaP^tFgCG=UJ4b6UmOqvAnxJP@k)hrxe#pwu=}q zvR(KX6lAr$#Qz@!yIiX{Jw_e-BNEGE6zWvN!+mElYAwwUt+ax@eO zJO3_ng|AKvI*-Kv4iYqKI=#-y3|@%Rv?Frm>v%hoGw<su@YjQ-iy!A&j1BS*#ylliEGSYTzt z_QU;#>aEjFO;O^7rNOy)Low04YmgPWcKhh`Ow)LdC99m1dPY12{xLy$Hs>TbaYKT; zr7AZhDDgc3eQ3MjoCGE5FWPw6-j7O_h42ds__OR^mVd=L0^Lu1NWdSlD@6$`5&seJ zr;#%wI0)TOyn^6}zS+EjptPO@lvWNSUnBdxvv2;w_ROxv6|Bc zJKI9c7Ag@Is;y(#u40QvfvRdoE??H9%HZtm;K1CRRo>V#ytk`svCG{x*VVkqLPlH6 z=?S9DUwL;Q(>>mx>Q(zQ4LK#Q_stHMik*FZoyF2j$NKj2hJ4d-rs?Yb-iAgU^_X-| zG#|@snD}!r=-0GZV|y}K-@(_h=sofKCv1xPBx=vyJwB7; zRQPeeW4#j+EiP4`A-(dSfgwCQy7KIKE6+}~;MqqUXFKkwwS2?M)yXDYecG|t@z&Z^ z%7ma^;=Qxv6?qc-Flk4c7z5enbQSY>nx_W+X$^Yx0QqA0z4BD8rK7v}Izpw>gZwIu zp!&?p2v$G4ZROc*^z0*!-@rRmZFy|v>ORVCdD>Co)k?&Bx30SS3?IQLw20~merI2W zhpvw*C5mxxg_&PJR; z%%QV}pC>M@VOS=uRnR7&nAu0ML;H8tXShE}%*vBPGHSP`mP@E%PTuZ1oNh1=Idh_~ z3*17)h-uSFUMLd8J;+2M@xEeqg&_L~1ocW`KNvhXHhOSq=-}ws!NE-%M@E*GMn*Qi zSBtsS4L7}c{f*n!?dvoRBjMMk^TYc}Z3iw&FM5JL9rE7eVH=R1)4O|Uh-z+(4$sXE z56{ki)Tebx2R99!(w8oV42yObC(HTzo<z9X}H@@V3d2t^_UF09y&mm(& zyjQ-1$0_N()%F#3fZ7-B;!wA0zwln_7qs$+8D*kU6lb$&Pr9Jmo|Hb}e)N;>x5tTd zpljniz}u4?CQc(9MMcgAs%W%LPz%up-#kHop*WHVLZ<$5qnm&8-8;%vej;FtQMh z5b`xcda4x2cDLu!T{-r5#ie5VeCxzSZ!Tb(ffo=#541JK%lV;!p6-F6){b@H6k+x{ zwt#)6MAa`#(QKhG*U>gxD9pBX%oWykwG=u#3oTtzbH`ju%UnlszO8M(*fu!WRu~w7 zmVjIU_+(|W)J0A}HL;461DD`52&+z;0RNDL+1GmUV19JUDoG+qT041BbVj7IL|T zQfVQdU-0d}{j76t+rR&|bI!Vb|CZ_NcJ8`vYU;XOJFkO^z>wYGz-jScpuc=P&|?d5EdWUHR9`5N~7_IAX*E~V59t-#)Lv z#q{b)^j5`0+toBrCv()2SC{wVb-rn(U>ev}LCbi?$*$zc+NQ^SY#gnid<5nr>#lqw zK&ocU(EaSaUd5giykT+Yc~8H!wr*Xk4#+QjK`IzFJP&`aO;NN z;!F;8!4iHZt6`M=jCdc8_`=%oS?d-q!Zb;aGUjX-WxTzPGCOc6Zs&A&HeZx?C_|Rm_WG*w_jtv)0Q@*yvecf&6 z9X@MIRD$0u;?f6~_H=pbx>C7`Z5^X$kFU?qw71N*wa&E_rdx@oVfzvGus-aV&>GUA zN-&={;y5NCQ28RKi*rrOS^2#yB1cdUO@h-2h_W(P37v9U9Un+F?QiOy92{(-@L<;Knz z(u3(tIWyDWKXdKarrbn6H<8=KPS^ClseJ$5e*Ej0?$Qi@+i1R@glvDyXv>?L`WqVh zoBF1vDzW)e^I$qX*j$1-K(q54X6GB&h1pA1C`|*Vq`H<6$6KXwosi~f9XC7uXDkF_ zM&C^9?lvnDV%>G2LeH_|u6x*ovE>N#_g$Too#8IYi*h0 zzHysBLh44iygD8G+1k+G6sTzo**To|W7dx6n>DTR)9n*Y*@=$gM5bw?y(yn-Zp!C< zU7NdmHg|Px?&;p#H9pbPy>4B1&jctTjng;2$Tn0dArDR|Pyqgh)fB;M_@HJorRWN{ zbi>@H`tZw?L)w#Sz3htmO<%XdSjeb6uZ4(DAzXzscTOSMNSqfuvBoE>Ew9i4I25q~ z2$*eJ$fInsTCAv%Qk<$s4>p$4&0SV3V@|t{sHUl!s5#`>n&?hoCt^_X1pUE$5>=BD z?YZ!*7fuFp#yU#CQ9avK;|i-4Ie{Pead@Yy)-T>~p>EzPPWi#QPL#=1-5!rS5lpnC z<7!+F1ZCGb+U3-bw`2UwcQ7bNlyq03dB~^weP#gV=A404ofY#+Ea-Qu&Qm>R0GV8x z?%OHLZmXlAsV_-AY{beNW?Ss)naCwp%DupVEpG`~He>vi8j4*de?FD^xgK>o->H~x zBV@{^_I%(LgC*1 zt!gp<-=lIB_8teXR3njiSGKhuDhg5UbIf47P%8^ozo1&qfidZMNKQqJ_c%@I-T87d z)ic&umoyTE33r!1l_ZP-8Z5zk3!JuYJ@^DXov3INmX3IcBESgS7 ztTeFE296YF3-E0T4oA{ah)G^nStO~wA`q6P%l+?Ck&t(rX-U#$&Y(+IU0&ylmZ7Oe zOsB72101e^abz%#6!vNLS4RRjin3-MDtQs`U#<38t5m={GJ~0D+K{5ThEij?ub~iO zsg}$@Hr$YkMC((LcsgrY*|Z)H~Dwz^c#;|X-u1OA{D3ddsMkoEqQ z6-^{i69rhN-X+-18kRxg7CMJi1TkhJDo~jwl~;A+jsf_(wYL%64HxtE04Ij)x6K_ zVziTHmpQ&D-46)*%&r8ahh50(q^|>lKC=q}DdDMl=}Um1&-|%IoZU8zo#?#J>@e=> zW@odk^m#zgXLbo7^ezKFT;696X=4|$F!pHkKC{blPk|j`8U8NxnYT=k1pI-#&m59s z_pmWJ1xO?A`5K-|vu`@SD8~SyK2!C;9`+ShC)Wc)ef|m{C7e!HkI0wkGv!M(visOD zhXBv)tAKRlB(W?kLeb~@0ZFmDQ8hUU2=L6`)yBTa!g2r*;F-5vKz}m)UDRi4nIH-N z6!6R*zzVcbo7aI#2eA5V9Ybh7P%eg5%gt^J1XW9^><>t$;SEUF1Wm)|KlWOKY_ASH z`!VT$)SXG=T&64GkD6Z~8!}_tW*y7Nq|dIs&b>@cxR;*q!S$a@U&8ZQobq)sJ%1TJ z-^4z^uMglHs889?TcZ6ET`#aV+Rr0$v-bG|;`*of^$tA$3x2&Bdgvw8{)OT?qBnSd zAFh9iU(Y+dI29h(XT^2AAGo2j4d03S2f)o$WGcenKs=cw;lYSyMX(lwH{x)- zUsBK$SYxne*Yrg`?)N#hzIkfj*t_Eq^bmcG#4G2ldR=!1Q^#(#>g%n_fx7Rk8Tat=6592OcDMCd zp(u?Mh6u&IX^x30)104o(stQsUFASDm5Q=k>%PPB%3G%%1CQ+c@Xxf8Rk{r=)HY>7 zxq=ZS)CbP#l}vwiPqTI0aPGE(?XxXNW^SIa{PlWJR?`Q|qi2pZ3@oAgvWT2hLd6zBrhHfv}Y_jvrbzeDtz_xa4=FdeO^67;kN_ zIr;~s5`6^*poc-p?ssFeI!Al{IOMPqE7&&I(mauGo{aiZy5UsQrw@!C8g3X^pl(t! zG|SOK;l%hLirO_zh;I74et%leQ#aez4`yV>2&u=bU6tBDwJ92daNBfrJ;q+^Mba|O>Mq_ zjw?0>KC!}D&OrDT)tNF%Ngu;Adgk8_>q0k9{Y_NbXB&=lBMdp zn|;a^e~spo_d$2mP1XP6?Ow0WYrB_N3+V0LPPcSA-=9`+JOo;L!tIt0^7w+?Ph3C5 zrHK7j{633*BlbP(ID`E&J^$^^__@U9mOsP(#fcpr%W=nMjI_*jwgo#x;C~@r4lI*c z!3sP;vFk<9{Q6zJvcxVm#;Y_le(WyzgTEz8>_yV|kjLB7K>x zF`OMBoD{Z$rdo24(8mUR-mMo63?1I&^%P%MZ<2zJ!qKv6g4=bhjhH=!hylV zn?3i&0zrSnio}1}A=xEw*pgz=Vv|b?g*10_M})@ELM2S1Oz`x>c35En|BMrCiV( z^99k%Mri(T0S2IBh}k0)YKq?$BpVQrwwQP1F4Sr4TC> zSyvx3`}?Uw0d#+9^KsobTj$HN>l;z8Pj?2J`wM%A7B zg)}vUQS5CR=*WfXeB{l`>)55>XSTgaIS19w@H6B1D!P8H?7hjU!OF&*|C`u7#U|DJ1De@`b%01p}Voa3|7S4h8twj!7= zXuevF2dV%tlgVXPZ;UfsD308UeR0x!YM{0o&JSOMy&Deg;(d-!+U=fHkA$Lu>HFmB zc2_psNr&qPnghWgWMfoUX`3Ai#x-_h9AQ{dpJWfhZg`{PD;R-WdgC8y+&RGSdh}2F z0|DPBba?&M_Zc5>2izgq59*VMDyf0@>AX2Q_dCZv#?Ir~Eqb?&lQVCQdWbHH@8iyNgQ>bEJ@JVAOa9$G z>4_n2>V4@*@F($x2gM&6E825>gtxb*HMG!Zs(1=5RG;FQyqbMdO4yj3<(Qo1n7o?Z z%i)Acg5T^Sc-V2B<3A;Y7l85g{J!fPzvaJgcCE)~g3I4SotV3jm5-fNwk+t0B0JJn zEJ#6uODUHD?|=qhRX{{gH@jpto0`}3WDD-~flV89_$_rfEs?d+(d}7Ox3~?Q(X>n- zJqDBpcV83x`1}?o%VCw=eZ}_5DT^D}hr_xNl0t@#HBMUYe)$843vF|piO3N2Sxizj zM$cVbaP4s_M0e29s-{l5aEj^(^mFwNi(%!21|k?uYR0|L4|8^nCh5+`p18}SnG@@C zEmMW&$z8qWId?QFnK%H$+2N`WWkxy@bFbQc=BHk@(6s)l?d6T54XDHDYizrC`=K}O zY2Eg=`!Bxq{hPAuPN_W5INH-7`6GSV+*q5{TShI4(Ln!9W83=9&O^KVXZy=HtD$JL z@@OX2v*oPb4VO)hTz1EKgNOH&jHK>%t1%>R!3jFE|S|72s= zL_^#3#%y;#@B%-z^lsp#!Ley2zE?&$DOj@{4>ndb8Hylet}S*!l48Mt;6dw{M!FyA z=>p2kxr@fLbLH~-;oPR-;oT!S=&>kND|>pjUdf^!zjN}k3(DESOxK>#xidq|6$;{5 z*YH@+z)*8J(Y$^8`Z{cj@lBpRSll`p9xyib6c&rE^Se6&S~4_n!LB~PODgR@G+vmW zZAMX@UQ~|q1|nWpeP*CNH8ok^vSnd3;xYU_q#lxY@hegcYoWuguZx|j;PJFp(RGXu zeZ~yKyGx>(7$5Njigvw#qQ#eJ>49urhewfoN*D#1{K-sYV*7br<*N_ehrm+MlrG1a zVxKCM>w^JL4Ckggok}kKcq41uzqsktmY{mFfNj_~)M}NucS}e70 zn+l4HK9C>_4%5zjy>z}2haxIPmY+x`dT$dUfboHP1s`VRgJgvX~ zv>P|9$5E{V9a}D(n7EMYfQY}R_3a%Q*jG*|DZfv4`~0xbTgI~iuiNSK*LyUWoK8m; z#~nWk%`eBRm244uK53LhVM5D8##?PL00GMYL9vU-R1GP9;!UUf3>T8RVLYc*bHWf$LU~&k=X9X?9lYA z$p`sN>r_5J)!IIl%TKj6cXl>6b#}7%pbSdObW6)rOJSyExZH%nHD}9Q2NCidw#%Ei zZZ*5S-|2;EPU+d zwi_d9E8R|(eq{?aRw3z1nK5X!6Y-2MNgqXI7XA`gIPjKXQWfDaA<0?l>$A~HSXJC` zs}aW)lz>}h&hfY%5eZ|f^d`4Qa~lncOVhOm-I<&moSpC9JLYW7Sy@#}1~e%Uow_tr zO4X-g^?v`(%{fJOd1V|TuEiC_^f6c8xqZd0z1zmR&N@(#oZH(wf>@+}wJ{J*voq@^ z*EQA`5-rg?J)qq#L{typEMMUpISwmCyS3$-B~RnZuUl(4+DJHhj8ODg?VEH5N7DqM zjK!LuzlP_4);m$!t)JR9G3 zWP19@wvAWMIhj9D+3S`XcXW)M(X4pA0ax+d)4=@GJ3BgdG)Nx*#@BAydeg?~Yc?x} z`wJ3E+GYAieSWXvnHpy6o$q9FwxJ;-$?r!7i_-xgtn*EfndE66cPv3-35i+jT|T%8v1g+Y50uMk<*8UP9GUPV|X)oXKu8qX*7qj4KGgeW7F20 z6Gr(OmUKI9H)8Yr^FJmJ4I`~$@~okuvnJc8^ZDs^{>jwZv1+SN5UU-!cI=x)Ll(nsp2-0&@@w7bb#Bo|wEv*t+8kmvVw!Tti%~vSOgEbsohR<(a;15d$_-S=(hT5WO1&f9y{U+* zSov1n08-7K9lSQmL<9RwW`u?@oUBaMS)zC))wYa#QMJd@w|97WZwX#c9FT|FmRN!L z<*TI6!Cx0db_cTlxV^CEoFm9U*lKG|KKdJHVZ9M{vJct*!h>$}ZF}9y~ItR<72DJ&`EBX($WF)DVhRPAC9Os8(@PXBTN3U7eeX zvvr-x`eI#Ou|C;ZM>ZqsUmJ3p+djKQ`XJ&xVQ?ObQGN@YrxBcajH>xvwTfb`RVS!| zbfL2gF}-HkHk-Cx)@xb#{e`(U93zt*Xm%y2nheo)C_NNPw#DLYb;(xCYQ2C28|$af zn~9x&mOfrr+|q;cZw;kvk~ukN&(Y@`ix1?dQ$6(!bU;%>vN!b|C{ZCeI87-XhF=Ko zPIwDshZlC%WzaK7${@IiF%eI}JkuJ)q^|lET45qJ&5+ARk%v`dHa%R-Pta%O%PZeU zr?1&p>e+i_u5(XQ&>iq5wd7Ru{N?MWFQ08*m(=RLs$xV3$9_YV%_Tbj`j*S| zzh>J;XuHWom6qqO+qUcasc1xT28^snkMp|welQzk3}Wsu7I+2z^6ylQp=0?noHgAJ z=p3Mm^g*UUAEb&g;@npcR(Kuq>v|zgxI}ZeRVRo2w`ak!?cb*{e*cXhBscX(*_AJM zG%R~Rxv92?lhSzmgQ!S0SsSp zL3-leTn$8!M>41k28~l|SePxVa8!pvl4tDH^ZwB^O*ZTec=V9pSNWR9o5$}EYw-pY z!;DmZ?(zDNd3rgK#Ibjzf>}E3iAhO4KU;3RFX0b)f21hUfH&y=vD^KQxIgT@Us0?; z*#8wbJo9v(Hl5>=#+<`901by`&K?BmEBH$DR@G#X#=LD~DNEdK?wZZ0q=iuZx^;do3mr*Z-S(yCuwa*H2Q97wRgX zifp10Y!9(bjWYxrZ>Zd5J^PYFc`K6Cf{LPrbZ7@xYsk*>`E+FLxm=%n`LW>~C~;Px z2ia?F6f@c;_(^YX=)do{E&6P_xr_^kiRWLcmlx4M?lckaV|9djw*BS$_8Th9$~9+D zENDP-Vg|Tva5|S*@Y7U#D(pG?mrW$uDwV99rU!Pg)-1qj$qn_PNV+Y01!4P*a7az{ z+{{Z)V9=1XQdYD+y0hg-^)wC`dd#168y^NBYx%cv1|TE=LBJ9 zp@Q+VbV#-%zWK7+7gxznJZlGnfbS&le>L@=P19%Po|W$-bOz6_HJoA>bN|xq(xTo- z;Jcv*+~&=YzF{d0G5m(wH}=VspUmSA`9hVS%dE-ggWtM`F~?`w4aiKY@;BbMOB1j_ zJEaI}=Mj#o@2k@OidckYzn!}@-b&Gj zJC*;$E=8-ywRs9(wU_fx`)M7k5Ic?>H?zC2yNTzx@tImx1FOtWTf$Tz!HdN8Zruv7 zR;0j01C^hu%avdFElpQhCJ4RyMSTX1NJ)vZmysvD{tTp^Y83Nfn_~<4~7O-tXq5(TiNr{C~vj> zcr34Nm;XWt4&p&9-IsV#uN7{ zsmxKXkyu~lW~-U|8W7gATwLaos&_gn#RS;ta^<~VpQU;XFWco;eSyjy9%FA@^J~gi z`@ZYe{YH#=TwisE18PXQ->J|WQjTrNryHj?90JP`jn~vjXqI{L7M$V~^j7YIi#Wix zVlyTVcy5-m(h_E~+JhQZfDVrzb8X1yaVmKWiE_UuoPjnDodQ;`BD~XF5$Azek#UE`kGG%nj@k_<9Wp&X5z&H7 zHUoMjQEaH2o*R#7I+KH{7LB*nuely8rup@h#4q=f z#NGUYZX^;`O9J1Ub@&iEX=i4Sqr(1`y$Nyem+XIuXAF|&volf}>c++l9N&iSMT^-; ze;L1Z{`yXII%?`cEf|l+TVnVg)af#WFwcCrv04{CbFLrP-CcZ!BxZ(ctONR?;(UZNth4yREwL>D`@ z$T}ns9#>3}Q{G$iaa1FHJcyaA`Z;FwsK$PzgK=t=qW;U$sdI(=?Ee0~Q|AzA!Qagt z2toC1DRyr5S&03x2ehbWXq6$obpfHe)8fTI ztm~|AD8`~KS@quTDPmUkhxEb8+8NiZ37U+%;8ynkEBZfMN|bmazU{= znS#%lFic4sI}pVwlTqyV$+fw+7&~WTg+wHxhSa*|uxqov`)nl?3e~yGdG;Tt?uFA2 zX}PXMd!o{O>Rx&mvB5XM3j&MY-em_b2A{QRQWP*knQ_&bvYi@L&0i_vOy@C)ZJoY! zduKz>KwP_#;v%=HQIBhS>+reLQ|FH4*0sBQ5%nYFVS8;jKG5CJx&1QffsU<*r~1x3 zWvL!4(}-cqb-=y-quYdszkJa}18y9K6XIurrh=W5dgZZ}Qj&T2&y8f-j(WmfO=c!8f8K=F>p~>zd1OL-jmM$ekl70l zDmZhMJJAwf6OD%1{F2v%mbb!d?=DVev+Ih*$xPE^d#)+hoNLaruXRi|0oX~vj(k%t z2Vmv;Kup0-9|IeHu+xX(SSp;i+>1lA@o#dbuQWT?TbikyeNynyar=TC3XRD*wPsA) z9B2Hm#`S+cW_Ha<5OFNOX3Nw63=xxm6ME<*z!#;c^h(4$8YyZH9t8U7>FNls(~YXL350+C4Nk2pnEtvv4c zpXzk}#wq_l8ULIV?d*~^uq{-rNO~L@DO8i?OkSs`O zZ>zx{K?NzQ5Hu!@u@A`u1P?sR+y69bjbWFYG|aA-w-UTbR0VQ6ZUhgR#9pAC(mh-= zg?>eO2AoR?jb+s@)@;QRmKBSA&!U4tVlioVG@@GJNE9FV2K=G`9Or~Rs5A0*=`(1P zYeFk6o`GW^@nl@u9FAxa92|lVaEwN&2fGg+puGiHpO_pXNufWW8@J=Q-5q{Zl|#nL zqF0l86z4hxo1a4gWrxp4b~ba&z*hSibT82Y=3J;4RMiVQ$6iHukGQeHB8*-A8by4)xZnw;Hq)02X_0jwnwtLlpH{f(l z8g-Ty^o-%~VIM5VUDEBd9dCcE0I>SO=SGi`l_aS zqGg~f`{6o$+>2_1;f2%sSLR@$;e25!$F@j! zi#92E&ZnPik76c~!vE#$aNh0GvDHEG6zYfZ|qHx z7SkhjF}L(0=l?XPFUjfNpX^Gdx{}H6`ugsqm1>Aa8yci8Y&Awy6%kf^=}kqfWYUVD zUFa3S?zNy5NP4u&JIKu_VTPcql(Hb~tS!i-a+TU5`D~-gt&k8*6RVIibNLKP&B9EP zmg?e-ttJ#0q+Qink!;koOepEdq@sD8W9K5r9P0nJOsNkkZrCWlBb)twHY?4g8yjh# z_c**Qzn7lj6%1>NH6|Uze>^?8-N5Vyy*ZZ6L%~z?)7<_9=$melMKhT1S zCL>s3ieHJR4URSRcCcttq*UJZS3f2Ae z1Zl%7T=QTIj2EXdeQ*`iB`;yzP}g}mFlN4;j+daVj2Fa>g>D zSfW-zl@1tgq`g+OkG_5ROT^W7i7Ce*!RjgV^Kas6m&_`@0JikG7bD)lg5q^6I4NMB zx4f5aTYiRUi$;1<{&W9J@}E0WAg$xr5B2sH?9AnRXzlJ=y>_3`6_mUHwN0I(gix6RkY-x=ddWi2vu_Y~jKg@sIk`%um;lFLUh~JOe z_j4(S-@mqhb2)+EM;+9kN$D`VlSd?pvr&Jl-ndZIGFgOtVbWpvO~T<|C_?&A8}>we z3}@)LrCa#PF}8HT@5lHX>^&3CIq4S1H*hQ(j9@%v^LyO&xZMxVsqy;>{@doT`2D1P zo%2Ebev0?AW%(kV*_G!+O`pqEu{AiWTYYP5>+ftmAzAOD-YXGMn+ zPuR=i18%?TjJT!yOl7y*tw}#|$~_vkGI-tdSPepl>V>}WD|r|Bzr@^El_;SAZB#Y4 zYq!VrY0$(Dx&qRVH9YB>cY7m7AnfjeIxImJ{fJ#8ALLnQTw<+lqZjL7Eo5uR)8|4? zGGd2g-pIQ`Ui?zEIydyCi1Z`VuWs^cVU$|LRTSDG^+`89D*eKkTcvZbqxcWBzi``X zesBUq`1~%v;endto=2jUs)fAsZWq*s9PVya+G(T4}xE)-*%+s)hQYm$3-;d9GzV{AA?kLIy7AD8GAL5)7X7b;UR;!8idZsUG#{(EgHP1oSAsp@El_-Ga zTq4GqbzKLHL-c7{U>w&8t%`41cNoX24q%+(LO*BA{QYe{&>JVD@Oeq%tS6uYcQx;!9hc^A5Kx^=|&F2 zjZvKO5_^5WimESYm`t6F>LwqT6*Ic@D`AobhN$|LBu|k!IW>LL6>%^g8A7;1V{>`b{BJKCoZ*A3ki<@OA%k2{CYp5WVj2KWa>kx?Q|A(;x#)6zJv=_c*93xv>+o^}5G z)&=b^&2v60L=OZf51ilDG=G-u>dQfoJPP|$(s%j8mTPb;q|YZJa1~mOJ)-Bsr?S6JeTDOB4yfTGR>kBd|ZIUxYQYiLeC3 zPJ~MqZSdR0W$@RC9q^x*NkYmLSpmN%>`Kb15;U?M5=!}J`3U^SSNsT@Kor;36c zaVidQx=M$?Row%ByV?%_0re34$JCSXpH|PnCrLF(dJ39$LK-R&A(Et*@@xr(4idFo z1C}BhmZamA2-j=|tcgms&wwo=Q{8XCR*|f(H((p^^9?uz@K6H|4T7DbuZlGAt{^x} zW{PhNe7GnVPZ@AhKpvQlOBm@&DIDSsokj-9DK*e+H1HOb*g6BY!n#)&uuZtd6a%&g zWR@YqBl;QmP?0TC4cGxlh!J9;m@TG>xnhB66fI)9=q_qdbD9C2D{Pc#67vw_-_e{8 zn(3ff2+DKu7=o~wViv5$&*e<6!5jkA3@_ zp%6J~Ls~t=Fwr1}h|x%OHo`o(YejC`0gVDQ1JGjRzYQsP42ou4r{TT@^pqbD@!W#y!d50glqGhPDZAhfX}K-~YXa{Cd^3x)^CJhJ3nZkaiX$pN-HcN!bF3wAKQO zX~@w$NI)9W={#ciIVjI%4@jychxy;Be z$qw_+DyNx7sV+o0`}Nv`wd~hy_j8s(k8`BofOu3}n<0B4bWHZrMUW*1Y=`nr7TyL6 z)9pM^H->V2%3J0+xM!mMC??I_q%jh1NONrPjBshinnHNwzt*MYh$p z4Yr$YTW$ZcXW9$xz3dJ4$@VSw`|MBH|7L&H{*L{K{kZ+N5PL{;h&!Z9NNGrO$l{Q@ zLmmlvF65U`YiMq$H?&Xaz|hg5Q$m|VmxQhl{Zr^G4woa*F~l+6G2JoWvD~rVaf4%v z<0Hqnj$fU2=K$vl=T**)&O4kBI(ItvIS)F&adx;Iu6S3jtK3!N8tR(hn&DdHTIbs6 z+Uk13^@3}k>wVXku2W&-!tM!sJZx9k{;)$~--Y)MZwucR5f(8uq9tNk#JY&%c zcQL=khQ!9kj*PuL_PW?jvD;!Fi+w)!mDqP;kHmf*mloG0t}L!P?)2cgGjT_lX}8e_{NL_>1E&jlVMf&+%L0?@NeH@FWx^R3+?A*q@l3 zctK)Q;>C%VCSH?xQ{vr;-zJSsnwr#-v@B^|(sfCC~G-YJUMJacte305JwIOw6>ZH^;sf$uCOMNc& z<7^<-LjT2fkeT933|Y4vHt(|nfY?&TbUncp2!-Mbwk#ctoyQ_$$B~K-K-$$cmHNbc9UKj&HUBJz^+>hnhA zP0X8_*Oqr_-uk>7^0wsNm-l4ei+S(l9nJeG-J><^B>Ots7r1a zZKG*e?t_Qjv?)r7tpSx+@!n-AP+th7awp@_tcLS<+r|Y00{hKbG8Ba(l`4lE+GRl>DP)U&%Wq zhf2OEIZ^U!siicmG`=*wG{3aCv{z|u>5$SfrISi$md-C-TDrP)OXEw#D!r9em7^*z ztXxp}hsr-y-cosI<+GK4uY9HQ&7QJnkDjZ09_V?xS5B|)y~=v^=~dtB{9a>vUDRuK zuZ6uX>-9jd_j-NW>v&aS)p=Djt5#P1q3SPHw^ePcI^O%z-rx4|_IajnLEp`Ne?2en zydLNEKdzS5sE=RL$<%9<>{5Z?AozPSpLS?w9&L^&9FB zG}JfT*kAR(qW?Do1`e1!VAX*82J9a2%fRA+69;Y?_|HLVQ0<_#gZ?%+WAK>43kPo< z{QZ#ghpZX$!TDk5pLhP^^B+3@)X=^|?-^DxZ2qw2!`2VGVc3>o_YZq&*zRGk5Bp_! z)Nt?cQNuS3e`fgSBcez288Lgr<`EB%_+n)C$YCQd8F|CV`$xV#^23qekIES}a@6us z8%Av%_28%{M(rH6XVkt?2S$B6>Zeh@(T>s4qmxHxjxHG8Z}i2ZZyEjA=(k3n9MgTw z#4%Tmd1TCoVvxI4yeANTgSj`8v1 z>G2K^8gMk4=Mg(!E%uYRz9d%RxoLn1!+5TzSRq%SN4Z|!DsPt$%eUlF`IS7OQdD)RrR4}(Og=D7Okad*;>9J2;jVD^ zagTCe=$`Gq*nNrna`zwIe{%oDz1jVX$LWdm#CeiEZcnBs*Hh#v@$~Z4dFFeTdam@` z?zzje&2z8k0nekJzj~hWJeLuZ5ucHnk(*JNF)34J+A^Mi-SRW}r92@|sRC7G=HywmQ|(djYC^LiCsD{rmX@n^ zH*yk!mMz+y>h`#^-39JKce%TlyT(1iJ;~kdUgBQm-r&BTbF#%_M^2(WiJnxC$H+-f z&Plsx6>@T?XDf1YpXU+e52-p1 z6Qut-s`RTbv*RP5#5gGE=ljTa(09Q1x^JIvukR(_KRQMS1^zDhapsY93Oq8+PjaOE z$hISMj*L2DIlK@5?MLhg4LgF_3Ly?3XMe-t4TqN=zW4CLL&p!jA;h5<;I_d%bm-1Q zs}4;S;=^z|&l-q5pg$rFIW>=#35%)I8eotO+InpRaigDhwYC9cmQC7L?Li$A>}&UE z+qH+aXS5yKPHh)PHoLVw+N;_(+IJS4CDIaa@mOf=Byfc^mUk@&Ek`V$1#{40%ezc< z!16w*-nV?vnZmLkSi>3gd-battu9g<)O3uq4ycXlk7|ips-~&uP%GxC@v2Epz!+?| z`kVT@nymheXZ18ZJLaHPHHiKgGmpX;ULPwi!n6D~aj)1e9u?1v7sW>y-F+%P6W^)j zYKFR0y`tLHY4M|slF>3rX5cx$m#mfza=e@^7FRL+XlG>)8QunH7)NSfU^{cu`MPmkJuWC^@YawcrdQtUL)v80it^T4K zwNQ1Qicx=1gVaDZSWOWzXe}I=eTc#=M2g4|eNmrEG3K8n#)$D^g2=;+#Pt}TUV-Q8 z4eEKZMZAu7A>(9`%#^vZyBvX$>tK1lOqPq}6>_Ou zF8?Ces9l)1*e#!vyW|V<1GGE`MZ9#Nt@=qMNT*1bF(OMQh-{fCJeVoVmnot^rip4< zB8p{}=#BZDI$4f+ooq2k_7MYQl^7z=6N6=6F+$dfVX{U{ljB6A93#fcfnus0D<;bR zVzeABX2=W0EO`-Th33jBqD4*<&9YIn%IRW(oF$gXW^swc6N+q+^TcYoSZtEliOc0O zakKoR*eY)k_sK2d0eOeGU*0YrllO?Hs17O%>`iFf5|;%WJy*e#zDf0S#*-STE}t-M@(BR@tR z&CqgCPcads<>9$Pp}o)5tm-$kl@86WeClKM31*7EQpeO6>WDh5zE)qVPu1rlQ^t#~ z(k;5lbkPNKkF~N))W}j%B6Gy~vY!|!>&0+cD=w5n#e9ipBso*elT*b)v=GbX#o|)g zCRWLXVwr3ecgh>ZUGgTe8S`7W%In2L@-Fd++$x@t4~b{x!{TvyuXsYmTwN zu}3~D{w|*s2j!dMeawS>BHt5-qSHzo`KRzZ8i?8G%@wGf6zLlS-5o(kgt46AE>SEQZ=A$28 zudY;U)jD;Bx?F8hcc`hD&3jngr|wq|slTcR)syNG^{9FRJ@tO|2Ku>Y)tl(+{(-g( z*%S_W5c80#u3^Y%`CxNndkeI%LWEXNsQ1VTwbi3Nvb=UA{OG~e6FlOZ^M?)bh`mFH z)Op0#k;BgSh}D?f_J~QNM-KL&rxiRuOq?;V37y%Xzeuzm(P&9xMVyGojOMv$BK`xK z@c)1&>_4D!{RcG8|A5BvAJByU2Q(q)pb6*F(M%n7)}RHUq(z-7py|$3iH(iT?b17~ zaY2*pHf`Fx`O?FFCoBf?F3+J_or&`;lw}^)q%x;+>wl7#vR4ndVuyE=Ev3bG5`3uC2%bMC+(NBmw2tMLw-fNYq{Oqu6(_p95b*Z~vzsOVaSHwRpJETw1GKf-|vM8&vDZ2_$p_tDH8sh@!2P1-h z$f2LVL>@8QkNNvJJykeXS9${H;%h@t z>{O1epl_Rs0PScM#x$dW$JzsYf8NH6E^4NlrDj75&1#`qq!z0cYNcAGE>o-38g;F@ zPF=75r0&Lwf=dh2!ZFs4#ArKOi_v1WI4xdF&=R#IXf;Jk)zUOKuY(|E)u^VTaGKN% ztYOSmbFpSJPt6lnY5^hD5_PEv!KmgM5w8A>5mz+&pie~%`lN3~qB^cliVXELR#)X!98)KQt)$gb6BbB!?aQj z2;yqFXSrt-OqDf9*d3EW@ z2D2d%<#@Uz?LkA*FNpvjU1wtq?mEV={p?N>#UuZuRh=_Q6%Hp=BY4LnL}F%@N{4)b zo06U>+# zrpXZ}%)BeC;>Q24YMgH2sfJZ%gA<;En4cZCNYG9=Dto<6mApczQ|R_mE)r#bdBOiG zRV8eAwrK#H@yM0rI!rqKR@k`?M{*q|d!Uwk74%sEJE6J}TyLmNCtLXeRQ@o3z0nY6 zVZO8m`z_iJY8%3tFU^Kf4hDfHmP?3IL2f{ELVd4(R40j!)>ifyL~GXsD^Y5I znvIp%nP~T#A$=Fjzw}Z40p%;N>aAeUDo+)wDpe0C7jqiDR2`rk)kF1EwScl!p{i6h zfU+=qQ=zH>WvXtfT=fH#p}MLvbslt)j@G6?m8!mw{!69jO)t$I;zHavp&fi0PYC}X z`z|?5PEaxOLHQKY%YYmi6$U_@)Kb|w6KugjEn&~47FuI;9O7V0)LzHn(RL(t71@}ai z+!OWUo~R%9M0IQz^=xf}*xE+1wOxQVJ6~NPQvWM%J^1<^($M}QLddBJJhyQfw!rD1$t{JX9a@>hy5I9z?- z(G}zAYPj=t=le(;Kz%;o`vLCnaL07VG@$dH1YInyU&{{&=X)ED==aNT&>jysm4G(G zaF}5o!|nuKeWw8Tkfn?phKWW#BVdT(v>Ta^{LlgGn=vwRhNE;qRN4SZ| z_y0{dN_79d^tA6G3)zb9iZK&4%y133=EEhz)xg!t%Y5(1w=u8!A3E?%!<=H&|KwCp zr2pS^QD}$0JKM=mP^Wb}BU}5o4zq&Y&vYsoy8CZ9r|8*I z4G?Z|P`EKq?!_~FvFwF;<2u0cz-3{!wh(je-Jp;EpXe~&OjI`^4-df|MqBr|I8W`x z^&Q+lCrTw|d{i#Rbu%z%#}gghlf%k`{`)J|DPF)6>a(IkyePV%O)tghwVWL4xEJk3 zcky@3-j2l#bs1(1HXuC*#z;;)ncjmLUBYAL7tSe05=-BB% zge}4h@gk9o8RXc)(GO{HsDtRzXEelFJiP=C2~-fnQ$p+*K#0# z3TA{88?Ny8^x518DMWKol-Lw?637CP`%8-{K zNR#5eh8d{+SRc6oWquHPxB~V)RTNvEMt@K7X?&;32ma#teSvLOm~`aP+US)R$sS$O~I^f>#mxDlcZ^y{ZJxZn$XJ zs1tKEBaq$*^s7$Lg&A~LfyRcqG9KgDX4vCzcxJg8FJ$>^7ju9POtAki!Y$sR0UH{6qq#81x`>7Ko$%RM$5K+07Od~tq#Y|MFUnBqkWQ@jh2gnss*J#@ zSfr%&%NVS^#fk^9suYJ5b78YS%p1ka1gz%eK`UR#Wb9^6m1)u~(4{40fVqAIRxvHL-CY49IKQg zQD#Nx+lsNzZj2l&$KmPl0y#lmh!xn2uxf~1?dt`R%1r^)HE3H5uXoGE9? z*;v7ugBhG=IS(s`t#ZD+ShmRp*rUA=ZNqg~M|=p+nM>s|%ng)?uTgqs@)E3tUW&aJ zE9ENm$K`UhT!Xc%wc=NKxm<^}()IF6c@@@-D&*Dj8o2>G8?KetVLhx8D@T7qt$rKU zGYhMK2e6`gqr6GpEN{UY@vXc{yajtX?vQuNyRhol6YbSjtQ+5hb+anWL41Xk%4g+$ zc;bBk&*l$dMXe83(mul)?qi}3^GuJ+zv4OgN%@p~8mnt_<+E6CeopR`&!cr}#tPyb ztl9n@tGEBa>ggWrirj)0s$Mi;^;cjW^(FZ-*0lO#41=F~Ae_KjGq&#Pk{F=%ET^^WJ(#Za1E#|Y?*`E~KJ7_O{hL|~R3d*)p# zOogNET7tRqkz%QeLceqg=7eK0QxmTe&|@!GNh(>Th-E5Or71VhqMR|SA#PV)#HE;9 z>8iSkN3j0?4W2{CU@oQ*b2LSmyP?)_Ean%=#HVOuf5RM2CFX8=p?$qljKdsHAJrG@ z^8Hk`szEz9UaU}cnC)4Gxu4506SNXDL<6y6KUfV>=c}RE0XiJ3gd?#|I2!B!W5oqx z0#*yhV|T&?aUtGSIHoQX&tQ$>BJ2&AtfpYD=_2$1N3nxpI?b?~Gx(TqQuDA+fL0kV zR&8nlb|dI>`n2C+8TJ<}#~y{?`Tez6fuwavT9Ld;>_WS8tJo}VK@Z?x`%A>iPBN{{ zV2{Do>Kg2#_@lWha06ycHewgTjo71bv$_R)6K=&WhTE{Fc{^4$?^JiGyYbG#Hgykn zGi>Me%?Gf$`4HARX?^oC%(wr5Ikc1NajbeifmP3^=uHOoEauL3U~k4wtPw@vJb&!S6u-e+A~{Y?#M84?CH5VaLV`*t4-)L}GRHQSlg7bY4_1VP4>6?3Z{2;{X@t z7p7njL_e&hzNYr6*Ri7dPwdM5hj?84RXl+)l=J=7B$%yw#+WBuddgxHRZ;&$hdlqYbjleifili`)a;NyjtVl zh*w={+*dQbx5(gA?Y}a=B5#q`UOlgIT3c(2y}ET~YfIByM|IommYI#y7PdFptLybE zi&j+WterNyZQ8x&He zia38o#SMD;#kFO&dd|MBJ~*;LU1MmY*2q<@A$_f(japqB-l9@ReJ62>>uU@J)c6%p zZm%~os>^4vEH1Uz>lxSOuBo;4XGxs>1DVxx==D1KpOK2U$TDDRW1Ak;TkRasIZkoC zw^R)rWE*IfFiNh0xp|8W0loe_vY^HFwTwr}RNDs{0uR&$v<+;Z-8{X?Nd{0}l>xQa z+lK|)NtqG5jMFMYO>+)g(A>CSR#43-H8_{*#_jdi+D7UM8)+)6sJP6?MX@1unURZP ze+u=sQ9(@0jm(#qJ4c;S$lhW@QRN1!a)U*=f$ymcQe4?!84dHajSdpSPg|j9$Xjfv zsocm!dA)5+a2b_Q85Ma^Pq^OH`>*BJF#%oI8wocU0@eF~#= zaW|COE?^QJ-C&ePiJ`iNO4|fx@0f5#9q;M2HJS=R`E&h615=?hsxgeXh7|=o*9X|W zk#4n7KdSvLwh^zoryjqW>jwAghHd~r#wr5QQY zB`IM|!L|%pOZ;tXiLFJi8!e6WQgd7D{8>%5mLPVey6%hh))}p|ztz?`dMmgZfV00T z>!~%N0=5P#%BU%3t8EBTXIMa;!LrU^soNJ?Yopjp{1#(aRBeN`HPC|88Cj|Kb2F&w z47;l@4r@KT1%d6h2Afiu5xb1jLTg>)Y(1;BHaM5+cJKAp*{~N3!yQ|jsW7zGMlOmC zsmqL9_-jvDgKa@j)hjnLUtZx{a7Jl+iw#AU8?4F=A)c>k-w?L&Y#mee4AyZ4 zVi~RULT;rOnwDQ&U(wUHShvK*0X2j!He2b%dMmv&5U5*rrBTccWwxckt+Y`JC5Flx zdfJvTd&jafs(sHATVo+@z;iY-fdR9Q7E9_DOh1qBBLqy-1##^^M3GNb3< z8wYnE3`PWc625mfa#1pDo2jE_22_almj?KZj|^&y8A1A`2AOXn0M}DS%S@0ivoU%rs^KbKR8*t4 z-$nW;#9LHh$XsE_Tw%yuVaQxz$XwAg6x!uMJVr_-|{25Zv`X=ko;>cZycrgnxM+(a`NKDBY$ z+`w)888N9}#@_6dbEBC92?HVO95ZImT!_>#RM+Lx+eXx|BIm57=pS2jIhtCC#DM3S zaQOVjHuTR;GjtIn__mF0h{O+{iaw($5X`rM;7Gck+th9nL>Y(xN%YKxv!Q``tpTDK z6Lkg|winL?tsx7OF)Bc2ThKJEwPiZzw79q=v}r**1}N=KeoVQ&QO}63i<+{qX|2tz zE%Q+L?Tu|qEz?_DW?JeOwzV4JMir>8voz0cYc!BXLD%pY0S~Cmrw$hd;d=(b zB?gSP5ADBBPq3e!U_U*tOsv>5Q7puF)mxLZu3Q6|1*ry?t1mdBH(rPd-d@%)LcnxMzsIVffb$6 zg5NU{;re?fn1{s=`?K^Nl}c!Ho7!4L?!3mfxxzhf?!38}H>O>j`g;(xCWW1qzz{!M zex_xKI;HZlb`g#_Tsmim_9W9zX??FW_D<$a%9}(n^2W16Y(9y{PfdG>U&R|(QkG+G zHwWuXZkdR+Di>C>1a^u2fSLNwu>$k~R%7>zy_o6UiCNc2#r>Gm-GbTG8!#KXUaZD` z&NFxUO7Wz&0kZ7W*1*3^eFFbAtr-3*+H&|eYWv|or_t`{ZQ4NiTeT?oPifWg7hxxv z6brRl_!G4m@E>9SZtPa2SfqjH)zk2AXU;F-G#x4SVy+sT8S|XF7VzCzC6(eq#^0uP z0bZoGz+b5Dg+EbU4gV!|1^lp{w>z; zMDA5^YvESFErDx;Ylg#meC`yu32>v~uwt5v^~Bs7xZZGBb}Wo`i+RwHwe#!!1WSpX+=je_4~x?#G|@ z_`5Lcf98(tQmmWiV^x4`=Mmpk@c-(g_a@f(E{5NTw`&Q%4E{vlLijJT|D5jv!1wv+ zEr@oeoZ(9b{D^M}{E5CvNJ(VB1-B3GCAb&ho`8E8Zadr{I0~zS>kEgKW8Bj|<=;CM z$_ne}o$^?=k^Fh~c-qkp+x{2P%YVTxRPr0yH3;`0ma*d< zyNw^GaIB)h8nEk!Xx{{^lDB5_o_K`u+c+vo{)Bk?Nm9HboxKjSu7XYDMJeJoi?yG1wda(uW-Q0sDNfJlLU@jN@CLExfC=q4p}i(V zxZO+#+csjr!VL&^Za}bh0}60~^#|c}E?Z0->Vy$`g9!!VZZL5qsUCN|i9`J{;x0F# zMJ5!;+k6u@$AqQ>nk4Y^j5nc?fQB%x0Z>1NdYMqE2~lXF8LC71W@x4fr2>kFizHh5 zc_KX~&g1ZhGR|^FDCp8V{J8X=3DS9VhSE=f?pXR~@DG{L`zG|32@!4|(*;6b>J<6{ zhwdrLot6Iy3Nt4wH_3AF=ift!^+75+rh zMEY108g4=X9MKJ8x;itouL)HG^1^jX&xP-SOHL!E}TVVuGSn%~?f;eQAB zrTY{32Tk0&CiI301#kiARWo#t37NQbN@EwN@r)VzxCuRILid=^9e_5uH^RTx#9akw zE#=(3!i1KXP#d6T4kc&?LsM`j#Aw_Ng`2>bq3!{GoZAd#sD|hm>TNEvY8NtQlM}HN;^eR+7H2@Y2PsJbKs8<#B?7p?tq^zZGYO{ zwB2bt)1FFu)P(Lgp{*tqz-{S-yP4zOVB$8I(0UUJ#9eLTmY)M6S#*Aj%+UEJbS_E% zeT+F~-03DX$%Mw6&`1*+VnTt`8i4D^x$I>^r6ygW3FVtmrU|7&_wlUpNI(uaOKOJ@ zsXsGrFQ5|yr5=O(jG;p&^u7sE=vy4RuM-aK6YgK=gxkTmCxCmHq3tGgmkDh)p&Lzz zVqDKLuI_|e$GBCUaLY`b4z(k+1#VVq0GiqfH_;3oYeK_KXpjljG1ND;GS!>f4REdr zc}ytTgaWt#6l;bOmvH71V&aq^O8G6dGUX(NrhI2Yg!__lpP0CVCiJceyMxO&hj1;tK@CTToH73;Cgvw2*2($$p18tQ7p%F5mL=z%9Zn;uifNUv< zl6=a9elQ`lP(~%iZ#JPDOlX4%tw)U2Ec0>`x5$L%o6sE4O;4T#f4m8egicXsa1SVX2ty4f)X#({ zw3ivGL#1YDp$V-|&QD&AyUgUyQ0h5w@g^>kAh>)^Av4(l*pk$N17UwQp%W%_%!GhT z`i$ugnYi~&2)LxTICP(hLtABVe!+xxn9vg@^spZySqv`Q{kWvNOlY$S-DpDBo6yxJ zw9bT9nb0yJGQXr8C$+((hWmvJ8W z$uveviiHbjD8z)6A4>eqgie~!cP4~9=y4N?lg@=Wn^59G;+*)dAD8%s3BBrvNDmkd z5ZxX>j-_Jx5_kD=iO+xv@__Df6ME2u?lGY|K(UGG2-?WdwScZ-Xl>$(#3i_EOKdhF z!p&eDK~qdfrz6}1!ojUz9&L$)8+``dP}~pTaDr+W>J6xzpyUQWlvo6)fJ3uQ9MQSW z7>Nu;cM5fxp*Du#>6{ZzA?Irem+(WvH>oWNpC=qi_`rk?_@UHxKa{ZFg!Y;ca5(po z;_ftYPnpo8CUn0EZ8f1SCUmn2K^BAG4JK}bA4*gjA}@r19kS zaI0DO@t}!h$YDaDF>nZt@1W55pF81BFz#3<+-HnC1lso*ddr0Nnb1on^nwXdj2#@~ ziB7nO8MnO??k*FjL!0AojK3ZfSI7Szw9X7&WkSmsYVQ=c#SERr(A4;e?$PmM0S`B! zK_*mZLVZoB(uBMw1TOL2m`kpS^Z22}YvU&-UPYk^>-`Yn5>_*AxgVFX$b{zmq4;D! zm-tu{3OAt;6H! z;kanw4Cp}@IxG96UW%-$HiT1LRXp4S`$JG7Po|Bw3$$|3C%DeqMO2W69A2l zLz@;iz=Uc{2rZWpS`Mg)=?Y9-wh6gSDA9zXO$e=zDHHm^gud}Z zaU?0njs4t@i#=jOADGYq6WWhfbW`kJ99p^C#O*Ypr%dQkP~1=2h}~*JTTJL?6S~2K zHki<;u((lzZj>E-=v04F zPmAcLuaCVqwZsWJ^M6|e*!z; z3I8zrH2?i67y~1}M=Ym$6@G$-^#j0|YsGtl9I9}31~7;#otg!{U44yMAFIDIp6E4o z1b#HF9DoM%=AcK4@Ue0rBe7$i;9c;Q77gE~6_Kw_zz_2^F}#C)Jr=PT1#*?pTt{ElwyH46@D70 zn?~y{GEM8t7?L4P{mlMz@RM1dA4wjW#(7C&N#fN3U@}>rG|pEVr&vI;K@Bv2ze1j- zSd^mJ&8rT(iG$dPxoIh0;Pr;xyaKVCS0L^Ym^;T>73r|IJVli1O88%KtglFi;tP)T z9ihk z3u#qaSgYMwt3A0)yRrq^)FT{gF#Gl7<1J4q^YDg+lx6G}k`96YihSl!$o5>KUS#}J z@T+Le4DZ82t9XN!O5{8V7;^gHXK;?XvpgB3ADO{?y0fjOlV*Uy`jG6-<=dCbWe~^8 zV7NQOFLSJy8S^q>!~)j#0>X=nS;Gssl(%S?Q7GO@gHQD04Mp{O0b5`<=Fp9KIyiL~ zV_eL0CCMq)k%i+_MJmT-Y!7o8KbPu`n9JomlP$KER|@B`42$v3ABCa@iD_K!^Vxpp za=Fjt7G^P*{#=%7E~hw8hgln`%x9i<4YZNUD`(5pP=c9ep4tPritBF`(^n~KqwsDH zwbHtp8NT{G>I4vYSS&Vmfn6=bD(xIr@pMC0#Eau7inO2XpZ@ z4(PQ=jzw)+GM7j?-pi3Pn`KC*ngX6ANjgi?jqU9hwu)qyDxKx=vL$$#gO^MHeKiC2 zqnCRjr|xB*Hs)E#JbN)W^rzro$b9xwd#DX#{84&UHTL*Tebk!THVS{N}UG=W|ZGvsC$d9yJ^I7iih=yQ$CMXK{|Y8uZjQ zmXgeP%RGcaS%!R;p_VmJOY7FMR+|TZzIFk@OjE0N08Z4Fvp*JooVFEq^(&WMlCPcd z6gN>@1HYc*CUPu#e^tsJ4DVt3k2#f(iBd%}<;P6(G1ClTcnHJSTc|!Zak@>k29I~e zNRlQC@odsak|tWYhfj5RCR0u$+2kNjYbNLG22N!rbDqf@8kuGQ(=;(n6HC>^d2ixe zTu-soWn7v~6c-0aQSZ>i913aG8Lbed+k@7d0aLr-(Jh4e6yl9j;5pqwj+MmpNt{+P z$4cU~TpTOO5)b+$j@w{CPbwQ&a$eCzFG+bH%;^s1Tn}b$gPFq+<~Eq)F5y^%Io-h= zYc0c}x=$FfO56i(7*mqZG{+b|#_&p(WThn+q4#qstYqEZ$eg*wkaL-Gs`e|<;M58! zS8|E0WZ717iCm(s0)9Dbdn#*tC70bw*1%;Pccu0=Xb$6?9dMu=sS=H3TgiD@$+^3q z(_KmWL_a~T`bw5|tu8J5%`9Ov>*qoay->%qmYO-md90;oE~#ebe-m?VX8LBP-^}!z z8MB!&Y0NW?@owgj#%=rU9M{36%%@kvLP)pm9IKQmOPJ3{#yrn?ImWRtaz`$nXZjT+ zxj0Pu5}Yr*r%HTQkUrtl-jror;~F)zmSP1-BJLv#K`81SeAHR^s8ixT;*U31iQDOF8?Z=C4jG9F(!rM_T@6_#&8Cg{#>@4zRa^PTTT^QONNG=%D$XRU#6_G zP`k8A`x1U7Oa7~N7vKV}JAGM(zAVFB*6CzYIfUrw=<%dwQ>ma+|0vfkLPaHb4N zUdfb8INf#3?F#0@pYWXI?iJ? z=P{4-SjTDAX&-?8eeD4JE!rXYC$#O%fpT4Ese@n58pyNc6NYnfu_c3PQ10?#N(FBi zquga3OH~IM6rb%#<2m{&St9nJEW#OvOT-F5t8gCpB{*Ykhq#o#Q1&E!p$t2!@P#tG ztB)^~;SKtQcu##6eW46*v*Qb8cpDvGD3gD~8`W|0SG+%+E`OtMlgZQcZ8F$DzD=h1 z+hjNcmEPzL#fct5IpC<`cfkD&cLEOWjr{~V2U#Wr;#{H7qX86~$ zKanXPVSkIn6B^Efpmd*O|33D=Wf|HT<{FDufM_QAeu0ng;1NBIgK^&W`|$5(d0t|8 zFXL}CXfV1$DAC``_}iFr4#T%Hej<-YUt<3?e(KxFG|w~qH2W_}^bI&u;uQSt>^}^A z@XoJO{AE24-iuara%uP!zuE z^?m4vk?xzmV}aNtr~k(?|H5~$LYDWW?)e#qslDdLs`k|Iq*koyOpXJadSl#m*A>4*A}JR^Ilf<@*ff z`i$==Y$539LmT1y3ho1v5r2ax?8eZL53LFPC`SnW5t=xBX6_7%li0@^^aCYJZiF5= zcPxK8K@t66CrSOt-@gV@M@~=s>0rx0`%dBXH2(QZ-3(;Sp;9HE*$3&v~2#L?{hzd(4z?doze|Z5%ha{=}dL@o$o8k6;e4ydxTMce%7rN zeozfS2>J%!Z@$yMUwr5xf`7>Om%iNyHRSaD1GV8uFoh0-+kbG;A!pzkh{ z8u{Msdma>S+y!#+CWmbDT|<(A{FpzmQ#Cvh5{@k0&x-uE&jH{($N=LR!q0XaC2 zKY_=|KQ95?|#02>1BY}7=f6--WVr&`EQ~a&`<&-1Nswa z>KJMcx1r?gHW{2xqg~Ll0gFXT=8qe=2IC+@kR1kSf+61zR1eO|onPNZ z3S?uT`U}UTlGA_ajr>2ZX@(V|-v@MN{!B_gm2vgs&%Ppuej2oJ_~q*~z7FR9d;RZc zy1x8zaScdpj8*io;4;=>-?#o)MoJXdNR=?u&+0kj{QBGHbCd&9`Srxi0;vTcP#HY* z^v>xkfw>m^N%l}&o!C8Z$H_p^B8*Qj3dh+&X~5;+AB8j2dLX12{}`OyRRW4KoGTY6 z`rw};&J+Das;CjQXk+Vf>Xip?8%)P3Kr`{r7PIls!86ht?8M)Oe;%J2lrJ8|zW`?k zJ&!T!i{d4m#r6vRg*cJzHKg`B{zc*){ENkV_!?vSVvcw=PBFU#XPC{!7kTitDSVR$-ya!J?=j(zQxWmEvV~gNLal6}R<=+pTd0*S)Cvo&2W12PVO$2` zTm}(rt&wc4QAT-?wMHAIvK=Q~#c~C6(>h$z?-dD(Q){PpNF&Ts982;&d({50_8|mry2` zkh4<>QK@8csbq7h)ZwP%e)Yl*DqB1T8hKjU1wL-GLLJ=-I9 z;e@@ra7y2`avA1GCg9Y;39>IvFZAM{k24X;MdB2_3HbWP&u}Lgl4z}{4cUe{*L$J= zkNEUN`aWDEpY-=APV0M1z7KinlsZ14&N!cr&Ve(|eN$6$<{O>(HjmGEYscyJ!6&%U zX>2$*4dA4^NN#y(^-v?MDIVs=reWsS8M^wNZm+yl@Q%SzvD#iCt z<;EyV;qG0AB-$9Okn&d4Ns9kC;vd9a2zb1V_<8u2OT6!&oWef^?8NsvD87`B`c8r3 zYw-4|85qS{fjtE555S%V_PA;SRsnkybqe38Ax?<>73Nhw@*TlEjDx87?rl&VK|Ith zK*v#vkQ#Bv<1HXcTfsj7iI3n7tazLUo9a8F#zX!K&=+C-5BN~w2HYQR4cxuHW1uVI zJf<-13!r_I`TUAEry>w*Je~!?&G(B+HaHRo(#vsh{2I9?=sC=2?S$I}_Yxef1yW9b zQH`8K%KLG(5&8`Q_D3}tC#p_Ciqk{{^8YnLPpfv{%b=h$QkUXv)Jt*x>N-$efmXqe zJpV$aqZ)BG-84wuY9B z3~Ba4zDdaGWSq)7#rG<5e?(37eTC515&F3LGfoQMi11s`4^x`>ei5|zGQy7H%WZE# zJH+=Q;)49^{FBsF=wupl+k~>5fi#hhy2XdtH{__^6_)JBUuoi_aVlb=A8*Mu@Ojw7 z0lX3KQx0FK=4k$Sd0H~wl_kEN=;_XYn z+zX9xJKmq&EV51fauXjZZWC=L{vnee<0(IKxoG8Z%8x%@AU~bsA3Q65nCvQUHTfSn zD?A=&{hlzx-|G}U2I*6NrkLTgjBvY_0DaTj(R#Txns_J9derfdS3PgyS^p;eWD`&N z4wUm&6AwLO_sH4&6LGp@Al(Lo-loMZ&S9Ia!6~25V@!cr`1;J;veLe)A_3B#(|qwE zwYb=LysghB4STjp*s}8GRK;fGMcdJdr@j?s>>b{<_J%Ykn5|eXe_U5 zZvxuk6pTZAp`K;tLTHwUDwr+LTV7V0o0Um|o;wp%EA={9mr|IPR+y5~BQ>>0N>WB< zVnSwS%Kua^Hzs#aN$H-f`vn;ZNuG?vgp3jYQEmMd+D|lV>$7HQEj3G#tcPagLwp?? zt)`U-)!M_+31Rn zc6IzU#4ghqIvi@3gBaQz79G>E?c;cPNA&3j!y>~Rq3SZbEh;Q5($Vp?E6PRJ_rjxb zjdtA_Mz+M#aodxk=SJnB&C_t6s=!IKJJ15=V5};tSx}oj&+ArkvEd4BZZ2Be@)Bzn zWG^YFlF}IDLd%txkDi>}P-@BPUzwRzHKa?&_avW`U%8xLmiF&g`jyr8O~0`PSWCNb zM8S|AT5McleR1jF!uV*HTIGtaithL{Le^AQoY%3})^Rwry1%z~GIUvlUa$pcz+x?@ zIzApYoRn4aps_VroVClvM+J&Qa?_l3bz6nv~jgL`zLw>+piqM0`lqnPiVljVhhI zcEr#%Q_4Ni8B4)BL+`-tR3EO#I-c4+9Up~}G_`w0zKcm}6Ca8`hIG$(lTV(;__O#? zyQlMu#JVxHmwGxAO}vZu=_oF<+fZgv)H_ylNulQ=Yon5i@lq)jsw^rddC8#G0a@o= zHr+?%^5d9U#VI{6Jnvt2o7z!1ZAJZ*+a~J;aeC#@%ZK-xJ)%eG>1_^@8FpdK(H3I2 zKo0Vrhc6=28YtR$Z7%0E3U&h-ARC3-)Txh#=&{so8fk{G)FWKS)RTObLDY79gXT)s z%T|6tq?4@2 zQ0OrmV~lfD%b?1tt9H3;<=S_T!zsHlbRg6!M=^9Ae6@pWU{uG^FsgZujzc!R29l*4 z@~BX@gC4A%aPcGC6Lbwc_2W7|8f&=J|Lb_trjCyie=)RqaS%Q12~Qz`9Lo ziBpKlo`~N?+Pwxo4?B;5XFI%H%wqj61YdtV>VL5=gYe+^q1xwX#Sg=J>o&i^fXi3E6QeY0eP6dpGk$ zJ)y2QDo204LIXps*#e_cI%g(gZI^~eLB{5=sHm`xhb&f^!_a$nV5!nTj3`^j$x!Oh zLOS-M78!lRCD^H0NxCwd|Act|V4Zpj9`s<;Q(j>&OWnJ=$RnwPX(OK6c%ZA?wC=zc9lZ@jzH~blCG@Q6ctj^BhD-5t5RuVfOGS zO~u3yT|aj0`k~43ai5`+4UdcpJ022lb!R~*)Mj78b-6!uL1Xdfxi0H?s>?b)O1y3K z8AMNYPRB>$q#M2MABgka_n7!pna8%R^C6qp>0QzjgeRNS@p0lIw847+-iERW!|02i zrJ#f;e$1i1f=VTDCo}9BD_k)$#)VRmABSUFE}X_0C76Ke$W%L`!%nXzy{HxB2jGqu zF{rcPt4#u5?$lH2f^WNsQ7C)#M@G@-P+I&rb?%fec11?I)Fkpx!|-BU5s?rg4D(N6 zrVttOizp`ooUX_>gCz)tNgA?E-)x+izXSRh%H@zQ9y8mLHrBU}kHi`D+%}@m38qh$ zF2v(LLfp!^5{pf}ktyA(>nYq7lO9kCRDhIE%3nAJdYMt3;>6I?CFukYm+@qt^dw7n zq#4_G8SRRQiiXY?o;NMU660`$*<$*4?@^y09UdN8F-1&Uv|$JVh?@6bqw zo=<;aE$P_EccCME%MZI~G-{u9Y{D*R8q`9Z=GIxqI$txe5(6@WHdh0dTf;K(5@L)- zoNXFeu^z{jNo6(~`=7RPndw-(@Cx=PKzpl3t+tL0J4S6bY6H%5+G=3!8qJI0S&CN3 z@hC%WwoaY+BJubHShq&CL&wHFl7l>2eKpvXvxCMe2~$ z7*B4jjEg}Tg}PFU-7!&-VWAFJ0=1v~Y!u^Am+Q5|;j%iqds5QE!ue^4q`;n7>;$Fu zQkNq3F(5<@?ByV&NaMEu-`Iz=oHsq$8Vj?q#ti6Q*pL?!79LeO)$wmE0ld{vwuI@> z7d>e&;vSFiy|{dJd?aR?+Nibg{f2K$?7$3L4EFD!ea*w>F=|*f*l4UBUw|o>MvG2H zYqP15VWAzL^pI|QLcA*~w4+yuyvxy1g9ZdDlF=5YZ0gam(cz4YR6C=cuF#Hgb@Cd= z>4xA|1f@C2H;~eWW@fUSsp3ssx%NpPv>us(JDPk`c3^M-*1p zINs`@cs9+`Ozlh|JlcUA$>UeD---%uOJeP?+!*sgGf-Xw!^5Hu+3n%3=tC-Gg4@QxGBj%Mn2PD>2o)7}8XZ2m{aV#=naz&Z zoosSV*y#ru=N~_#jfMm$g?7@9mW;Va!%8s2ze9f-@=FBE4G2OFuC$|St4U!IF)mxU zrK2V)(iIjF?F1~Jc0{Qi=yz5{L|Lusg3!|s!C;+gO+*2jvA6<-gt-PYIGCCSv3r3Ga(<-E;aLpMW72%4{Pcqcu zjB>dm4K+o_x^r{(M7km(lr^!yt^OXQlwg(3$SBT?ce1rsX_uHG6$$4oU(Oj#D#?T47(NzzW2CL4x0Ov9 zgEvj?VYAK}@=^pI)nsyy^kM0$L7je8x3lob5bNnDLsTESJ$>Eq9)k-|(`d}K4?KI#lSNn=5TrzOrB@>GM*M9ZOh7Y@>zW$P7!vIv1nOk@r zA1U59=M?s74;Xyt84Y+&=Q%Nt(_a`A56^(GWs;+F{EyFyA10f{9j5%>`oq;xwB*mC z^uNY;xyU;7e9$u>$rVUH7GLjKVTRKfLzg?js2h4b>eqF=Q|Qn5I{rJ8ALAi!9Ohj2 znfwCbE+an_{yK*vzdX*?`Eq{Ecr@zJ@nPcYpmLybhmMcO96rtA>T+~5@kw&6_=kz7 zIe((h(-_~WTuI;lc!BV9%Ml1aw>*LH&T?IPR{F8{;+e&iuicb80{b4yOngA!iNI5v zqvw-GQhNSLkM#7b>~PhsRygePFCW2x9<(a)&qG_P$u z;9|;8@7qwb|Az`F@4?)*Cod*1xoe6$CN#`qi?q`aO-A@Dr2pEfV)6*i9cN2ZNx68; z)vTco9=NGge?|3QgDR|G$-jW)2QV9#gB5;#Bx$T5(U9qX7Wg7ZgiZCaxk4O~A*Wxo zhO3!=0sYrbf+k=|DO5ckVhwX*jcK^uAs6~3^IwA{WZgqTZd10v2B}TS46)Bp zB+ZO+ScR2V+MK=FtkdFk!r2DnY_KtK*!T>_a3&r(hXYKq$s7iA2S>8k_N}wQKd`a! zj{e_Q-4nFC2JZK}zdv3{{kprl>eZ{4>y>=MeWHoSh@S#&p9DuwkgvR~*KrNJXf7V- zDv!gVZaaWsH;LqIGmd@x)T_titIt`mxpm<)vcj6_M&Wmg)TK&aoY*;B+k0s92r>V? zcki2d{i%8SQz0KUn7>+hSk{H@YS)G{ht^-a7X2c>PCNP)b~STPI4PX)t5)g}wsRF6 zpF3C2%x}$Pw&ov%e6iqZeJmZZkDCI^CJ<^LfK9MZzuqUO~Wlui=l?dQkw$&;w>b z9uu=xRa13TRm1G|A_*6NSCX1!KEoi!(v zbi%`2UfXa#&W9s;O%@PFhBafu>s*uQ;8+HB_E2QlzE9pax-W_T^9ko1>NXr`f}s4Juc3M{-93*m)k^iU#^H=$F9nLu>yxUKc?r!(kpxr$je&LGeYbxPf*SAN);ZCo( ztpi>3ZICt_xQr}KSjnH%C2+zg(Mj_J@hRHOC1{7q_#{&346cnxasGbXGCmMtO2G7( zo~l*NiP2V}CD#}mNi^oy_IN`BqpcIC4Auxfuh%Cu&Yizu@U*5n-LK~sll48dHT~(D z%yuo9s1v-Z5%Nf}w)%m1TYrl$*gnzII^0n$Hu$4P^Vo)TVXx)$S?rGN!Hqq25r0_I zJc1JIZfxp|Syp4`M0d}I3}}*ch3|qUAt%Vgo8(@^Xj20iBQ0Z2e=u=DtXwOwBbDs( ziHmmSgpet0_8hy<-LvSs0Lk+^%eXSI$Rqu)=|b zOXlV-SzzzsF8u>TyK=c*Lv%$w+Ov!=@OAuMK4J@zP40i;aI$i2cmUaTJQBv?w0>>4 z-}QBlA-f$~i#FT`OxfOCYM;2K4UbZUtn^*tjy7C(G@d=+rWkPvUc=Oi=gA7NpEqI6 zl>7O?5}a}=$qJzU{6~ zUHQI=C_=G6zv14{mG>ivh?VI$A=kT0?H>}!3ZVP4h*P7v6=37HjIS!3A6>@d zZ0Y&1>ke)O*w0hWg#8^3M|*_lJIRLxEuScBjB_vBx`t31w+mc|)$R+K%?B0edD=*}`;xaMq+pTqe)*I{odBVA9p79Q#*c zdk8Hf)+T-!-nq_V%T6{>DJ@8}zYvKAF9?N2{8ojl6zENwdh82~eMZ$$Z%8ey zcMD6Z2CC+L;;Z~2XO-W{snv$ls20{&);$ zGv5nubv5_QkY+23$spod#oRq$7Hk@E7kEd5a8U}4hF|{greA4=9-qp7Er)aj7F%SP ziI)7|vHwzqd%e1*7QWld+DzlvWvXf+D0RJ}nf_yAeiZ{8%oKiU0^jgRtl7)|Q!LhcA4SIBs z>9-2M7FgT@2KiSw25BE8_ysb$X}#NU!XUvV(RTrHJsV2+v!VLwM8h_8mjfl8$o5hP zmtRLCD8Y*wi2Xca+y18My1wF@A1uKm&@73!*w4>8a74q`kUzkN(h9Nr5?Uh30)s@@ ziuGS#q*7Mtrbez*l%n2{tHOXcAQc7$#-rGUCd)6e`=r9@Buo&AG&JSd2NWNo(;;0` zgspCJSmLX^eU7g`IQV**_uYn*{IKDE@I8{SHk@!{!wuI_PH|bt1N5^5uOT>efnI1P zK0$}X24&K`J1*vd9JiVHw8KvUjf9jIk!RwR-Gl6Ta;RenjoJCs^r6wQvsQJi$v1}m z--g=Ty>Xy_6MnMgfLRzLg1A_z8_G1!UbeXQ;^~I|RW05(n1MofZvV*eo_u!C=m?MX z***FidJ69<{A`c9zK)%i%T7;!>cA!8i9@j>RNUu46T%ahwDWg<=z15wdkCW|zLON5 z2Nze6+f(`Oj`F(~cjDbgkdyMBQp*R*cVE|tH=nuU^`(2SE#Eu025&y)Iu+-36npw* z=dLU~?r1ai$nGt{kGkG~opR3eV!YJa(To2?W5BMOz5FhXq4-vD3^M$Xm2dZy-#(At ze#Euxx~SB4s(knI7jX9(R6?6A-R*PkCeh~Wk>M^0Pwl7GXZQCZ=dL6?d!W7q{d5WX z@IC|r@htUHcc8M3>C)5xR)Rl*6U%80+igEwfvH z5XsV9C`VhnDhc_yzI1J>E+mC+JqgWYJq*ZxNln$%)_Y`Rm#S6`kH^?pAz!mi`%k*w zTE>=mg9A?rumK%z@N{_|g|C$G^VFV~fS(K^g%SUEGcr?vyXx{y>>?$$iDnWke;HLdE)tw|c8?y2UgzIEB*efdyR zK=o;c+A=V8(Yh^{Og4^gA2R$k{jIT7IGKxf){Jz3x@?SmUrI2q&0Dbh#RE*O0~btV z%@nyH_r6d}B$?wLg0eD~9227zV<&X7sp&Jv#?G3GkN3AxhL7p@AuMTW$^NnWEV04t zz=ocl4T3&>@!G}9W+Sbcdh}kyJ?9Xf;ZtL^~k@#YQA+I@aeBuH@54VK1 zpy87xEx&hoWM9rw^|06QCF^G|U7WvU-d>0JI=C=)OW9obJ4G%GICz@_f86mQ^e&%A zy)D82?0UOHxdbn^lN30dxEtyYIx8FZ!QGtpj=HWZ@@ z3c=A=l~)b9`P8aIn6*{y3xiFNSJ@3kd9_J+6rtPgTwYmqqy4ejOO_Tdo#FC|9W(;R z7IJ$>NA~7&dq;pd@<;YUYcnvS7I=SWZ7+tC!W)Ug*@P)01t1e`aMMg7Ih=BiON>e+ zCslS_*C_-OIBxh&n3I&Q{Mb*HVqo07dbY9cg?|bUfa3l>eWModvXIi z^Y}lvXOKND%DUkfTfI$gh5o2D9S;0y${1kK=`mCPEkN_(@H{yDqb2x@PVOM_tfdP0 z%WRl!=FgKvC_n!^^1u`hzqSG{2`?RTS|l~2%z{ZOg!RmCquQnbE zgnFuvBiXY(?0SnxwrhQc%TJ)zI}Cp36<^*iAZwgQusqP(3Ca%GcedV&sP8BB=|}rd*gp zEIblXsZ~IkDnPQAmYv^VZ#N1TnV!BiNk<829_+AGgDU}oj^1v*Yyu*C&KqRiq6mPu7r)drTa09YhP5+wxl#uyn z-S5{yv|cZ~zQK6)v2PK-7se*0pMnkM^Xn!Q1d=v+p$RkH>zZ^lDDJwo%_J^!!MbVh z29Gph&x<7%1@Q@5LQ8saFa~4K@=cw$I=++>6{cvBh}PU)v-4D4ZO>1}W)4qIp1qjc zMlrA)1>yv~u{T#;wVM*~3hUM%9t_lZRlg+bs%WUEZ{8=iWLtx_e9GJMD7$xTZ0~@* zMyT(^jfOavdIHtdY<@&=;zu_8ao6o7{@%p7hYdgKdb=Zu>G_vR&;P-7yQ8TSoYu1a z{1NQ*wAV7hX}u9#5}v-G9(1%0bN3`dbKeI?j2!>`60hr4SD3#R>D^aeAC75?(_ zuh|IT>z4OYe;l|Z{ADkm#@fjK_XBVNig zgql{P7 z%ci-rp^x8Bz5WxRkMWtap+~<3S+V?WK>v&LWgGhJ2f+8RN7&_hlJjL7`tUsf+E8)P zX*VGN%DEwP-H0BZWSj(DK7=aJH2>66LZH#361N{Rp4Y~>Ng%#$f8~*%&|HM@+*btR z+BWo=`@yxbSJ~xyk#lVu`rIdoYfml@v-5=aLLVr%p2V(4Bn1$&~B;!rgW>zLW=BN`ti!;v@5>Z1RyejjL!ppMC>uzLt(iJ#mXreM5++ zT*zLYav_Gp(NHiPAqQ+*eNYauBSeISVPDuEtf|bh5Y=En_XmT1JrG1se+tTyId`>t z`qcYqmY-f8cHP5AxdS7Sgd=diQMTK#>kd@tjv)8KR_&>G<&?MZ9qFki6Hdx#vWhy{ z)w8O_r@IZy&S!H|j|e-|&JoHk1m39iM}5U_{)xO~4)o{)*j-P#?(7+?Ptz5pJlP9? zkrKirMl6-*$_AU0u%?K?UO=`B{;@edpcg(RvQ9N*s*k3RsI(J~FGEtI1s2pzt#D+H z3EHt`{rUDkYT$rG4O^Dm=!@vbE4LyVMi*ztNK_u!nE(`I$I*PrTsrjK=PI z8z1{|EB0-)V(DK+J_7X|FEP#~_7Yx2D>VyQLC{{|Y4jUeiYr$>EM^iGG>KgIhs2Vh z!}0{6(l_24OGgzefK39(fww%8EHsB};}u_y*Y-7OmL)1mmCv-?ZjYh*t2;5zFE8g^ zPjO80{s=FAkMP^Q+~)d71$2jgx6}7L*R$za8T;fv?%DwOJXZ6&E1rHnO1k`&jj*#ZC8RMLs1Ia@mq(!e7Y6* zhFf*(rmlR`t-PU#bGCr=U3t48_>i~c-X;iz2Wcv8(y}FrIE6}$;7*VzNcZ5ICjW+H zaZIk2k|s=&W?*c)&yvj1wQb`|aiZ#)e0TerZu+Y#+togwE()Jou_-$vh?5iUK*K;R zd&;0AgR0u6+uEkv3y)I|S4t$C0C%@GjP#J+xo-Io^%_)vCddEt>}=@hwtV~(G>v~u zKJs2qOs$Jk$7+UqI+l8hU5pB?Lvw;Ya7wQ5U%WT*wy8G!U-&J*;>%%kOAO+XdIOsM z6PG=QcyAo5oa&SbNFa76gj+uc3TKDviK6VMN&47NKkmAbYYyv{^Js;%cY-6A{38A| z)^`~yqu$Jymx%)HR!DBxtsHSZ07~MRS@HbyuKNfx%fAN=5@z6^p0n2w^i79$2oKN~ zPB!V5C>dVMh$O3N8aY;4Rv@f8k!rfnr+Y1tX90_Z9vd+y;_hwjxn`fo9@Vh$80Xm3 zd#ngyiev7Gu+PE8wH2d)b-S~SInu3d3_W!!>DCV3?5qIJ9mqBCDk@RsP$f3yg+|!Z zA3Dk0(7_>902bG|W5fd|=Y@JAh*^kC0cmlL)ydUE?qJUt#p)}B%`Bya=AU2U;7*10S+$V7<&}+OSrM& zzjWZRn$K%1K}ky4Pm`aCIFkMJcS~^c7ZLSvxY*&qVHv;v71Cf3hdZ6$J%sTU-y+NS zXP_)@#~E-l^_ zjyiW?AD_`$f_|w4efV^_2o;kK6nfa{GQRV)>onKrN_P>9=Qv413;G#y_U-#$=J#oo zv<_{Y@lh7v6TVe~KY~5XWn4a9fyJ6>%XyX?5Tgw1;)|I_da zB>5T|fkZ0WHI64;B+dmlfh5T#@0Fbg33>pg8@~>R#(acc2%sj!W;U!>pPM5>#LT_EAjL>zur|>*PyDZy?Kkg zmXBe!>iL@QE@%0Y`9)ED_IJ3zR^2bN&nqT=6&4is{a57)wLV=}*fQ*FT`4e))xHXg zuxEw(M63R`B9B0A#v(<2vou>zy{0sW;w`250MwbS?-$<@-+0{Jhh3+;epNir*4+SRX`bGHYUA$8U-g`&9ObziOZS|Eqlx&!wIfK6R2#*?yCg zMV0;kv#9dl^wMJ+?XlN!oo4)aH~kwCR!*<<(%Tx=`Bvp6?FhXoL3go_i@W@9CP#BqU4C#Sjy`n07WS zFq2W3p@h}irGdI!OUq!ad7`(WYh9*#C?8QZB`jA>CF=W{h1StTY&c!pyD^hJxWS0Z zvY^I0g2{%)L_|@e@k~o6ni6TsBswRWQ-l}0rzB%OC#WeDu2ssI;@{pY+%cYK8Cjj() zo#kWE-nF^m#YCvRk@c+Y9zHPA(C<^-m_gl$1={C2d)Ks?mZrtpgQMAGzRAaYJCF-+ z%$NoW7Fg_owoNms_Q^yj)2X|yiQQv!uN^Z@)Tq&zDr;SvvJ)H9su<9a=A|~Z`&$PZ z`$l7hE`0c_l+OaUst;rIgCzTK{+Y>lUUGp`^w;LNYn6}6frGh{w%_#xxow|7XW)47 zRvC(^sAeppwj`?k?3mxs(YWEe1sqAMt5ZFeZUx0)Pnx}C1b|oPi|egix9(pZ2HgLyXPEYSWDA0 zYklk$AmP7HJ>!g1Sq*2=|Gj$6n$`3-^_REGc@%P{xU~EnUtczyyu}2E7QQc5dYV?1 z4SoEQavS%SphsUvE5vSrc$fX`vpmjXLqA=DKD-6X1J53!u{luksD6{L4*O}+5bfSQ z;=0PQs(=gbIkek;<`Q@g>5IZn;q21We`K$BNhLV(5PF*QP{8?EZ9NrVuXwL~zo@6$ z?G}4czF*W+?fVa((0)-*weOR)SNZ*-o{GB|3wh=2F+PTz8)r0t6F;}d_}o5{9`@63 zD?y*$LK1;P#WNi!^wcdBy?Pivs4sHLnc|d#Vr9i@YS1#l#fxUMpZh<{SEYDVg-?`S z(mol9ry~7komD|y$ZSZa!fn+pQNwaeD5gfGR`Oj9-Ocd8h{B0PN5nX^t=gz*X{c+G zJ(8_|7RMkU*TuoZlgP>|Q&$mtz}lt~9z^oY6Lt~=wW$}oMrqH-GJJ`etH$2RO?jYp z7)TZ+8S!;HeQ}lIbAQtOtP<7&BKwXKRQ>MzaJrX(?9;+Ng?%{0OhZDI#r^Vfi3ZKw}0=pCGrvderz?Jw~ zKzxtrM`b$kEx|V`A#Z`(Xp*KsVs;D&aW`` z(GcOs?#(BFiC+K{WaC<>US5QMssulZ-JnmD;QvyBKa2?HA4>3#mEe!KevSA7bX(Lv z{T9x_@gfJch46W@%u{Tyvc1A^=p}R6Nw3NdU}KS`7w(dRh8C1R()4bXZ8p84`y-8a z>Vn%WWEBk=qwEK=j?~kaEO`5V)$>C`kWpSzbN{aACzOLq9+4*zJLxa+JR;kbvJOEu zYy*L`Tfqu#Uic%^Kk?d`j`^rzcsya{WOY?zPi^nkA=by)=6}pCwy#RCRFQ8|&xoh|+Qz!;vku=RIPpS) zOTy6$Y+guE;(9i;$n^+Hvfpmw2<h=WdnY z#DDD8i`=CE^>H?HtbZ=kxu2L)cB18d#mI>#8@d8_XtSC^O~Jq?-1s z*z9QGFX6C>t${UdHQ|PIghorggrGo~Xiqx0d0)v}5fpyoz#)g%!ozPrEs|%2o=yl) zY#QL)??b#w8Tnnx?~qRUX-Dh0eTyHAf zy`+41Qv!FNf=%p5EQ-2A4*g=1jCAx1M4h@%x`u4yZYx7HR*cwx~}d(#pt$mr2$@G98M*-bW`57`$ew(D52djWZJnIjym@MJ>%V%d-1@>*Z<>Go+R1I5 zNGb_y=6nj}tkS2R8Jbiq%?L3?VGD!U@w{~qj=s#c;mO6t$%)0qcc?~-=fK*bZQZey zg;HUv5p5Xh#O7XRw5`*WfCb}+c!)iwA4v&1wT{+%Z(Rxc`4aT;`BzF%$P(w-qceXh zLH}HW{$ZYUExX-!IZ(2(-;Og;ig5VboHm|LR0E2v9O0|NL-3Ui(#k*`{WG|f0$hAe z37)j!h?vX?h=pUmjtIZw{Jnm8*gg5G&%w)0&rzgBe2@K}_;025_wm>yeYe=Y%=S|I z)UV}X;a3&y&QZT$4IE(?+wBQRv*rB&JF&-sQv!?QKtK8O=qEkz+<&R`J$#4X$H|2_ zbFg3d0c2?hk9HEZaLH0k6|#Lx1IR;%)>t8@{wbBOi;pIICcIwM?V&Po-o{)wmCdxb zWK-;ht~Fhqv#H7PuC(g&YJb%&uhtW*9%$_u%MJ{Ur+X>p9A!7+RLA?FtJVH(ie|HI zGo2mN$>elL=S*9Ft}8t-knYL}t?9Y;_PKP|>JI2dJ>%m&>G5&s2T9E75d56@ZD#@$ z)2VE=09VDlThuMLFWzo=Jv~%p2-`(rsrP!kNJ93!>>m3A=_- z*~t)gYCEKm;Zx6X3yk?uP06m;IE>a_M314dlxsckVpUGrXQ&&;=^Nk^a+3WQSEX(; zgUZodZvAxQXt#;l(?$Rl8zLI(6=J`}zjdWj@_4N1~nU`iAD>qT6rE zy8K%od3eGaRKeexqTIiKZuZQfx;n{_j4*m@q06XRM!U=Sj$>5Ya%hR~k1CcI!9=ig zQ2x2_lE|*&*xCm4uqlrhyU1ut)+mMdqxKdRbApNX0U3oV__Q!&3>DZDIMqGRV;T0) zR_yzC@RG=3w_v#_hn#fs27r<$+c(7|*@rSDHKUEg+j}}U2^it_I^%-pZ_YNMMnm-%UB)En! zXMYtQaPhh-POVQd$GHV4#1dthI%7NeP9Xipp>2b;Rhjwyqq4^gntE#EY_Apx3@&t} z7jun+r%raQZjaCO4J@^{t#2QaQ(t3Za%1Q4Y2!nw zHNEMj-kx=oTZj1>hSm2ds0k~CXG|Su2~gFS&mh~JX?o!koG#8m;Jok*P9>oooWiLV zQLPW9(2iZF>aZen@Nztc`EEkSHikY~_FQuQn3JiPMVS~|oj94Ttp_=mOwfcuAhXws z&H3iR10$pR2jhc{Vr_Q=Lf5$+0}VaPuEbbt%UJ8;@aW=A(_2!r?d`Lv&1|1)_RX|s zxA*sN&vwrAn3|a$Ph=^fGMgMrzrAgwxp|~*cwyn#OKXSQCR$o1+J>oG%FyzkF+1PI z&dWZsKlv_vvBGl5Rp?tMq<4mgx8>`qd*=^~pvF83M+}~|WQP4i^BohrGnkuh%*|{j zyO?TQ5WdSN=j?M{vpynVpNQ98wfD+ZW~{${{EQK2YC6|;cdza4Sm+|jU*46H=KUQbjg2E6ox}7q+1{SSKP|n~-MyGjFLrk? zrF&Nm^i5Cq4XgqsG~ld{_d}LDlrR8ZSz?wBuY9v%Nxg2xqnYNCrs+sV^6F2?je_V? zEw#(TnAa%0tb2(|A!~!_Y&FS7k|eOez;cT=nZu?^ED1c)G0Bz;uOw{@w^vmMVv2x5 zLRL+0OLIrKs@XR!U8Q-w__VA`J8F7r{87X!6+^Mw8?Z^JF4Y=b#CB(m7!KJ@%tQ`A zktb9ta>Y*AovN&<8}SNd%DkB{B^138ok=o;np}yxfm*|{&xJW?GLd! zr7m6DoYlPOi0+j^!ZK?1dSUxWPxNZry5Z6_0zV0%+jF9bHjNdkXm4Q!Zn zC|Y&Eb*>My=SbUP))biH4>hlKn0>aY>L>7Bx!>ZpB*W+Rc=czsHybQc<+*+7r-qH0w5F{)X0AU9j4ZLluN7 zK{u|_A)YR`0uie0+PX%Q4c&F| zY(sK!qV?0w;i_0;G(xqa8YIC4j`8x9XPrP)FhdK;VIN-s-}cYG(t|>OdNnyIg;9T?t46kU_NEzTCq^*I_`Q zxAM2*%Uw+4&w$=IB)yzwvg-;w18**eG_XrqO85aFL@L)%pV=FcKYTAB=rg;X`pn+Q zba-ocpV=D$>BXsRCNdRxpBecf>e!X60e%DCXAa4rWxw!6K+tEW^@-!o0@0)+ZZkTlwn`CHUyoQ&nFf`;)|)HZ-vAYMnuh;YsW z)uLbbd)UWR>_^FM-O(`ohjUlIx|hK0J|O@u+_a}yEWrf zL6VR?IECpAEAJ!JjZrapPjEkj`=1fMf%oG`-MyOL$BT6T9sK?{Y!IA4!`pAR+sDu_ z8l0VOzyE@8=gRkCSJ3^pI^Tam_z-`;6Lc>lotwwLV>V9f;U>0Z^9WwlVtZ5bHw=? zcchwANGNi5tSh2;gQ#9iNyT6wOlXSK#+8$%5_4+|J-HT^AI}8bbX;G=`o=rR zf3Ww3(a$jc_lFC6(OK#E5?bWV23%C6@=m_4*Me!zeEl7oqRki zKDzCsg98-+%j~bN1ITLKj!`D@^DFo*3)^Xy(LeGBTmzkzc1*i2Zcd8a?IR<|bKJOh z!|#k@tX^m~5lZow0)BtsJ7M;fKr|XC%!a>HF>Gpgd6nxLwrsbHcuFwBWp5C5U+p<2 zrc86bJBSv&el)BJ5o%MS*4ap;Fc+w*3a~FnzRhvTo2MR=c6Fcd5M&U@eG^(JZN-Ap z1``OV1RX)6umrg|>+EIDMUNZK_X9@P>Qr(n)xNq)2^)r6jUC7h?ajyX3mu~7p~y08 zD2GU-gpr}|YTE*W&hzq;PccGDWX_&5aZ@rT1$gZS}R z42*sgL1PtmxE^AijLrk4cSw_T@GVInjSt27|1B*;58;oNq2^|k=Np2EW8h(LWv!@f zGs!(h(83Zj1rm{(lgsue?TL#SwW=R@UFtYB3y)(LuWFy(7w&|)vZ7h`>gAc7A$B=oCr zrx^^I>_xg$Fk^@hcMf$7f$L0FJkuk)v5#AQ<#t)oEs`mNs0DO0dxu*>HT4{>J6uOWOOK-h z{Q(|XaQcb+2e}M!zKZM9__d2IxHhtn(fi+92M6VLwr2UG?Bj0i=~#}r)}x<8INx-M zZNsd%h?8RmxWI)>Aq)POJa?`(fMS>Q4?S?6M-R>hC&c@%C)j-~PVdu-D9_*y%kQ_? z5-p-9uoZ=B4G?DWyhtbKocwv=HvT*n4FX4@tQ@C(eD54SBIkWvpKD*+{V(@tc^}4h zJGIYeu0&B=O)t)Sdyf2$@5NCX@TclNKAtrg|MmR+9)4Yo@oePZv#(?5?{5CR9Qr@7 zJi$&8zD3p;&Izy`6pnMISYD7!Yc?q>o6j8_K7WHO8D z-rVE%!xCwK!yW6^-T8*3?9*_jq^o9ml1&QVE?Rp1cA^%RJfRh(0eD`Q3{A*uIt`j| zrflJ#k?w^DN3k2cDhcBBxjWwc(Oo+~@}?d*{uy$X^6XmpBjE?1Y33czQC=TO6`FI% z1eBr>z(3G=8VI%{al=HWf{7HvV21>^xOQVbi}a>EbLaS`j^QLW z$tgN|*@j-;E_?^k7iabe1?XTd3dRYw1-P)qRUeQ6J1J76R_+GkB1~$YG;!p@$Y?mz zDRlRS&>aEJ0nx+OZLAAt+9l2B)2Q!()IyHAzvn|~74&DQbL03aIzxXprU%>oa#+zZ zgr(js7=jO5|Jx^%TUv6dwkk&0T)#ZU&H^uUY(>g4aFz{K$aVfaL|A&1e*9Qfenh{& z?$gC--3N?#M$C-+o+F*)<*5tCLz!$OSm{MyZ|ttBGz2docu$&K=pq8m9IMO zi7jXkc0Fi#VEKH|=%29aFM(FO47$RZ+rpo5eJQ^VFP{Zk_zSKtoQF^sMIa1RbJEUaeGYFSKUeY#rIsdIqjZQgS2n-(BnhSOhmy-BU!@Zhns7?SOxT!*4;hAi-}D zs2@q_Vvn&0$ZH18k(Ms-*|iONA>?H!Wj)N<~)uCrvOc z?SsA#qr8p1Be9}2=!>-95^|r@4ICFx53p=zEY)evuUsl#DSE=}0pnAOp{d2@K7?)l zXik8=_E|`8CQi=0IqG2_R0(Q2H!Ie}OvODeMSS8fEB+S#rN(FcGFpytRrJnoL=opce3!^Ek)l1?(;%;NWtS<8qSY@&e?@5}a^J@LL3eM{!=l zgF*;2c=L19{JD!eyRiFh$B0uns@6->J&wBlLlhZqajnuSj{bVc2&6<)QWtz#d)^TD_5NNxJ3Z=HMoyVu3X zw-vq?pB-vto|;^uW4fnmFjtkXpAoVPt?7lX?t|O2YqFWQ>b^jr@L+R8-m~ZazXnZc$ zv34T0d3193L_!rz=>LM+v+;E-3a{npdFPDA^UYnGhgRs zI`=MZ+?Did$1byAevoy2A>v=(0iNO7n1nYqXB&RNAfeFagS=3MO?;esA{ii%D_XLUM>jF!rv4GZ(d8ZS6o*-t|KJ*8tk$wN@J+GlKn=5 zF0v1YOtX9zC4kvm=C9hH%k95vezpC3_1NJp-Q8ObkBuMR+}*wT@P?67`ZK#mCo&qO zS4atVR&`Ccv`lwZb%Ye?U2e5{SQyxI^_r!t_6`i}y=rOA)q4iI(;Ls7nmT7wSJ$R< zrl!u_n0{^F&U|*~K$E9R#nGyUm7Gj`zc7i1g}oA!PfD) z!UyVdG(4J9XE5X#ijxPxarxr!WVAG9E}%{*P4(}Jp~~}#j>bB{SI0cEBr*|s3PE3> zTQjnu+N#j7rS^=TJ~DFp=-9#0(Su_dl+oId>7#mQ?2xYf$fGyKs~aRmY>IfXrc@7( z{$+J_{)oCo(XS2q5yspqKRtBX#Kghj;e!(srww&OOJ7hYcvhGJNj@Mf=O;6Ke<__B7%7FWVz2Pd=$3&SmO_ACP^_ ztY3LNlKbJpll%%{AX$Yc_U-d^_p zw#h`>WHLFK!~qDsL#?etgUJ?t5}+f`VYj@6+i9zp*SM}ljcu}vIL9oe#$HRV8&rPt zy_0M`@l9lTp$ta10uP?q&ZE!cxKXapTCpGlSMfTtHlSbR? z`X)OS{D*u1+!y7jyRi0Ymda}M$9y>a5C8mZFWGG`(+}Z8JhYxA6OL8mBqNJ*V$doo z_OTBLA4EhJz7km5uoN(&^9g&NTQ5vVtA*+k`gim z_t5JQJnvqc?>lRMo8aEloejeTQM4*G6k{72=9gMyX~^hrD4^Y5*O#Gr**Jk8oIG@| zh86NLmT~l<5{`BfdY&bl_Sw>3sDS`H6}m`AVF|(%LX_4!N@%0mz$ple$Z(>Xbc8o* zoIW0b@fSzkrcflzrBYEzg_Z=zTOw&IO~7K3jc>ek)v8N3E?qS1R?NaqnKka{8a>z| zshTFG&%}WTtZ8RwdPgHu^`&dpZ@6Y@`jT}Xzw{-jNbz{zxQcb8ObxR+>7SUuS{h?< zq{D+!+;ozJ8{T^EV;-maHz&!(BavTZzFCIF%?~>(V{gS_Xw1f)<6m;WA-`_~wXX8} zP}(p*lAP&G&9t@6q&jDkujKjRXe&+wL*jxrAl%858s<1ge>YCdXnf+d;o;LJdKWu8 z7kj(uCo@Zjr&XR4Rytbk*!?JrZy^-Q>zlMKe@naz71bo+Ht2+O=GGycpV5o6Sf(%| z_BtDYMM<*`q6otr3>KNSt?Y5d(2+c(OBMxKgngJ6q<|yls1Wn#|IuT@FQ#RCd6RHq z6+egl)bOzz>x4J{BS(kR`i6GHeuw;;uxkPu?n(Q9+}>tz5{ICQGl^A6W5q&cqju-* zfkYNim-752l&t-@APKc3DN4_$P1y&*06i4RuRXU3>7jVzg@19 zSF=RfYgNtf9YuzvS2x1&6ejDj0#i6~;4@+j-o7||VkhzVK?d?zl-)7Pb7BABEX$#?ik$9K3v^0Ev5(TO=bpevHN;CLB7uWQYIU6sU57P1^P^_7nq zsu=x;rb)tiO&75*vPU=?;gp=ImiZokhx zq219j-+}+r^QqK)XMJ~VZFfEY$sW-L-GP8OgfnX_Y$T-fn*s2PgKFU&T3!tJ-Gdt4 z(r`x`b^HDJN+7+E?po;VTl16k=UI4f76Y;)IVAR%SpJ&5!) zfb+oPfk?zxT`^dWV^qKI;!4g~aZ)M?!D7NDX}=|Qw6X_>HH#XIin-hA5i2Z{vAo_V9pYz$0uNL!6_7lu1>Y{TM zEHjakW>~>#OU$N+e6?(j{Je!Pm;WA{ro%>dUOJoEpD;xQ8$X-Yb}U`Kdj9goj-@6& zBCBpAGB*7z_#jMU{CE?kh2by5U%0k^@3kA&Ub8P7t1r?rP6<5a#)Y~nN!0Xe*;mI; z(x5u)IBp7ahq1sX@bbf7!;JPUpN3PV(}2#|Gs@!7GdwQMIp0;m3a>?89c6CWET*HV zb+EsC<|~{3cN*!x@BJnX^+#;?-#h}A-2tWrPHOoJulYw#gXMJhgm4MG;a zx(c^)@pcZ0x*w*tZECJdn6l}yu%jiKjWkS7jn`FY5}H*d8>VSCXS3a%W*x$~zJXI$ z4V>Db8DT@x-PKDyy|W2Gqb_)qh%vqUw7YQ(0-Mzh z1@2m<@D)`_SYGJ!ECv6v?)4S^Lsc{!>3bs)#IY-?Ly2rN&V~>oMq<@K{dYpDDZi|$ zh^d>>%ZhSyK(&-33a-7{BZ^GY(mqckh8c(4gnmN|#Tf)?EBKQpt!%0kSq!-at|R6_ zg(3?tn7-MI=k2p-f>|Uz?#_FWhz$A1{z#9!@@K5l_bgDgorS^yzE0mWv@4t4HAGj` z4;4Rt3|xlkB)?)52!%Us(!zOcO)@K~q$`vvqA9L)wNbm1VfJ9{B(0L!nnG_7h5t`} z>MYyD*FInTg22u^siIU;qlkM^56Rz7=f=UG=k(E83kU*pb%D+~D_N zk*P)}0xFP)9TYLzM3hN}NAT}=-4T8c?OeKs$YISNUag;Jk(GB3J;PFjezyH@_U=DX ztqZ0OxBB{!t`8Xidmq-pK`yhv0E<1fEjs7QA(VKLQp#uMfgP?i4A@7M+S&jehj%#< z!_D#G#M0O;gmA`VllSFt{9r8K(i|Uaqcik0Me!HzD&J>D%c?w`j)$K5#8w=Qw@?)G z&7F%qskw})iK*FMI!@06hog`Ews@a&wW18jy7rZ*>i-v>zwp1z=h>S7MgA^O9Z>OK zk^R6ep_8vJ;z=R$-D8&dK5P3APO0EaD^L9Cqbb@`EnHBwmHs-T;n-*Dg=hcKQ-Exa z(8nJXS-UL5 zXPrR~=3VR}#Dt3cjrZ-0NGui!$6`$9zrv9ip4FGHKzz9ATzusWMP8isQA4i<(CB`IQ$Yf!|$S>|850>*cKIFJ>c73 zY|8NeGGMU}q41qm*ly9j{0!@152B8uSsH`W<_3L92h<2qMh$V{b}8!{;!&kq-2jvB!KcBF{Y?17J_H*f_(y%xe_wDP~oe$5_*jyVH;+%~6>`C=;(AX?kk#4! zSA2k7Q@d(ryvho>ade6|oNB0BH9J-Xmo`EInlIc|%Wr#w{B|hS$Zt0Y{B9RJ6sQUW zLps6>p;UdaDu{~7me;CDRec;ckcAKS7ig=)jW)oIj(*PTba1Zgse0Mp?LC_gWd^$a zPUk}Hv2cH1kB>SBbIjL?4AY3uA4IUj7fRM5H#daTNw3ik)0y_`+=hJE_mfn^IzY@4 zP9c(KM2$d{+Zxioxah`)* z-)i_h;+=BP@&;rg6x3Mo{FC=Kc+GAO7#@_92&1oN;Yrj`(1W_hysYpC4Z=#qo|zYf zVN_%BVlL5TvJNYA$)j9br1*I;&d0--iK3Td5ap`b!#MQ-%(_v3d|=m1A~ADHcHk8J zo<0RdOnZ8_qWWScvt178hQ=P$u%fj>Ck{$py*HQNKiA$iw|_9VZ*^Nfzk6t8PY%1k zhxX)1x};s*;yC*}G;8d5!wM(F5kI7SO&IhgKN1oyDAbm-y`h8_ju(W!i=F%tY7Y0T zY3rL$d^OVF*w7b?_f=PSwHWs|Ot;4R!(UCz_qDC*>6}k>P1k={Z|SP3>W|0zyHney zR&7mnw%v!LWygDa#~VU*#siJ515MHU+B#EPS50k8B^n+u>O%Hins4{=7qBn$XGB-P zB%kWaR0`^x<4_=NY)vp0LMC}YPiK_%*2dXTQ^*gaSC4g8d)8T-7Ce?|1wDf)_KOYM zJeCi2znEClRafX(zYX6)MwM_gydbdYo!xbCVmQWxy%2$sN@ttn)3ERL^~qg0xOq%q zn`SQ9)D`O+tWj@)?PGjc4alCEZ4>9MSv+q%InyC&e(l2)<-66Y9YmSB&F2gEr#GCl zYT%6B>l?wNjDUqHm9~Cz%iQ7d@xycZ^Itb8L&{s^uQM9g?K&+tdCo?d?bu(9AO9?T z)8(VeLI;t3ODA8!!N3q*f}S8@S)jI1vn<@^_Q)PDPLYuPDvPVa3j1lY_g|K=q*f-bYyigy{&F zrX2Foamb`|c}ge>H;BLr$4pigWc*u&4;afTQ;tb&6MZ_09ZO9iR&T|k5TV{c;UP7w z79LY6?UHCJ39QWspCp>vPwIOPXydDt2b=hbptLMNT0~Q*66BZOR(}?JDQ4hwRaN}% zH(U3*y*Q|nvG02V$n4zf&U<{C4_;wiD||%Q2!X1(74g`+EUwkj`AY%eL7N}Ua4NR* zXQH4OP%oAtKYPhS(0?U?v8JiR6N$;K-2+S6KvYdlZp(rUd^2aQ>5j%HcJ$+nZun+1 zn|gXTiK{Q2&+eIRORr7|`GXtsy4$B=lbAle|Ln8V!>6xH=Lh!<4(u94QE>bLEUaHX z13PL-=B@Bx@r|yqV9Sz@a8oR5l*DF6>9B<|Iw(D!OE(UtYi$z}xh-1HbbIY!N-}+S z_$*;Bd4UQKq40Qh$3Pv6@k^Ya5-`@PRejCTj+pWT6x#P758^MvuMvZ!D0Byp2oPs3 z@+QuGDtFt#WPa6qwvJccxAXZl_LYvM)1!^C(aw(6_V!e3JNs7WSYwQU4YARVR06<6 zs_=#tJABwSpfs~NliA$cvpLhhkQ-W9%ni;L&ORx)`?&o;sCkSrxm#9@X%n4s_x~`i z|NSwub54SYV^@)ThpyyI8md(5}QM<5)^@+QX4f@1O-GD!WodQ&?vt1Yi{2+%n z1OAK)`=0>M2&f(+o=b3FJuJqjz#%^g_>eHi?i9NLKdMkX=TX=9c-L?#WcbFR448k*F8Al0H>o0H9_q4HnE12e*+>pJ1RXp`$f$rhP>iR)T``d6Ye?b zZZAFqb1W`=k87gnDVIQ`b5S-oX=L{7CX=7rChLlDMzhJz_NCQTO!2hQ6@Pccm{W8dL%rGBsF<>% zxjn1(h%o3|tEjSSP7AX#u;o@gYq`|y73$cq@F}}Z3Y_!l=bEE4la}y>=D}7`FlooV z)KOp80XHKGCy8Q9UZ`uz$8`8P;>lzjr&k%VJj6ZCX$MZ|c#d;_n$uV1b9dBs*VR!_ zmVQ<>H&;cQn}v>=bZu?A#{QXVidM&(s-kEY)klOSb{c2}G9In+4px{@*k#~^tmKF^ z?^8u7(;R4RX++G7j1a#jxT7sq-qw~T%M5v#S6GUKo8kfN6%6PWxD?LGiunB@&EWGm z&UOl~BftEn=7D}pA2!IZt*iS(U7avqQ(H?J$!mpP*Pp-@TJVe$SOLja#>=?eCwh`3 zV0OE=HQE^W22f;xp|G)r5`=~y8ER1#iNTT}+-C-=;$DBPPcje(GGtiSlnU(EWtl0m zA9!sLvMh_eB7CiYXB@v`L2k!`SbXIwey3!4*2-Aas4p@tYeH6W&%j7;DB}QsEXP z=VO1Ao6e;%5SMV9bS@3rU0~mI{YE&Q^S}YxXznl$X`#Ct&Q>ix!M-^VPg#*FBRLFF z1+KY#Do$khBE3PH@Jg-;h8w=Cf@uE{Ckb-Ezn$Z%a<7w<@sz z<+I-ma~XOz&Yd~}>kkX$VxCb^thGk$%vN}9HZ&%@w*|x*X|HJrI%QN*#y^VsYfWtp z9?^q>Dnb>NLMzovrD|#oA>N-ni!XnPxY{;*T7abg30FIhn3@O7Y`sqcQ&W(43}J$n z`*9-L7|yK#ZP7?i%74E6s{H4DO}Ur>_S2GV1N-sm#C`~S*RqYvU!b+St#a)?QCoXO zRZR`H4dNNsi!8vpY0fVu0mB(IG3WIZKYBm?c(D{3!VEdm8Z-1T--+T#T3jFD*N!B` z^&|Y+k&C!~)OnsuIb1*HTyr^r>!Z*@7}|d$dpj&LM{=V-j%9Q@>{*K$*q!1P-WV_u z-nP6v)2j#jA>NDAawOqaUYE_04!C}te<6kY|BU-{!mX%Q>-vUk!q%BMzsFNgIQ`(9 z8rM(qYlp+)`YGo==YzO@n)kB>l=3d;OB_MTyp(Ym7DU@Hi; zOrN*54hNeOpMximLfkoOBx&0bl~$|VJ8 zQBysh9g?M@GOv2TqYFRMW$ZPWam#)a{;OWp#S>gJ!spllv_TnXTw*zjSV@U0sb&sj zvscceKpGq;?itztcAq>*<~=39Lk-D8%AyB)4$6=16n-`1v01`Kq|hlFI8TtJNwnS}{Dd`& z8@LWtq7lLb#bQhHEgF5#cE$22DjJuNn56q;-nj1DDHLX9NrevO*{CXtN^MK3v5IE5 zNBAXM5Ko~~?ttqGc4L1CANg9}YRj!b!;#I7*jSAOF{ZiA)xs|adXQzQ*EJwx%<}di zv4QlQqppJZ(f><5=V(p3rmnNLwzCd@w3D6_t9JApQDmo!m(t29>N&Pb#?>>f=h)&m zA}yGxd)C`noq_As4_7bz^`aPUid6OWz!wWG2Up=(yuLmHe=D56F@Jqs(AIJKh3DAW zV)IHJXG4Aca(%tTfu|mTU_d``B4To?>8ctmrj=TRm zP2@soB0nMCLmbl{BzeHeej`of&7q(k4DlbF{+2I;Ch~JU4?E_6q={T#Zm9eh`rNrZ z?|S$01ANDD$u5Ex!KWDtUtHqCG81`sBpwR-RLNuNl$tH8hE-P;jU5Wbk(jP(9)bDb zL1F*jgt!DnOM%LrI21NqQa3vfvC8@OIE{GZ7PJPi(SI{@MhzQDA-70p_E~gTe1*|fx)#3covwlk_50*!^I0MH94e2WFB%z4f;&ph+YGtZPWGiQ#F zLWpR179sjp*VI?k*Pa08IQFqDBGrz(8B;0qJJg0tM|LYn)5hC)a5W%6->gUe`J{sZi zxCT#~eaY0{2Yr+&#LDZ1cy!G4#`-BqEtcL0$Gs?-4n**npq;qyf%~lKb6OTJ7>J^P1+j z?3okxtPouxv$Oxa=Eix`t=C@x`f$+Owo2a>k6LcPt&l#Sh{9E99Ym9`i5o>Q-39!t zM1}D0eOB-u;j3uv9n|?O8lmMfl^!>qLsNuWG;MkdGgCUfw5T!6nUI>i=D{sdyDp0A z@vG3Z?+O1&my6z_>t{PBUW0TF2X(fr#;sK-!s2I9so)TVa=Vr}4b-o4qVURmokaK7 z3*qY{+~fVY!9xbuh@B$hl+yEIxmR{|3wbkz%iq*?T--u~luAr6;>7Y*0xJaZh9*&> zpin<+NublzCkhszzEejKBD_P`|0)g++5}slukEX>JjQumr?Tgma2! z_$}fx_$$SB_|MBEA!V{Ggc5G;PFfwu~m zFl3fCks*2*_+VH^iUEhT7lgJO_9F80Shx{94331ZMFV_FdlBwQ4mWU=ZUyvDa0_(eW{v;vHRRW;uGK|IV-e)jEu|T$ zEv__zMLeoIvmtvvN{Vcxqaf>R zvlr3^S#>k4O1JH{`Y@Q|Q{FPp!#x9SNHJQEMd%G~7WawA#f##7@rC$NoRVSa74l?v z*;kH`7s*+2kz6TP%WqU4HAsz7e^>uhr?g($0Bw}kpfzjDwQIHQ+8f$O+E>~U?WDzO ziM6;a`Iae`d6uP?t1Wj}Hd>yr?6&N+d~G=vB!a?&5`(gWJV8Bz`UQ;$Y6!YG==GqF ztQPAC>qXXC)?XZRxfywsPBW+s(Fhw#~LDZ7cJN)n_Xj@~{8RAnA{#5v`@VCPEg&&R>7_l~DQ^XSyyCe2Sd>xq|IVJMW zNMBT4)TF4{QH!HiMXiZi8?`CQ7abOz9Gw$g99-QV%lmXw5u3}do*Fe`w*Nv`MTwk~jrsbx2(|V;1NE?~fm^Lr%zO+_%sJq5J%ss(9-96v^ z7x#7U+ui%zhuy!YThjZdUz&bZ`c3KU(l@6+lm2S@$LZgvpUBWMA~RAmx@44R)MO0H zxG-Z*#?$gRvBoI5smN^Vo`lH4nD|C)PG?t{5c=Dw8sLGCxXzjm;6i0+WwA*VxehpRi> z(&63?TRME+F{`7eV~>vgI@Wc(spA(Nf9!a?lk61HDXCL-r-DvBI`!?eq|=q1{@UrD zP7me<=f&rx<>lw~%o~(9K5u5;g1i-ZH|DL&dpK`<-s^cE=6#v>Q{IWrTIa~lNuBTM zys7ikop*KV+@-WjWtR)OjOj9^OH-FiyWH62A6=g9@_v`Ex*W;xl0P>8#{3uZzw6qm z>t$UZ^Jt!-p2eQ`3S0%93Pu)OTCmL<>MiwN?%m=2uCS!Ax$x4$RfRVc-d1>T;ikfW z7H%tivG9$;4+{4ceph(3@b@BB6jl^plv17?u3d*{b4KEv4)?9XN*-d44m2D{7R<^6`wX*lhMR|VtW#u20w|2|vmfx+UTd!`l z-3E6X)oo(8ncWt4yS&?$Zl84frrXcm6T0{6KDGO@?$>m`wfjBY|K9y@k0m`0_3Ya7 znO+@x-P7x2@0{NGy=!}4++%T-E1fg{o+%c&@Uza%<)8s{E>3tJYUNRMlF2 zTlH@>-D|F|*;`v#duy$)?-hN2>esK|#D0J2x4GYo{Z91v^dH~<-u`b75CbX(Tt49W zf$o7L2F@S2ap2E`1`b*==#vXVFX(Z>ybB(@;Mm}@!5fAY44FA(;gHLRtR8aLko$)` zHe|<;*M=M$8a}kk&>=&w9s1PJuZKkrD<9T4?5<%C4f|%ed-%ZNi-xZmzG?Wo!#^E< zbVSC8AtNpsaovdfM*L&M<0GCO@#2WrN4!7c(1>FrPS@G$qUsXr(&}>Sde+UYyQA*W zx_9gTJ+jltu_LbKM{d3T)9{-m&+UFP4XW3H~FaC zE5DOJ%3oBn>Y@r&sT!-A@eHwDJ+IzSpKBH^T#M3TwPY!9Up1zNGT(-q>1awWJ@ zUFoiDSDve@tJKxgHNrLCHN$nW>r&ShXd!NP-R@fF`rRGoj&|GKPPfaQ;m&b;+=cFL z?rQfu_a*LY+<$X#bU)yJ(EYIcG53@1ZSLpNZNb$IQvIYKMAReXI%1 zik!qCCz)D~*2Tz4uq)gZ>q>FCU0JS9u6$RCtDCFRHO@8BHQTk=wZgU9bra`gz1xPI z#JUsRDQ>rslXA{Ui+crfa-aKtbgq*}6CrM^brXVMH5?57t z62mhk9$vdj)%qnt`meRSe)VOve&LfC2L=3mU-lqd&~ElZ;$V#*1CYeKLo$Z zIFLqx2PXST4wM{t;K0lSBMw-;d<*~02W$w9IDi=iA-?>X{ncNt{_>J9AN+E`{-5{1 zC&d0;a1X#evj4vQEA}@C@p+_;XA{KBpg$lDIW@PI0gI{DYGIJI+SM98)$>ogUR$lL z(bj7BYg_!dwyU;D+pImRZNr#mhqhDOrR~;U#^~m-b`&FalA2Zd5mQO+TspT_2UcXx20oHH^<~9AQ>ePj5wVHzG>JQaz>PEF#U7{wd z=TIx=VD#0f#;NgYw|YUns4h~sqK>8F`7s-{s#f&HIC=!e?fO`8Ax3r&hzG@H@tAmC zyn?aae({a?RvcAJ)l{`iy{=l+8S$%(k+CvKrehAEo2-zva*UjSQQr)V`xeW!a-FwzyPN_RpEM`YuQ*+f_TCiHH zUcs2LLba+7)a|NX3sJpQoVrd8Q2o_FHA%#wwFt$`L=0vql0~}ch5A&4=YWY~q!=T{ ziCoN9+=S=ntHcJeT0Jk;i?`8^ye{4p--%7~F+43F7p*c<2FY+4CGFB9Gh~kJB8SO- za-h6GI^{xnmAphQmAA{4YA5D2cFX7FPPt2dhL&faaNt>56TgWB879(XoXC_3B1%rD@w5C^{9Ar6ev#jaTjVw3 zUHP)e5&6=M+I_K{il>3U$QBVI&WO>Nr@2yIDqfS%i~g7)yjR{Ll4OKPkhkpl3oR@cAr<3l+;Uu1MV(ugR1Jq8JFsG$ zTO7V%$RM|PZSbIKx43`!kPF=6a!h)=#l*Vd1KsFp1u0w}@8tUVjk5FP$#dpOH~Z03X3v-=L#NDbnj*4Je#OH5Ka{v(zlCr_51vL=d%rkZQ47CW0}lxdH1Ew_?NDfThN=S%@Tz}|iUM?ZHLYRpnt)I5ybreMT8 z2JOHgJOlJWKS`|@Ms)~j5*PEB&Ml|P78T7k6ZMelq^yNM3%W&JWj_gHLM0Xw48Bv~ z&tQ0lnoTfcvY94Z{9@)^VRhH>zp8P%g{K%+nFUUG4q|>b*djqY;Hd2NHdXTKp-!RO zONmIt-1ON0RjNu@@oZBIHe--0$#s}?dPLZ`4o7nxCVQZkdj<5_33fttBe333n@+ZJ z3{?Iwf4$KVW?{axK6?c12el1Y%S78ivmum&0icQJ5~5U)8_@is{;hsh$BB;CN|`PL zVY&v0t1`JBMGpg8pr%&y< zVE3^6Ftm1!uo9*EsTo+MorZRAHl*)}`InxmFQ5*}t9mHdv&vNks=KNIl!G~qZmJqk zw(6?NRTZEtm9NTFC7?{q-ju2eKpCpDDp7p^rK>zuta?KiX=rUasUp=2(jQcM-t^Mk zF2>`&5$)hJctZI9*>}kya-52jTjW-xmkvoXAz?No&qaQtpY$xF_nyJy9R-iK^KyYS`Kau(gd~Ya5F;yMwx1ME_UZ6(UAm0p8@0 zhPFZkkyES1Ftt?V{h@n93=0|onm1r?fDLEDmMvnK%I?tl#O z9mVwn)m0Rj?l$lv*8%w*tzQW?U8)Xi z$nXDc_XW}ly#pueK)k95WSXE(S$y7TQ7-}ny0{S0>(+~>Mu8qi^^ z`weCozVUsG86CQR3y$btkTJePGPupDd@i?#jBy#>JJ?%JTAzRU19_A@)16+dK;QJl- zJ>g0KzlV8O*PnH$11`)bM*mL^qm$bIs>>B_b?RJ)*;M`wSN_0hz*~}qE69N>VC_=Su7Fz$-PdEjZX(*Ok=SoHNp!(%qg@q=GCcq1sWOZr zOGJgr!dN8*>VEr%SU1s^9IbT&%iu-U*HE|#&#Nb4aR)?|06oc zYuBPho)!+*L3lCf_Gn#k?S*?MW{@#=q;fE>n~Fg@p6KYF99ACm-vLpE8C*A>11h8y zc^{AaqoOxCg}ENtis#@Dgh!4?zQ>AG?31Kt?F4e-4IK}?C6E)%w3_Ivz|3tiIi*Cg zM&m!@%D5-mhsjwY2QCit=#g*dQjp=;qbV$Oae zX0CjANC!FloLGHJ3@5ftt7CS>}B363^W6Eb?7YooQ=ZFj~2KoG5 zq-cp4?<@c>ihEF0iJwJZ%#P=)5X{csit9p=hn22j9G}LA8rqVjA`?8iQ{Rr6avG~j zRfwk%8kgPX`weZ0T}^?0sGt7acU+D2{i-{RGxJer5KjFo^`%(9@v2UkiRp>B{b6t4 z<9-a>0K-LLJQprfAV+t&KFR|+FTxbuy>R_8;%*X|S_AC23vBv6k)-w@pRXWJIQs0r zBM+kx=K?WQ%M_WGRgirY&!o_73axsR^THJyt_;^MaG0@XJXuZ;xB@sg9MKX?@d?f| zu3d4BgDZr46>b0=g_Cm|*AB*&XgN&Yi*)t^K7sYDaI90UM?GtX9*zV5G3p@d9m+JF z%0l)59y-QKh8N@1F0vE$u(hRu89&Yo$=?ai0~aVG$%Xk(-!}$6P(I2Z<(c^DabQQV zyEL*V@j0&K$Udq-LGu{+`POnC^qT-5brL($v5uvrCM{Usvq~FQQeKfEG8DVh!exYv z#0py!R>h)u{W1<~Z}DOaR+a3KFbC^bKFk|AWCB+6a%GbE0c(NDGDW6Jv`dn9?lsDE znISX99+@Sxv1*trJIIb$?dpWpme*xxtRm*iu2@klkY3Rd+BhK#WsxkFC0L!wlV!YG z+8r%f53F$Y#2Vn6vNu**`iPUVLcA?2WtFU!HL?~u?koF2^Zi9vIRLAYgRm|+7*DA~ zu}V2y96(zz0_9aFN6JxhG@cH}%5ic$R$wp0sv&lmW98-|ISK1@_1K*~Sx%9SSf!gL zr^)Fk*Z1X2%;3zHbL3pvBF)ERl%avHWT7^A-SI8@|R(iF(MqZ0Gqf&Xjya9XuZj@`}U$GumhLxk6 z(ZYNHE1HhgzYnpZdWXDI-X-tG8u2~6O1vI>IX1}q^*#3`L zseD%c15dmU8wr%D1p4*AJ_H z@5pztCfY3D=hf>Ekths(7KgDY2zpx7Yx!fneko)DA=$ZSYzWpx0l3&Yju#4k6 ztn7X-f1ufP%&UDQT4+ukvtx(FB7I&R>xcm}>sWE*xpj>1FuRT?!L#Pq#aCje3PNjU z&az`aeYlEHk(l*fjJfjR;t~~ud5}vnCmfHN8iz_yiDIcrQcjgDmZ%iGh2Y{@l(S|v z#NW`XEW_MN9(w$LV*URxW`0IuE+!vyG#<>|c+s+s!u&$9_y+y;Y0S}-VeY0Io`>VzDlwxoMl4s=7}Ko4xcxHB1pNgwME$X1KM;FAFHnQk5H%F5gu}5; zSf@s!9ULphVYP4!b|;JzP5p?RQv${RK<0M&s$?svEb+7sWZzg1l z5OFo;{jL+&itEKn^`W>(d@n9nABkP+W4wj&DQ28kVea`k%yfRP_KDxr7ivFdjt=n3 z`ZwxZ%pZL(uE6Z_ZCF|V5wo60Fpk-Z9_L1pjyC&NaSL_`KY-oD8!_5Dgq60nn7=-Z z*~UA?-^Cr6=?um?)H7J8(&sXd@oeUA`g|t#gq&7qumi-06@H1;eGTjTL0H?jX~9|u zR`}bk)ri&NGxQHPV6V!@v~DB5)Z)dz&~tnuJ{9}K{y$p9!5)GPEfc#4vaxp{7rVqd zYMrz^tuyvm54?ZhdlsWcQ& z=~qCBt;WcxE}y}&pvYFEXIz)NvdY?*B?;@>mRUWAUT_&IbTSo)H;X@&pIeTv4yNyP*qw6AuGDvW)wrBLPL@we;HL+2kWc` z2e2yA6ny#x5qZ2`qf86^=3tmhRZY;4=}pas1y&o`sPS_%sHzQx*LWg^OkV&~Z(cBGcKrfY z2Gm|-8xm+I#YXI6PRoOu7B*!5?E3lB18PQ*!MR8`Zm+k>I$T%Sa8qHPf?^{V1%}kc zMlK5cDb!d;1TZZzGG9^>HsY*8_7)h5Dlu4<7%WN*e7P=2L0PS(4(4gC3lPIkTdHTs zTVSZE#K=TRjdf&T85L3)dAz76TyJXp*OH)-ZMv>860S7_s`2aIU|LfXG4fnp7nImW z2I{)B!ZuPj^`Mc|2w6w6!RrZ^mRU!$dcsDxsUu|clo^f9jq_*Bw~n6HT)(g}Y;0Sg z9jSSHcYwMJV2Dd6b+g?v` zXrq~~p&=uumHwQT+8P6ky})2uP;6^#*A(k5h_|@hI*la?o7R>)V(lsL7KTncD>ZL{ zWqMnaTp2dKeH=8&#nu^Sd3p-;#s~U0r1aK?%*dx5KG@l%%kOW&s+a7=}C6W>aBk zt&Ln17*ZD-x$xJX;#%wcfT~wwWWJ;{Z2noL?JY1ARbsFzF@!8Bx3o~}+!BziKde;G zfVaRA1!aq}C9m#;vdC zN}39}Dfa#po3FSOR@(+0e-dL}Sn))B+u+4ftE#041~5!N9)O8$ke6< z%?31Mp+Pr)#$ugrJ|3**>R{sxoW7tF&YfW}B-_J4oChtqa<#yf8#-Ls=y2uAg)3Jo zTzTk#D;p=SJov%2T$h2T* zC0A*Wr&4dfJ^Cob>nSy4E;VE>HDoR|WG*#iE-ep%b~&Bt;jC31o*y<9k{NI~i)7rW zs^Pi_9)lGgR9KDr1C7U{KVssElSRX|GHzaD^Ngk`^sI=%+LV0SnH$!yVD{|B7KTH) ziDodep?>nLwp+(pF{xk1-t6S_qnQH<10kwIr_PwR0I6Z9uFI#lji_Osu<4hef1In! z(Kwe#40w(SN6xEnM*rM6RTnXeZ=2bMNc_kK^cjt9!F<~m98LGL8e2?)7z5Ep5<6|d z3}|3ZQyWp7i8_l6+l!}x){uqC7}Z8*o!>aQY3>xxX+c3@NaOq#3{YAc{g@J4y`B+W z7nQ{klbdEY&7Fh7Z>ev-#4@F6?leoyg61Y8+^7N-)t1>an(GauQP7nnVC5Xup3%t5*dOiA(+*4W1qo+bo2|wae zdFrqy0AC&e7aB0yKD7TjJ;8o@g8lRabG^ou>j18$A>5))Zkp2&!kq^}Bpbpi4SrSm z*i>%d^tx7PJdQ#(178us&1XRDqKN5DO|$A7niisXOrH9{qfj4Ocnb9gKwK-s(Wx~w z&Td-NM(pK^>?zchgsa{o7J3cgy{v8E^+&!!eU#-XEaZys@%jg?Ra|(uujGarnP-zX zZc6zk(o}cLwRz@Si1jLX)m+q}o?e}*yIU9bLF1iY?(uReZ;nrWem z_uqwLMW;^idnO`Mf6oN-u=rtZRbv_@v{{YKb4AXa`sP`}HD}hGS=fn5yEygtAZSfW z^12k36ofT*on^5)i9K08Fdu5g?p-?Jg(y<+r@fijJDKxo4tDVhk+YW_V)H3Ierno7 z{082@lClKU*;r?C$wV28)hjEKIEne>!NXz<*MG z4F4JI^OE9W_LpNm8k`wFQ#}LtZAH7JKUaIBB= z-2%57?rOL}aJ6uK;IKlQT?B^}%WSMUW@o^qz+uHU8}ET+hr+>*vRYBj=R14JU)Gd^ zhw!I8{^6MQKYK@Z5!OUIU{!!@XOC|_<Z~8_7 ze$q!fx|cKMvexeb@A1)I^_jklkdnw63Wt^0tZKudQek4}sV5|kJ0D#og13v#_2`LSVjO8AL8k!O!10z7HU@JX}IHXN8t{_eGNyr zeQ+Pcy$6Rpn)%xX70*6v92lJrVvG6B=$pgG`8UwM^H? z#KFRixJ4!eYd3JPc>~HYA;RfgQcN7`gFzQ=t6 zmbbKT{kXLKCiJNgX?vkyk@l7e?E$olaoYhs#n7WBwAq9xbfX!nL+i}YJ51;%K-a@v zNwoA!yE4thrLFLXGH%IPp+whW;^q>>ESO6hlr|k94QUhLk20a5CN#i=2v^N?y-Zx0 z2@%fAp`A@!jtRL<$Z10H=YdETolB${8f-$!54ld8&~XzwYC;E1=xY<&Cxq)`xc6Ld zz<-(Y@7ifX+f3*Q6C%1TOt;CzZ7`v=fNq0ZnM*`j8)&YK9V&dOy)IwB8Tt zaT#~lSzIW_Eljr>{?*KzpvxIr3TPoi^Gs-_2~p@2lWrnIW7>rdXWSs*YE8O640SW< zic<4aJEUf$rldMdDB6TVO~~ShQd<2`DsU+$C~nFxeq72S6Z+PK_M6bBCbail2LXt@mNH4{QhX5iW&im`)ZY&An4Gogn} z=zbGg59ltAaf=C|y)tlDn-I})8|GXJXrUABmvg2GO);T~CPcU~OgG%b4Kkrx6Y66^ z-At&+gb1f|$v1JRVTJ@5CX`}A4ih3t^|;X{F4Tl9ekiHcgiZ*N^b5(HbjZYgYeM@? z=u=SaO?nId9uwMy5=5N=4bn~8PEgWQe#qI!gbB& zY7gCU9^6eP?s|gYHgfvwlCA{2B54Wy789ClLeou%a1Bg1!NiR+A;Jyi&;cf{+Jt(U zP?-sNO{lX8kt{lw924g@A*Tt&n^2?)1)GraLy4zN2>MJsN;ytE2>l;m=xY<&XF@0+ zBlJBJdc%ZXHldy1v<>cw#P-k@#%*dBx`Ah;K z&|?H8?V=Gf;~p}h`%!LpF>bvdM|25{V+d^^GrLO=zzPy=6jsOlX%0Z8xE(Oz2S) z+H67_A=Nr)cp~XuZ!sNrV1)BAm&XZ|$u9&sZi2g>p({;jg$YsU5)MVXX3!CCF5{-R z!?C?MCIE*P4gOFQ8el?b&5Y1qCPXpHIEJ?!t~29u+Tq+LPKTU06EqSO!Hz$Ilt0vd z+Jw-KIfCs+1LN8cnxSaX9KlIf+V>@`utQr(EhaSAgr=L&1QRMVA+HG$m!Zrh$Hck) zP@=H!OE^iP2^K#@I7cht94GuZ$1f&y$Pd}y^K(gZnoztSvcF+MFZ-dy(|!nNsv3E- zZ^JPZPmoUSTl`~c`z90GU_xt6=r$8V%V)oq;!^KtU&UOO`=KP1s*X!SsTvSU)PN|) zVvdXQHR3k=p(ON7I*$4tBXl;Pshq|n6B=hibtXh~gPE=$BwJyx#C;DFDls9n&qin` zKtq`>%fz`%DA9ysO(@)itR_S_oeL7zIme$gp<^a=*o40KLw1ssWTSI-Z#t;3l-;%yj1^L(j(e9vX5& zH~2}s333#^qLY1OCp8v+S3V8p3{JC=;*5Hjd@TZaO})dIH`u=sek*YhXCzh;WTg5O zev!6|V9W$d8KlUMR8O#v8B=Ldr$PTM&He+w4e$xV;PjM(L50uB4W~6!__+^T|lduZA?WMerc;fvU%m&MNPBES- z`)juXlSykQGEnZ> z`q`$wBbd3p%PTs^Io1M>^)BbjNu{g?5=ISVOtE$?_!nzy;E$u#DOpVGMmUq>d4{PJ zBDCuXqhYQbp^vjq)>5p#gx?wOFG!g|`iE_NOc;_!4(C$n#P$%uc2%q)cSvg{d>7tc zz&e|Hk1%8v@G%cBi#cvFTU2+v`#|`Av40Qzaq0zvNvl}tqq3;Ro2^8n;G@-opR4DK zrOGw9Q7Pw;W@Ijv4(LhF;Y>N6<$QxF-(U`J5MHcc4X+@)SixFd!6o|`ui>r0Nt3`6 zz4!@l=19DI^EG&OW)7X1a{{NBz}&9q^8E*C6(>a!|2sME6>QbbB(0dwm}d1T;ASq_ z>AV6rfJ^fdmgEj?0f#;Xe*%~ICCs^*X`0pDz~8~;j{bxwIjudUE1XKt7`FKg=C)X) z(#+shtHo*r?hJT z_t)kzp15UFzGM>T>lE|JWd517?kFQDM>31rC{X^!KD8~GTsoO-GaXrmOsXlMp>oV* zN%~W+RWMrxE%5-)@|06K%5vsV&ZWOkVLeri<fZ8H$9P`}3 z_(!-s?8eDmH9{9~DO58}wb~9$ z7Og$Qp9J5jJqZi>oiQDJO^m;U{afLWSMH8{WWqZ_t(??#&bnZ!%N6fgTqA5xm(2m{TvNRbI3|WG!X1z6+Sz ziUhW_V!Yc449Ci5nru!hmnpM3EgMs2TLywMo6{X-=>m8ZON&))>vVdSEt26#g7J>p-@u37+=b7f-!c3h!^u8OyxN;^tUSz&~uk8EtYI zeVmSGubQa#M2u#Dwdu3n_LEL9Vy)x=ur!J$2LJnO27Q@@yX z)x@RK#QfJY=O(6aV*0z8{%*$H%@`;1bTU4bIXJmJe}v=4vsCd!iTw~{;Z;mi!5juM zW;5sLUrbNuQ%bp+>8~Q0#lI;>*#7~%xJrXQ;lqZ-GOk$@nC2=d3 zY7Jo2Q~0n|v6WI0eTXMcJwYpt_u5IeW1PxWdMYf{bk5OqmTfxiQNWwNWUIHcgtzN7 zjKRnf`00$fj3ktou|EIGIlYWIT*msmjLYjrroW8ST`8#Nbuz}u97?#PvKbCzTbjnU zRKlD~*p@o8{e&@P38z)UmQ!NM05|$>7v!|q;pb8=RHXJC;1ZT3m}^rB%TvPgOk>UO zV9Uv6NlG~N?p(6nSr6UWDvDW?t2o!)nX;HE=dlb63|&zVvVi&D&zxDSasgBJN8tJo& zC8=T=s<_=KvrsFP$Z!?ssKt`cl&}ifLXxOz)<6|YSOs|$pRPzFX8LAWB6fi+#3_P{ z#d1I^a3c4mIOS}+SjOKEdz!u)`Hyy9w@kIEMVWHJZN4F~(BaX!u>5Hc7}2_a7F{Kawbq5U&Q z;SQod#r_z)!Adyn{Q;d6uW;Sl!0;0GXR`k~*@SqP{WV~TyM{5avOkk4_ptxC>;ODH-(mL_`%jV&iK&%Y&KPJB@JwGTd^8gX zb#dx%(r6fO@c#<`F2;Pw@Mny_mnd=i!7=zxGWA7;w2{A_bS<7cw}Hv6CPli2g@ zKga%0Ouw7`XW4%N_`qFPC;5waZoHGMus=yfPJ-+zG>i7kgufiN9H(fwkb{7q?~}G0 z-#fk^d_Vh+`i{5ZbjXJ%JKt%>hXOh-;tBS>4hNf~pYM6!*XPFLkYm1+Ow!K7c~a)j zcffbNEp8iR5)gnK=s({noIz#&eDC`XwZ$em{XdqumG5AGEbnpOcfJn*8&vo%!$#jh zKYiO3DSYkw&3}(O)<>IMZIDS5ps~Q5QF!~<0kQ_f@$+GNzjUPY@7g%%GzK^1nL`XM zwwK7a-}e!;@_|1s-?u2&ZQzBnYy0`oI{1Es!Wvhqi=%lp}=x3Qc@@ zcJ2&{<8(ex+Ygj1xe&;XCO&rr-NZ-3(3|ov!HCaR#b*fx@Ym_k z2bn+A@FV^kq!eHSfv}&V{q_75?b=w>U&s=`wLORb)m_jZP)Gj({(nSM-8Fh4j6KX> z4~&p-g4H=^Cut}Fbe+_nKvRcMbGY2d*KIN|pN5XPy!{qyrf^>1e0Au&gg~Cn@tnBl z(G_a*LBE8M-sqdoO+lyeQ~JaGrHJxGT{pBw?bQK4Oj7yV3Ro;!GJo8*Yak9X{N5IF ze#m!>>cKg=^XuD4fou#^H!zR3azk(A|8Y$-tPuS^wIqLFlYYGa>gRCo6*=_tKnsUo z2c5>(O87tQf4|lB<&TSNo5aRgMGp%sV;%M#@y9Y!qPRw?gh2@#Iph5L+voF?1Lr@` z<^wG1+;sKS{=io_jY{HAvWMUrCZe&UJr@56^e}e3-;s)cG~PSN#wkAZ4cb_om{x#u zg$nVH$Ej}JK-ClfWSsEV2YcHqMHSlE8qrs{vD1GFwt!E=KTFKOKbud1&JhpbpDXCZ zo(_1Y<1w5d_B{T181?VL8EdcOpO2CFn@H_#{5_b}{|IS*g1=Y%3-5#!3i@6X&TJAt zptc{vzXzTrjzS9hGD9zkuQrJ>_-<2@7>8%DWPIf&9Ve4bpmWJ^!c_%MAzQ#FPUAdx zIRTD;0sSP@ZF(VI7e_Ped!6`!@;+n#0H$&^#Hzw^EgiC z`a4eH!U;q8*2I@$Cr-us25)K5_n%+IX-{ME6r)55Yu3V=wXkL_tXT_d)&ecLp!2@? zhp?u?SUVxm%Y(p>Ucy-~5v-RW)=LoUC5ZJB#Ci#0y#%pdf}oc#P-gq_kAil-LCJj! z9obk%Hr7!L>qtUJF(MdGr?GhMB26jQ5uJTsjx!RwK~wRpsbJQToplt(A}pvAMsz% zpp`Y4iW9{S;!$yo8iVrePv4sY)g$A*O2C;<(v4sY) zg$BVwYj9RnE&dT)29aC_QEaWzY^^ayd62cn8l|!sHXFxf6VGL1=d!VK*;u)3tXwu$ zE*mSCjg`yB%4Or=vPs~wN#wE#=CTRqvPm+^hDycBrINz-8^&crUkNG4S&~#XE-sr; zw&FA{Avc#$I+suemrz){5~5PcCB_Tq?O-Djm2~I&!JlxKui^U59Xa zB%>sjQXeYHwRiA;S-S;axLu`<)B4~WBGFnXPS1J|XLN1B8DdM+6zv_Hj@AdKt#!b6 zSx(?gxc%}&y!Z98+=iLwt$8b{KUim5Hr4!=#bU5Q|I68yPICD)k;Jh_D zZEX&puhya#;~P$Gr>D_LXgISBXOhv0WP8-Butx{_G4c-}=U@1aNvH3)+>4VqFF}u} zfH@^U#fU*uNxt1G+4rGxq5n|0`xIJ)mwkPGZRn=1tftiZyZP0Hpu&32U;5iAWo=(PTr;Wao2=%EJ-(gVr z5ORq~SIa~^R(`|ORcIA#$a5=|4$j&ORg)ogqwg4VY{B?mDhp&}ZRt4ZC6x7ckLZCE zQm}e83Or|m=M?a)1kb^0wdjRauyKez7SEg#-?qc^PC%@Fh&30nmLnFv4u&%TufqLm z(STSB(bADLlOTyM(a(_RE9Brc$Ttx=y$E`ltKqr$)k0{HjNE7L(yM35KGgkyz)o8%5(rA?8#aLZ-qW=>W zn$?<_k&|0g8dp-1;B_R#IqdO_(X`U^1Uc|aYhskcA+=Upa&(l_ddiX-8fSCg zIYxCm^L2D=Qk*SBO^rdL8GYuy&`?KmT$D;`T`*}9EP~V07FlypvO?IjNX$Kkn)qu? zd@M@lIzQf0Y~XV>#vAeWaQHlRvF4ALi?>2)9?hoHneofci60^E!kdYPJeK+Aggfx< z!X;*SpL4?F#Z$E`({SQ5Mz{WQn`y+e zX7+RAjBe5rAMuUsP?iu86@u@&M>$-c)>&z=?pF(ovI;XDHg}lnqLHCH;=|B} z>4v^0*cKXV3G0N-h~c3&dt8*;E@ARCj@NB|3|ggRj6u7hj%DOPWR`}-$@P{L7v*GT zkeCVoL;b5t^`@nHQ+3~-oEm3ONlE>Wb#hgzC&lGSP4&1^JgGgC;t~>*9C1lk{i&L2 ziGt=6&6?`B;ET1(&5|O^p}F`V-)U_m+N&ZV78TlJ5~R_LNaQn})t;GNYR}b6ATtx7 zAB*xUPDtNzIySC#U6dm_RfWmFhbBhI-uBc~d+S%BAx8)}8X6)~7_-%pn$Y^{akm^4 zdgerYqCF-?jgJUPvD=*?U&YWR;p8&*w)DlaVQ66|Lt-b! zFa;T;*RHVjchQ)-~lX~=W_ggWgytw}I3q0f1En)d_QI?RX z*zB5#<-O~x(xan8f}-qsVUh9So(Wfux?tr+#fi`uOTijLkHD=Hb{v^_YVCAy|n%>ee3U?sF%Z; zjkWV@3di^D7;@(4P?8x|5!6{*YRQ3B2#f`f;@dx@gBWcT=T(CskO8t$xK*8ew?vPn zHgG>cSn3BZW$IzRvH)ru_Pkuln)w4RzIlPv=*`|`>S4Z%+u_}`UrJBavRZ97WX00~ z&gS*wZ&aW9^8h^OL4A+@maL2{KN@<>!nnd;3)?E>S#=XtV3i!lHSaytLBWvCCi57$ zAL>=xsn*5p4^45P4t^J`S3a_GLo?BA16^4&k$CG&8t z-%yV_3^o>R(vvM+!Tj3CBU{qrMT-?|OT=%nw%fqx;!6s^vkk5hqnYnK@b$-|9v35E zga^itw#akhN5~{`lV4uT>T|*!;sJT98J>7fcsx#{rZMsWDho4T)Z;e#%Mf_#arOL! ziMauIsv9~!9N%c*GKcM;OieuJ!=JuJJ+V$7ffI|{^iMspj)%P56YKh?o><2xidg~a zQcp~H^u!anR7iSDvVqMZEa?_yyv3ik#dTIFNw9^i5WP5AVV{6L+~4N@C#yvBcXoe% zC;IZjZca<Wcn6&6Am6%hy|i6nkt+%$Km?7#D2V z>99M3tO@QoyFDyS@6U~zg;Js3PuC8WqQ6FkATMag<{QmXKo-nSFDBl4WnwBM9PUU> zb+mqFv!bg?b({!x`DKVp3H>5G#U7Uu+UNxv-LUu%Wa=b0dn$jn$UrSY0OTWy)$-&Vp zNr;E-snMZb=7g3`zI@Q2%O{sQ?6!n3dzwXyjH+4Kzu%&on8@TEktq%b-h18`?Xaa} zpoCdEw%)#6YhrQ!H`QVtPqkRb$B0*qo&vey+NR^9F;hdMiacL$%B4x4f^Q>`zI8ri z?K*w9ObEb}HR^af=7I3NR&G6L4^srjTJ+QeCB*Op4fPOIA}9f)zmVy+^sD02WSTu8 z)g}Lxn39@kccrxs#tHqc=(STFXEu{ss2K}{TR)tHF&)O8I2S`trz3q!VuY@BqtLV4 zrF3?>_Vk9>q@-9iGcGYP?##jXG`Bq=1tKIs1l+VEB9)F_*th?Oti7Bpx__Vt2lT$;} zqazYSC$i?}lz5^d>?u)U&gAs+4EZ=ATQBH2wWpCsnZdow z2;{-4MRr5mMyqu)m#vbpcpCI=BdeqpX&J}8v`!uKCfYEX<(ILnC!IRl_b%zlcQ^2f zCKs!g@Dx&{H5r-8?Xu1zY^NWaVJSoz5H?2xmfOK@;uUCo2yoA9WW{=%aD3DTSnP3n zp36+6wbq2SX%5UX;JJy`bFhn*T5Fv;aXazAnv(3Q zQSH#N_D939N#>}p6tm&mY1}fJtd*Xba@z{U|CnSxB~9v5mFg)?jwnb=OmKxp<(4Nz zMnuO(MA=h4{zoB?Q_bW;x-&E`D7*uP0g+Ms>_bv~04ch0Td7MCzZnQo0GpxRL8&ao zf3T5XyEnK(+|iK}E?Ge6+OIXK8W5?nK zYArBV)r@`VA(%r>r}i~hE9LnP4Hg`4!+!b_X|(24p{-U09sGVlYj{?4yfdnGm{rb= zZM_i9M`A(>KG+f`D+aed86B6HqISAtVxwB8EtCy$XDR|45lAx(Z5>iY=}coOQ?SZH znxUQ-!&As28Yz9N`2<3V=gPf2;Cj@7R$v8@xs;I{2HvWEYt*s51F$wN1$%K#-fd~Bdg&EI znajL(^iF}DZjA4tzERI(Y)Yx-%CRIPW<3um?CRt2iv!|WH8+fh=46Gcfo`IC%u3c< znyo+0+k&jtgurJ>!=i^f?8!1RECgC={lyZx&MLD_{n;JKGQ$<=3||zK7LgpjNU1%c zsg5>v`b*<$%!VRm^dbpyumx(@{QU<#r{`L8U@(46QOOnIPFri9)S{E((^3)=Q{A80 z9N}RJw!MkT5GGAM7arESOv%d<(1<_CE!-(v>pw#xu=zhk4(M>^2g0e*c9*V)c?#*H z6k13>no}0ws$0o*&;&mL`Q^!#0b)SR1ZjgB)WrCtR7YrnwY4$98E;Q=*~5~o@~=_Y z#F`v`=6*+Nuua(`&YX!$PL5OK6H-D#&K!@Fr{a_K^p9K68=#yPQu?r^&&~3_j%|tY zn7PU@$CKA_+p6PZ@Es6+++Kz+oRBp!9#25qjB@TBh=)D>8o;00N}W%*3^M5FwWD_u z9Fkh~^-@Zl zGr?+2>6oal2vAC(%AWD`&WW??)~wyd)=bipHA72m%_j`0FK#Eb8>4L2F6{X_ZX5Mn z#^XyRT)KE(ycfCYWQ>VRN~z~8O^}6cW@eTz=ZxpGjwHHL?5?aRX>FYro@%#ah#6rI zmTRM2F!lT)dlKX0Q)Fy*^1u{%x;35648xkRursZ}@(?%Rn`(Lw&7zt{Bd)hG-i*Ua zv8bSV5OdV&QnsRY!_5-)ws-u}0sWVbFDMwlwEuvm<{M=hAwx4c!;e-&ksHO>G&|zC9)cw zpJwu7Jmj_G+cvM7;TAJI+{h1wzsBLnFORZyzMNlwJRWoC_y~NXjd}=O4jOgnc!xO5 z&xks{vx!f_cl&mm^fbFq^tl@2+m$Qn+aIqj{QPpXg`Z!Zw($0H(X)8_^yBeOpf)?X z&6GO|Ys0ao+%$^P^O=Z|vZ-$#N9lOdqsfP#di8V|Z{(And-Zan=ic_=l#eYKcjV#8 zm+Dvw_EPj|d-_c<9&9nqr}u4`ss0}-puDF`m8)x+GbO8wBO%fjZVAR@AO>jC@gFND zjo(VL6N8I`Q_}H-8x#~4%)>U7>#wN(Ye0n+Ecw@v{2R=`{eP^z2Y_Tnoj>07Ug!9_ zU%%HmrK38)0EtKvRaDjRRu)y1;?$EiQBkv`_Mh5U-=_zs7YUD3p>`R_^$`Pc(P&Qspc z*Rq%8R?sq8?qV*3CX~14YN0h(9B$0z&s*igFDa+B_g}4Y^6!YbZoW@6f%q%kmneS# z9KA@M@nyY^>)$Wq7|+3dE}XuwoaBp0Z8`qnf$P>3He9e)N^&jcK8N!~`r}2Xb;g`jDa-xd zq-?^ES|^>;(07G172KXXQ_t;x#lXNT`oC%?MJA~oi&kQ>O7v?^xIBhV9~(PkMEOlq zs5Cy29n53~GQP&|VMvN^bz*<0hvdntmp=f4k-1q&A|*$00RxNABs4uva?5q6_{^8v zjt%S@sPF23LYSXd)2AAH(gW#CfAS#zK7uN=s-|QGt11s)$pTgtk)#k`ok}LC#EYRHdBd)! zLzUQ2>2a5^CHnV_wyhoXs;>5WF4Z2jIolMs&0=vDrUxSVkSqAKp1`$^xzS?RRJ8Fk z&_BnNuQ!-?eBIcDK1e;_vRc6XhyV(GaDsY<^&;SL+?K{QB3_?lzJP~lJ@NLBtg0Wy z4wdEl#Ir^HFe0x4e&MS6X+&O0vnoNaNr5`XIKM?$g`8wPP2U8FuvC?epj?PXIhV!2 zHeG9>q)bbMwJjX!b-Ci2;w^3)Y+KXTzHy*u^I&rF{Mm`~v*Cp5bt(g6@y^L?X|A)r zV>CT;fwQe@54qK(E0>RUB=WVC%aQJ$=^WeHRmy1LK+5iq1tOJ1wj<_pCu?(kqp#?p zUT|#rs6rCasN!~1lE@s+qjCf<2{_8#$Xfbzvz(7Qm0M;1xiseDtxk*;L5l?C@BF*z z2fXw=8X2S12G9EI`A7;JNUIV!D5eXzR#k%iy0U)U&{{-&(%eOTH=;wLFGp6@kFJDs zuL#vA&pYZHcnMwjkGRe7C&aA~p;1XfB)UiLugHCNoyd4XrKqM{2{J)%EqHl#F13l{Q|qZt`HJ zSI-4YBbit=8XxLTj-KvRi*YHcs5zTG)*dW`v+Z%8(mvT$TT_Y1JwDBil%Bq|wZ`Sd zr`Y-97o6H1QbKKh#cHu@`9!o3b-Ut~HNE{i`$3naE8GXV?4n+xOGK8LP$miHNK2X1 zAY3!(J=Y3EY?8fh;ib{v1mUY^`k={{w;P@LM)J#?_cS5W+NVCb6d^H=Q~ z=-+pxv%3A&YeUK8!H#uro=}Z|n(|RjPy*7BpHS5=3a|RsD5?PhFJ@XFi zS<+3W10)N`@Q}&iZiR7Ke>ib&>d)NM{!J1>WVDh&EA57Oh{iNM3aT<%GMA)3Vy(>p|cSVSw}upeJ*z$aG1VLxI=9kmagenovy zm57O@5JOuDPg6XF>}ljIT?9KHcufiWoMiUj7fsjoZ|>~ej0>( zUdbb19DXH6LcsmVt`nS->eG4@a0Tm5_;Xjc6EeMxkA(OxSrMYX3-^x-e2!3$Tkxo< zX{%B@6e$w*J+Rc5@gyriz;)9PMWhILJ|b6J@CbX_^bMoGkF@$rS~}pEX)iK=MSDk9 zytiD={m`xVn|LgjdrV(x;qwUhg%Uo?*(@)kQE^M<3r4X ztN<}yBvAxBY@%H#O*nZ|1zbZrt@$u}4R{Gw7~tq9jWeA+L-8%5tZ~l2gugZWvc$!W zdB~WPM7KW6b^O?FXVA%MFBB8B7gzOYxVJq~jfA{LR7<#KhbwXW7IspCBw{V^+87Cx zN{A0NLtCw0ex=n*)pXa2-jm)edLN{?YqP$Y^k#yWkU<1EpJfgCwG7$jCg~bv5=O+j z3fd^K1zcQiN?tXm4oI7|q~*9h=JiHw$0aGNq? z%^ZI~N~2K(prP#D3a@R)ik58%H^@A9hJS*~b~x?uiGdJuCR7{#kk1Qd5e%Vsjqc+p7uhAg0Auj*-ei}U!hNqCD^B&lHpbybPOSn?t5(1jR^Y2vz-e^~xQlk@Vq68B zs9(T6te0o2l#!)(3ink}4-|Tk4JZ^AMr<097fOJ_U`WMa%=LqzFZ&yt z!+!QPSJod^8l$eXTaCJZRR5|X-HFcl8pk#-g_(BzR*yd%)ucUMMNb?bi~0S2mRfB5 zcL*aMz+4XE+lX!wk3>qYR$9e#|cZui+6 zcZ@W?$HiiMf|XpVLyw0VPsz+nSttA}d<1_ZMi4pM#4iM#Mo_>NaBkvz0!|}HaI5Uv zP2(q^q=ksuZo}UgSh|4v(1J%Pf3H=a##_|)Aai5+tHkvLTnBe1?jqVJZXmv@Z6IDC zptMQ^G&oO`3ZJC3AJP=D4nA&(C{QdAS_;Lv`|2#j{~hR+%4*KlIP75ObL(zIPr2Dm z_69<-2@TF#T~UrdZAEHXJf(sR{Z^8*_$qIokJ#^w5qqBFF5o0V1iYD*DBv_U0`4|+ z?{>&c;Msyl2~M^vbdwUYg|pb_(Ugv4NA-ue<-}JqlxXNAHV~f7^KW3y8S!ZLoE}F; z2=s%VnbPd}lasGpQ&~HZNF_d3TWD)rs8#3N+vg=1M2#&(5({#mqdhi%<>tksbMcOD zT|P}qHb%R)_4aM;>e|}ZyR8d778v~om_A26hFy6t_F*;Q-!tG=>9NyYO(>U`RJ$lW zc0qu@^N{HpUV0F{Yra#Gp202=85un*-#yo85$|3U!n+T_iuuP@%Qr5U9uAY=4-$iN zJ~)cgX^EBMM6efvcVe#~?wc7BQ0`sA&xZymezMd}6H zVLFAEQZJfsHG5%$FLL?ql6>a!+ZWT@4>9)&OxG-zUV+^y@LzVC);2Mf_Zy`pw0SvV zi`0`-O|NT~OTRbDtM0iFGs7;J^tM>O>@P}|SxTsIG z_d*N)B;nht|4^&-r%!LRpdV^Mf4hrz7gm;PQZMM&XIf9b7oNh`B2UgIDF%9SYBuC? zD=NCeC)d7$e!nODZv!tOayT(uO4|UOavn1hPRJ>@btN%3?(gd@^kj8g<%*LKJ{Cp4 zL$kO`5ly#Rkx&{?(ps~hvZFOBj~lw4ptvs@@RIa6xD}Viremg!&G)4HTjTS@Ho7II zbLo%rxfq|A=?q%mSjV)G#R|5Orh-+Ca0*6>{(=Eu>nD3eSXAV^sT+lUNOfaZzANMQ zdDXBU+t;`4==8#clifRK+LOWKKk2MTqb0R-y5j8gjc%8szU*-2D$D7mqDRXF1G;MW z+haYMsvd0y3-Ny>w#$7?B$zwUbUt)yQdzEhDxDu%9rX; zXZ3oCs7{Q?NdxExy1cN$K%dG3{y zljqG8XZkYc7`eBIEh=)ldm_{|-_|zYRhw&XpOd0!YkP0sB8)|DIkG1)du7g>g$lsU%BDe%krmRxDc88gsAMaA9|IFI z&;9jDEH`^(P1~ANItI3MJNl$p&$=Eptmz*2_~~<1ea(^C@^o8iO}TxhRGO))3A0%Z zTr_x|_+x#$ec|Z(!2@gCySMhHhfkd-dn~a)ASL_PoObRd!@I7TJJ`9YR$JfMvA(Oe zsgr$Cb_N2PIj)6dmp_0FWqyN~JVSW{$bh7o|BVDqoWlpfu^(>1pEvwS#GB4v0sk}W zVB@?#NrdJ4&mbBjbNHnz;8y8R2Mu{(?vfrhi?5d0BhoAR*B_PsAO017lo(b6^76=A z#Q7C?5dyinOzAH$E;h35iZ$~WfyK5=nCswxG?ua$h0(t7-4dNdH&T;3X^hdy-nLwe*LW^pF8Z{>!ON{UIhnf8e#P z(r-7mFqGeIK#K$wv)R%CW8`Px?=(y4`=2xsJ=O_d(}pHJlB%)HhDmE)MVl+cr4Xto z^90`lk31F_Lyhjt>_>g;lz$hJINt~RMw3)#KVT0&QR4z7bFyS^3b%;mbXVSCN$ zSVhfh6x5vCyhg}MXUb;}I`ncUm_BzBc+>jws6vl0#_5T9I)RB+xUu$N=Pb)cQW-+n z^+9_VcwB<>G()q1Ld9IviHj$@cFnXgDG_9^4>zt?&F$lvu8Hlnu0!iqEN55Ntukkr|ozl;W{Mli}H z&Y;wXneH}C8Cn!sLrs4UITOL)(OY`rd9GGA)|H+nN-^bO`;~|lW-@Fgg6su`!Vb+5Il+CB*g{%QNwpufj72~ za}WVPhFxQV?*J~BTlIfu${MSU>eFf#^&g~jz4)pnIITB=W4)b2XL~_5vL$d!WQ6gV zYt5G-3|r4)bZz4@+dR7=MKh+>%JAbib*q3a(>*GMMh=cPp6BicM{YQq9nOg-NkkBz zcIwq)2-wi+JoH^)gBipq{CVjctQ}a+E$v(Zw@NRZLbacu+VaiK+Oo3rRnu2^?Sm_7 zlZEqnF3+fkALC;HrvUo;pdAfR+~4#8iOzL6Au9R-QVyvjJle@_C;ZVm)&C=xDWa8! zqp*8%KB5UH$I|=>=wlzm>_KCtx-@$N`skMk@81LZET208J@#eH+|qji{WIsy0{YbT z;CyuI46}3IET9kEMlEnC?>Rw>5}=$PMos?=3{TQef-W62eX`a2BJaIbdd3Gyzw{7V z`2gqL;wuk*2VX(1naOlFS$+ogPu_>BblMRMaK0_-KK()B+rvwv?C&Z6iq{pbm)I`T zchLrN3b7A?@WvC)ktS*r@Ba3Eunw1=LO$#_;nm`i`Bp}3Da##FqbS? zp&nC+GG?2RX)=6*Rz^$}KCU`^kfl zq)AIkS_%3ak6!$^a{TxHAI|;IkN7{)!luSk^gZCVo6qPj(|eXKY~i8&-{8SMA|~hM z@W5(CzfJ$f`+dS{{Wp_xVr*KLNjV?iLINw8By3oM>60U0t_yOGcOF6v@Sj(Sp z)yFE~Fw-w66zo;Z+hzP~eCQ0*O4~b4v#aYs|}GK9bL{ z(?RpRHQiCv^y8{;PO1Gqzu+ygHq+!moW zyJ}@SLOd&2Imz5pFKb&`dBJSQ%gsM^^L9!N7M>Ll4ZNu-=x2go8Fn@@k(w(BxfbLZ zl*Z>STfhFY`FZ-CJJ_+lTHVmmv7uUB-@$BKj?Tf=wRm)X{^(+Tu~u8G_iwFMw_;?- zk{FjB!x&s<(AqB`iJI{LGT^YB&-S#SWY3D)L~Fu>K&||;1wUrG#?U$em$w^mSjR`9 zZNQVh$F!5Tc5ua8WF3DSv_+oum2V$fe*1EI`yrg$)b#3)%d z#8p0HMfufB52O4E(`h)trP;$j80D~$*HK(ajK?=y&hvNj`g&qY3Yx1J(5ao$Ys5LMQ@r|!!K|)tx3_Bj~Z>kPTAL*75Tje6qf%!#Qo8~ zUzl!gz9YZ>gi;#KPh%d6@Cyv{RWyoKbi%434U_g|Aq@a#qwrw~dm0k)#7(b1=~!Q@ zuJ7zzU#+e0I9#1gb`M1(_4vBW=jSh9hozUF>L~R`eO^a1C)l=Ptu@XZ7;GOdMeX6L zw!9V(%m>vJPB%rt(x{oDZhDnH7A)H8Ks^`;-}3P<=382N-OOlQ7V61io*Kfw8S!Wnm6W{c=j~3j*~V*&D zMvl`;>xL$ZlRPP1Tn{l2)Wb>w03=t7}8Qi*rvgK;eu@#vM| z{O?3Q7<3zUBiE;H0kv4AhcAOR#eE+*vjLPQppV9hc99){y2Psq3jGMDB11!`vpxYQ zkE*Es)Nf$5o5q$7uBZ+D+(rC!fY&9Dr>Oh1nQY1*Kr3Hv89K=ONncK4cjo8Od)V@? zF2WSiDM41a?w0do3239B1V%!*Esg9-j7`ZQ1-&V6e6~ASPNw^k>8ZX<|0z9*$x+=Y z2i#egI$BiQ$C!2 z(rKwS;UhAsl9;uX^`8Np=1stx^+_KAy!jqhG}^+a2sn`m2?ALbAt#YBZ(>qt}2d zbp>>glp0Q2!~I?CNBq1JkXAZ3YxEFXUqn6C88_{93i2;}S=K zwY?Jhe3qz10bMLZi7s|=y5L`wH?-P*0Cxerk+*$tMSZO1R}xhyShtt0_~M@=TDNmJ z{Sem-AdhK29)$wM6Fubk)B9xP;QQh{D@Y_e<Vz{P*k%6Sr?UyxB|AHvva` zO?{QVzx>{Ec~f5%?KbgPE^q3qqP&UEa(Po<73HL_5?;;nroKw0Ch36|){mI5bF$TY z;_CEPGma%{f2ai&aV!p%Uu8g>k*Wtw+j*pF4jL)Z&IpfGi9A&vs3MA?rRC>-(B-FA zWQu%MV(nSkt9uqwJ)`jh*xI#%zCdTG4y~Grt9I;73yO1B#(Oh^ooV|XTtV{^vLkZr z-<9^HN(n8-GhgT^wPt@Q^Tn9G#|`c&dfXg6jM_YD`J%^PYW0}nR5YXCrn`JhY3wzz zNvbJo?CnN&s0aulNtFbfNNL>ai&<}0Z}FyrF|&N9C+SPrza*JslBy_;cRJX`85Rjz zJ=Vtdq$D9(@^-Vw;Y%8={~WEu$A>5em@uWjme49vGDYjciHtqvDh(gcPL)2cCM4-S z)})f~UKl#toA9Nq?={ClO2qQo(Al0$AZR@&_ByAeCPEgcxv?FGp5X}B4yo}IsUzSI;3S{_ zZo$9ZffKa*BVRCxd+k_v2!fi-dg2Y=z%z_(!M~|<$a6Z2f3I}brY`{O5@1Dsi zO5c2?zPU_1a(JjXm`+FmQ03O0=l6Qt9BG?PPtOd@hBF=E?j3`a@`3VarpMAlMdodC zPQvUr7_Fa+QOD?VEstYN+>qc_smTqgHt{_HZSp;W(oBdpnvrm_E)Ge77W^6Z4V>*k zG*9)34~hEA{E*r-Qr#nJead3Q9Z#!^1F>Sm|ANf0MAhu_t> zmG(=Euh6JHVvO1?eAEP-Bn!czu}u?Y3n-0`sQn<$mEv&dQ^2(ae+GU7x}B#3`cfLY zt;;mSvjMsG!_Qn?VQYs<0&F8n5?T_LsIG-L4;0LfXsnKuHgo^@L|@O*naN2o701 zmJiBt(M=uT-p;y z>65UC-_t5Rx?DQwLFp6Vg_Jcb`tVDm6!W;t+=7zTE_!h6G}eU5r?y%;ww+}B!)yRr z6SYJ=Xuh-DgO%?dUVeA0&<~zif#dvg>8>ZK2grz}Oi7NTd~msR=Wloq`c2n0OQq+G zQh4d|-WC+6x*9!rU_$hZa3q^S%ve)z5u@;pow?j!K!kGYetcaA9 zM3=E1+Hn*nov@nG?d9%@Gf~#6n|kUSN}Y3UBj*-6f-BZXVR7~e#ba0edfaJG6_n+T zEVTZ`40>9l^Z1e0_{z=oQ(MpPKr-QyG&^-#Wafp6Lk(5@DBJjdW+D9WmzWJLt5xf?nbX{oSwr(1c2#GN5GLz8&|CG+TaetM+e8 zq@N*6NA8p!g6C|AxEW5;|3}Wd3I0F}UJ`IbQ08TvxQ6+9P@WL=mPXBYy==Xbs7H|( zvqijTPPf{BjK?bJyUq4(Y#+7Hu^p9*E83kWyr7dmNcZ#cNREieJt$q*Y!BxWHTwZP zd41qX^+i9WO|9?YJG@*nd2!$1tn^=yrxhOkZ2EdNh##&}gNjH1_18g7E6)dhOJyjY zov73Xd|_1$Mf_^m7wfeo%f(!>oMUgSZK`!FlqaSJGag;@{!vkbzG5jd)Hc)GS?%jD zRK~z30_=LW0Xt5Ks{bNIvkmPFot>1L+}XL%zSy46wYTT;?NXtWc5ZZ57b=y7YO$xM znD6R>HU@24>c%~Iu+&9f06&=(-GORA-N|K}xwtsFTs+(m2qFJ891gIr(QnKW4gm5) z3qfATA2^`#8eZph77P7FegWiZBeS3S0F7ih-&6R?PfVa?UE41i8M$Qp_KQbHFWz2T zQz)#d)n@Yf8Rwqc&OUtG?%lT?KKr&kXO3R7ZTlsoqnB*ocF8E&)Ea&=*u4`n`U4%7 z>jcd>HPp?=LrKpbw?CMQzT2TWLh%%0&*8w7Glk<&&$ODwVSUurAbuLaw{xZbgdITO z2twZg13p3HfHGw(vF~wZ>Yw$f_g9tL^gyWA?sEnmYAWE>C+4!#2l}Um|IxK4M%ie3 zQ2BlJ71{cXmJ509v4A(~ja9;ZdnX63o%pDeus}3}JuH2W_Q1b-6>B0to}us5n|qSP ztN{nkw3=+K#C=C++XJpZZ>BKWRvgW!(XdxVdi@vl#`9d)8;wR>_Af^4MfcEYz0;R& zD6WtB-LcnN?249~?C2ayAegGU1Fmlb$r+Ojx`K{-VrKjBfw8sc4r@VY$fah1tqT*K z!1#kF9KcfWhvXA>PYL4_)4;CQ;(_}t>^weLn*(VN8^_UGI7R}VsN>egZ$0#(L{Rmy zw>WXq7oF@#<1w}LC*1P+Ihq~BHAL4|oe5x!OOa2xLB<)JnrCDYU~N8K+Lmx(JGr6- zJHve&+KW?dnVvR(G-{J_GW6a8N9kEt+UKa$`{6XV>-Z;pelUHk=mvWhvz#sMQX{x{UalL2h&}@OZKFaJ&EyJ z_xJ?^YmpI%yubx^dcfB|ogds&ukRV`oT>VBS823_14sII)ypHrH>JAb@vc;DbhI%r z)s^W>Ci^m7Q^bYD?A(L>n7w3y(llU7nkxx$JXi@>R=fi*N%f4JFgx9QXWS8Ab+SCQ zzfa6fa=1iuGc4WHv3_4~>CE%bTGS;yqDHNO^@m2xT1R5!>^0+OPwdWPY9{i9$zpM= zKvKuxj*z+FVUU^!ut&EHe8~g7$j%X*AG6k!I(%`jlro?1oNX)4Rco__(rjlYpUdKZ z&YtakecOA)?}qWN+W2^_YaEnNz!&eueZvMN^n*{f7$vz?ut5J+(XAD$*A`HKf~-kP_w7{VtzYHEXAHk+o;p+bZI_KvY6db?6Pn&rh06Od51Nqc!RoMb#ApwmUt~y zs>gv}9&2PLJ7k=l3D<_L-ix_2`>%RL;3nXNZFbQ^Y4Ng@A|@9jaB z&4vRupY0B}6~q3xAJaysaz4-ckz)r>3g?6`?Kw>;|AH~(xM*ZWum4f&_N%^t)opbo zgVB649*6`SVXqXF6wkYrU{JXs?oBJ5nM8N8ea_+Y`a)g>-Y|DE5=^_?arX@lZ_uj* z_1E}uJwZ=fbr`A%(d%=p9XU{O%6Jm=$~iBziBb{bQ3!w&G^7udN7M1HsbV1$%(qR* zeg273-&kQZk24wda5CZQm@8EmM>1Lvp$FDKFy1>fQ7MjOr&3`plh#9Nj7G=Oah7MN z!J{R3+W@vx3-QR0RVK-7wZ73ClI2&q-s4wQ|1Ek-l8;z4IiO&(Ivk9uUkSuDtIPUF zHzj{94=3H0`P})?Bme`e*M;@ zu0^oBFo|)_;SQtfigCv5hjc8xrcyxi26X0?a2jC?v7?2omTMoE`xF{rU?IlciZKoc z(+Rh(`a>3}e_*0-aJ*6)$#%|`YFkD#-%M-abULi1xwc(ri>8lTZBiQA@)RHi^YXf5jl%250S;PzN}(J%HqKgVs*mnZR*o zrvcKAU(LTtIQ#U^FIMH$llF5WC?W$=UV~Eqs~qU zIDzx~0qMs5>HX64fDq2_10>1b#oA>jAcQl0tAo7O2 z0I6~a;d~p`ApFXb8Rtj%j5W9-=VZ#8bg*~(R5;`tXZxg3!0nX|2X)ouJAPA;(jS}qR1JsAzqJ__)9$6F&CtqDfl@e zH8g+H-mLoO#V79?<`JU|>c0v(t~=4o5`MqLXK5$99REtV!O(==4RlKvjVaELE^-eK zMB54dzAS+o@RHF;O4g+;_1qc7|NS`4-W1K}qm5Umf4r*S6H7bLt}5Ey)`MHPxcpUl z)LR(SV$N5!OHDedaW;`@To%jcW9<6OkN8;f)(K-;%l9ExTBaP2ZJ?Ug#w^G*m_Wiu z#ksxB+S5zlLRUg3bm!vt!2Pe;+NY&R7l9aj4k>pF|2U>z9 z$2tomz|rIM_{#oL$LOKy+Iqr~0ZXJ-J-T8j88UL8!QG?hpKJx5Nz}&){25NwoW5xV z=AkLq*<;2#tMu-j^A4tFSL#4^W$y!gWgN9*RyeOL##Ed0_b5ys31jb z3&x*)B{6Lw$ZY({3D9QMQKHjjK~Q#4LS9D{TJfj#cDKUpxCU;{8MfIS?oG11$!)jU z!p=F#i~_&Mqev*1XI&_Fx;M)5Mh}&{W@VI1e)jr+cN^GSkKN+->XsZcv%DqjcAITI zk|b~Q2B=t)x>4-WEqN5@tRc7CV(*b;Du!n@4N|-w>xS-WXs6p0pzYI*b6{Z^Q>Hin7A0vVYVg^4W4&2}R9kOOZM^H6NzmPZ2~8`$G{Fgd6YXC6CZ=HZ1M&Z*u`ZM%2U``^QEj-@F!z4RG8!#-T{o3;SYekQY1*;$yC=6x21vVVxy z=pFpTH*8qaakW-3jxQSZfx#=m2l2k?S@vDFo!%#zv^;}n^8~zJYT((Jrp4%gqQ2b2 zPI;O7(oMWR&bg=h{ClE(eD4C@Lwt|k$MX^KEbw2(XKBCmnx#)t`_Q;o;IlUn3I*5; z^!xshpZ@VvCP+WD;8WS#`1=+9oJ4=F=HC;~8GP>={=H7%UtF4p4tFQnW3zNzB)%|U zIA@y24w7ljsvhU&bL;i-rDu+;!{qJ+>sQpN>o3I6r^= zrR^TwN4B1dwr54#9Cwkfg(Xkj=)qo6G;Fn5$Ed+=<+g2TFyMCKGlS=Da(*G{)jXoX zSGBv*ptT#H+Ibs3Mf2o^zD)P$!3RE@<%ri2pC}RIMB^k8N}RP4^3)OR#j*9n0Mu zv!mc=hQ&y^2FB8%^K*?qFDF9#sXrX{f5hs%o&LQu6p-5l`Pq*L-9(1eS_G}lh}Ncr z1H~}$d+BC9W14UyAzJt;z5NlJ>vsBAx+4^L@jjzH>9?Xi&~b6;a?t7Tu<|d1X1WC0 zx*W7c&zJLO@6ut=!yoW`1%D3V`OVVr@qCm&Z&^AAy?YqXSDM=Jegw}m{P`;WoPn11 zP1ETp-^ED##WTAW&qdtwOFHW=(wYF**nRBv(w6|g{*V6+`1Q!gq}-AOyPsVn-39oY zz(;KO{R-zNDRw`0g5E{C6*LtR4n&aL$4478L6KaEP37tdr_Q&8qJSRT@o? zVKQazic-9_-;6iFTQ8G%V_uHIwY+z{jQU3x0B9*vWU0}tRT(j5}WK|#eVc6 z02}Iy>^@ixZ|3_?t@>@?Tj{s#KJuGEbEJh0kJcfFJb-mDPE8#kaz0zVyv-<)cg*N8;Fj$9Ad8_hvo7WZ!K}XEu=J2byRtwy= zaZ={Z5q>~W{5@oDONRW`HO^Q}{tf@zHtmc@W$EqhQSC>G{15p*Tzf%#rcdzpR<(u} z(jmWXjWZr=y~W4zD)vPwXN==|jMtlASkK4tD)v1Nr*S0s4R(SDkO}s%R0j3E`Gsw~ z-gVgLOwTvix1l$IrH9$0@Kk4M50xPYdUPTnp>WVplj@s=lVyeSVd2!4+oHGWe!FUm zC9DhH&6~Xuw;o`6z^2&SI_z`aZGO7S32r-F)fC575~`&u#co==D9PrqFA!p^z0x?c zaUHuZ5>UhNa|Up;JJ!rz`DR3ew&9L*)0xm@F-c8NF?VpmvDegvfM`=gCoMQhX9z&Z z5FaMuC!xb%!IXQY0_s9HEE;DtN$*P!#4Qf5e`G#inrSag?da{AwS;jUcPOEn%a)j$ z9;}3Cu0G}TkG^IhyY`aB`lj)uH)M5|Do3`T`IcSfZEwHp$VKnloL{rA@%=eGp~skNDoD#nE}ns3Fpr0B+^W>l|^ zV=~|ezy0%Sf zGs;{oH&w38@2Glx+3@fMr}aB6^3cIE2HR$)3tfvn-39n?ePO318Sg8mCPyNL%?qO% zGN)Z>TJ@!+yO0%f2Sox!R0{$^@F1X${sCvqFnqh{3@uwBNGQnlXLrnZ(48B}>m4q) z!)XuWZe>>_8D78nU~TZy)4rnw;oO$ajrfm$zGFD%cG?p@w^=q@vzfx=n(3XvG8mFVj`R?vg76l^e z0$o7YEg_wI6Ufq_Ny92QeELjZU$Aq_X#1%PP>C6ft2WK;Ee=)ug_PR4sSD>?q{n*P z1LgLq^_ihl5Uz>YY>~-)yfYT>sHuB*Hy+*}DQKzG1!`L~#q_oFmf_S`e`tKTq-AwC zjxUN>y}o3?>Wc@%*{EAxoK(8H3+7sAuDy3{XOPJqMSC!il&sN2AQK9ub+0+N^@(+{Y*N&dE*x9*w&gj@-{JZ6xO@pV84V^wZTvMzrd))2I zs-^KfY{5WQamVd$n=jIDs~@;_-GDKSUo#?U0YtW>BcVXR?+*m9btmX!xyJpzAlvKo{pwdiE1ebF_$9T+%s;g{ zoR$X~&+@0N!dGR2-2gr9Zg>Ys<9X>=w|wtkG%_$K52Kpz?9AsnJJ}7D`SyPi|^MBz4Vqf8wA5W2e@r&Gm=V=EpW{ z>NsuAjPv_5ZhubkOG2D#QDN={EWJm?8V2y6L5kW zPB|pzz{iO&g8FM!;dmuU zxniarPUiPPYEr(>glXeR^Og)j#IYP;&l(;+YkHb8`lj2)ve~gV zoDGp3WA4_aYAf##YhAf^{GX#5HK0XlowhCACEtuwl&sP_p&1e_zg9XRSCEN>;KHm} zY5lM#Y2Gmj8jL}8S@yKlLqqnEG;gVg?1Qu5ic=F%Fy{}U2=khB;9Is0Ufd1 zJNQYJ8wa*^g+lIt&*dwpI_Apdwbfjk*MnifVV3-4lwoXp>>QwO)U%E4`M5a1lFqkG zIgny)>pEp<=+thH$E7Cdd`qqeTrGW4&cWZ8gIDY%K0io7*lMe8J^CAGVRImAVef$c z<4af@ue53JqUX08&*$4THv6|u%sElN(<%2De#Y;5ykR&~oN|W&_@T!m>wnWUS+Vcu zG|ZA@@SHks)ZGEj11l096tYSO24D)&l1B=TakdXML9YK;^tjikF$+d$E z1A%F0H0+-CD-pKAgVeqmXC&-i<5vTLDHnE~Px^h4#;06Se_$4m&Y8elyXoxb?jHUd z$pwSCNTi^u1xdmS$TFJ>1YFSo7_cYcp9a7=tu#&xOv0h>obGmwIR$_Gx0l%vz3my_Do;F#*b;CO($Av&>7BaT0R`k z1p>MAdG2E`{r&^lnxCPccXV#&wM{{D3kTFBX zlMRbg=r5uhG)GmL^cVaEeu@|2IHjCLx=jX8M6j4k!EIa9DICh{c$j34JnoGzbICSB zzn>~^-JA<{cpR!-3#L+9uNIw|pVa)hgj3NyZ~$xJzCQCtPY9Ras`WGHI~U_xB!$FI zt5(mK2IFc-4d=fZ36eq*j2w*y1K}u?kne=UK8M8`3uq~q)6QTscr8}h?1h2?4)3;% zX|`NnrnqiyCOdt`P&njC;NEt-RgdI{bBXEM=|pJ~31c!m#gq+v2S%$(l4b`w-IV-f zwUGz`?RsUdR^sAVL!!{tu>>l%Km>WZR!BhKbSBq~cYCZcZzRmjL%T1yTh}A3+vc_g zb+4!KeVenW>nzGjHaA?)vBpnrlvpb5C$c#HiM%(}llOWUY`KMz?42oZ*!?lHCE;~x zR{VQQ5?-WR={f4T)odn7DefN0V8-DWz%B!tH=_%rso+n-xv3xH*)Y4wFYr#GbOVVe zb(}@K35P-?=zf}w)f(=nfg%Ky*c}`(H~u=hc;&*vm5Yt*IQ*!%tA?I{$I>71^Atu> zquc$OmJ^Qf6r_cF+A=mYXsGF{6e=Pru5fYvej>-dQkkVMtgAG}lkA0;xrvqy(#p5l zXz62L!|P9~B(+p1%=OZ9!0=jNNcYLXpJ(7`tOeZLOmvN0^OeVPtH!=}x)rU|Mo39* zv~C}Hxm)enCy4=ZPUQN__uH8{K9}$jtH9!b-{9n<#z_ypoYiBA?IM2@zB@u}DnCa! zugf&<3~#4Cyh3L~#dQRmEi}Fwd+KF7^Tr@D3|%e-29nQru@cn$KA&IHaAV9}f3b6B zlLcc<_XOIJw^pHO(Kf+PdVAHsj<_NA49Yo=D`UM&FNfttWXFA+lca|a{N}%e+j9{e zYzbEy13|h6Mv{Rgw+jw%c?B;`6H{T$8BYe8YU(-W3=0&h~kY$F8U1MUI zYVl(GLNzvnJBwjBrqzI%M&?bHJ{K);P| zapLQz-wC>f=hsRy98TJPYPYH}cSQMm=!>@SYaxFThJYZxfuu1bam+q_^1FF_A$O?p zbJ*c-H~iK;rsqv}BR|g7!kFWBWwN6qnXFWv=fBA$79%r-mySxRoH=>M#2ogw+sBuA_4$cyo|ws^Fyt??ONr&Rjq)jhjI3bT7pHo_K+@Uphq92+#;xY`&e z`p6Z{*6xgB7dP@{;-Kvw(^@GkZRD+j6jqP&>UQ}PLU0feV)4GrhZwvAgb;4E zKH+0WU-H>Y6vgglpNrVwdv-V0LMAX|6zyPtkk%t}+*n`rLa4w!4Wy@7IQJ)I?@T{- z@31}A#`|23xX+=v*e18zm`a0Qc2+gEK+{B+x$RtMUTn>Mi@ zOViZ;nP54hX|6^N@D*z*iEprvIW%|UQ)tr7*5ke_f70b_+-70>JH?YKWXuew0CZ%`RY5#fmN%a@L@TtAqXoyTH=8*5%gx z?y!d)!l4D8#!W~@<8#MJn!{di$a1~e_IBEqLp$_=!K7(D z&gkBTxol$4vOqwEEBnm3Z?nr6lCc94#INECdmHa@dt4rN*d2DMfn?(!tn4a}OIzQh znYZEVmXOyQHsk9tU&;lv%$i4`jiBHHJEVYgA*UwthOVMZ>UUGi2ajA;wwts!_6GX> zS}2tYgDc$68O4?S_f^<95W^|{(b=`*0k224Xg)O->q_x* zk5`n(dUL!yY30Rrwp&l?enr(&(L_%&lnALlRZl15UGaPH5KvUDkc*b1p=2l<)KlU9 z5#n{G-?8trchM;cXA10alhDiH&kkur<9+a<;d6mlq`RaI4flH89%czDYP9Ql zs-8SQ(u5r5+aM*zp5;FfTQ+<4aMAR5Xo{XyCwDd6CImloNE`Px*EhkjZyVS{d?Dz+t%V%)xGP=?eqHvyVtc<7P>mu zRXWyr;(U@q1-lq`fwdLuI%pKT~pVJ|!eyP$>-y9~T6_n@IkoV`EqMrb>OG_@Pi& z6waSmIi%*(zK`bTI-=eBhl&gJj*Z>5jh+2-xsQ3%`Ji5jMJu)Pj_Eb0mOI-1B@zmE z7mM9tWQzS;p}ajD{+ISj`P4PjJIa;(zxi~xC?&q?TDl4+_B}yVg^}c9Vr43YF=yQQ zfLXgJ(v?id6vdayS{DPS%|t=xk$|Rzl0M7k!0u}u;ZQhl8_2Q;4)1ed|4PyxD~B8D z!~5_hQtkf^J`mXR#?CtUF!-#|PGb5p#-lkzlpkQYG(;H^rK-5jd0b*!r!U&xmFljC z)mPDemz#Z2hk4DW!TqD72kO|3YIa7Ho9QZttE1t;?o`()7fIi!E?&5%cmIxcu{62k zu*uqM-g@)m$lig0y(0r>pHsKs=I;yd_n;c)PX zo;)voPbw_?Uwk^8lGBNh76UIyy!dOt(l7oxoWi)5G0hK1x0y0LCzmo)z{OgOKLfun z9Kp?vxaTCYO#QX_VU=YQYy*9%aj)aYZud`QmZzs|O?y^-POoLd*lp!`%9HXu=?WoA zitki0T37R|9Mb{#{N)w9t4Y4m*+^oMLjA=E9CB;6_oQ~Y96>#P(Cu-m)@$7VVGVlJ zsDz`%L(GSJGNrO5u0%aGtK@Mv{vb(VFZSMwM6 z_9pGv*%K5yd)PwnseJ>d_Vu0G-?yW8!&Fz#g&L2!d>&8ZVYmBy zv-y5m{)yTA6Ywwi8fG`imk~VV#Oiqh9;$Z(-Y;!sUzJY<{22Hpwf_h|Er{S} z$%k9;hj4;5#RvwaQT8EuhTv8@A@oU{gR~CtPHB+6O+HBQf;jz0GF=A_GA!+6XM&!1 z#=;cXtg$+Urn2IRb;cv{C@ui`c{~z}CZjQFryhaJ06)lsi}>IaisCPls6Enl6WwNP z*rdxX9!^B#ae8&T7E$Pi5G5K!eO($beOvlIc@eNaF*!t%LTdmTAF+5WxWPB6cy#*~ zw<---E&vcXc%Zw!<(>6kGX2L zkWWe2?E~)MO)kY%v#N?eWwQ^u@ENbu9hiq705=8O>PSpQ;^KnK?bmQ|Fdl(r%Y#Q>Blt!3JB0)oq`NxV$rVm(AgEIoHx?cT1btkn}Us zXSRtfUs_?fiJ~RmpeKAVqxQQ3iZ8UF&$v~eTd~^v)r_<$GU4&MJnASLaXLLttJg8X zt=p>9#m+{i8gG*V=9~by)@aP7SNe8-tm3f4Ho(ao`B*fMedYmw!0xDwN?kY*L5ui( zlt$z8hl8maBmit4sh{CO1Zc{CCHv_8iJnxdCn0{dcv20<<5GX3D~>at5?wG$5@QkM zFh5@`y;zS;?Ilr%UHYRjiQ!u-&}lHQqD+uL#&X=c%+ zO{sXMI~e9hNGhh5qKG(oJON#-r7i4o>1GoY|83d+KIAH6bNrr4<@c3}w1w6R=A$O{ znVyvX#Lp_^Q$VweNyn~+6X^+RcX41+$w!N2pWEedF&rctu-hGq=JjX}JF*$=(l0zp zwB+|kyiUd8L@u=>=ydDYKIXDn7|sQuaaE;_>|)#pz}E`6#))edpFI)8wya*q|Bj9I zdywSlGnVy6vw6f3atA{mENhp?f5Ib;MK5^XD{)RO(Fm*tVZ4G{V4wwwBPjU&!f4sy z09oixXFeLsJDj?z1Z>XonDm=SEfpjh(REHE=_+W1nZ6~>vkQ=sA~Lp!?8N9nU!fQz zqHKH^zr{21qb?u6s77Su7dxd7rAOO+Dl+ozL7xjqo8d++BGAN4>)5ThvFdEj1^a1} zxzV(BUAd~`a-_m~cI){0{)-$2I;}8`DQE?jorf8W-vl*lc*be z8ul)U%qk-yNLdorQN50g!t)$)&AB)>?0Sb2X0+#=f56}|{s(#ismV6#L&dJ3W6M$zFDz2J@L*sPW8bds<=y7Pj}$9g z?J(}Q0CiDMPs)M*^JO{EM2m;b(q z|Kqc6dXY_IuRmt})tvh`x7nOYIxUX%N$4-OVndiCLts z;?IU`#Ph@a*^qO1e#Cg6OA0(6GZ8++(r)%8SY(Fu2H6^ZIG&ftl7x`7n_`?0{`^L( z0`@}uKiryQm2TuZks%-O{3!oI2Ia8v%=6NXw2R~`Fo4kygX5#tV+J0aSL69{{%r7A zJU?NSb54lo-*P-VL78{Igfb5~V!CT_lqgemucS=Ve}gii71GM0onWg7beTTi4I-=! zMr#(ACtgj2ydIlfv--4nC*6BS2l?5tzZB#NCy=Hg-BnY)i6ECW$Jt)_9E=*4!e7** zim@27?S;?N~Xg^h;Up_2Z5=mwhc*vCyMBq@SA}m0wA|FUU2qvW%5W z`p#xWwOMyKbQiQS-$9F8`nlhOch}lop`a&X?={202o3aUc7=Q$&o$#R%TUIMtD=ow ztb^5%En!#H7W4%ZcH5x)|Lg4hU84x1IDWh9?e6W){{HFx+Qg7VJ-sC6Cm0b)h+r%t zVz9E%MvI{7QYl!8DH70Du(L=Z*b6o(MEnCRVk5yOq!Db_@0;EGl}jwr95>wU?Cj2) zd7t-q?@jzJ22gpnHON~y{K~LzG90170ZI=H@RQ;CB^x-Ub9&b>XBnP5nE7;7Id4rD!!dlbyHO|^)@7iEte3n3BUU+dLI|}geAOD^5wN< zgr0)@HEj(SMLVmeUt(raUC?94bYgu`LFZ0+RT`QvsVEYumzE8{D*BdHs8!t9^ya-ajP{#MYvLMckC9~sH zy#jt$ALVj`(fYu(DK`V1gTdOsL{dkk+;FhsjZ~7lNti>L{ZM!zUG1fu2aU#GP|hJV z{3!l2EY1~v9YZ-;!W_wJo0>W0OmoVy83W~b7LHMGQI6s>4aWd>Q;wz`LpkX_>ZU)G zUUw`49y$m`manK;E(1M_?0N4Z`-E~ikCIxx=3L|-ic?O_i*)6dtSg429J2bvHzUeHxIR8&zuw^am#3kTXP}Wi+I?ux%pQ}9agY^9G_pk6XK&h>pX@`f`=her4}%=mnIy|A19%5$!G*F{Vp>tKOr{Ef9fo-=F|Ikz$gm8u7-h~a zvMeH22={HKcZA33{(ni}WLxB8x!Grm5J#;GPt(tRB=Eb@*a8TQ&^Yp(LX2aJk1Nj= zg~ofu+daQyoC#`o>`0gR?nI2*4u!)cp~=&gAgw!==_0bfK3O#!W=L9SR|4jU8_c&V zqcIE|msxaboa04qSFc$9JXSw5MO!vG!7)Kx;%h;<;!6hebX35qPu46;+%OTn9fgu< ynRaG1aen~M%_w~3l9ZVwxiIwRX8a+tp!dHZtQ9`+Six3i#?k)^?3B2|=^q_7?1*o4GY27}pGgE3ebkc2=Rl3Htv-qic+es8W+la!srF_rsQ|IzP$ z=YIEm=bS5XmrK`m!>(Ps%2&6vY>=F`RfQ$~3Wr^>YqE|O>`Uk)U6a;3Z69SV?#s?~ zPkky$HR-$ETe^$lj{ffczm*c9XXI3{N_G_+ydEcd??)JHZgg1&n}RW&Cg+<=E|UVM zFRG<;2MtcozqnkkTYoYLQC!-yd-t|$pLYD%9v>+EPIU;kzZ|Wy1v%P-!Cr=(45F1a zp<4?u%zXeXRM0Ukrf*zt0D(Rr+)DA z&Ry4H!C1pxg9vtYIdAXV`4QuTj}#OYV-lM^v}qk`MuqlMXjczl3bv8a#m8z2O*UgJ zDnj?oCZEe;G?>YotQf)psx49OU$Y#==B~{davz66q4{44qPzQ`rRVCI{o0kY3*1(X z6UR@|*LNF_yNHCzLS+4mq__WqvBLF8kG@QB!9Sqs4q|~(GO0M^Qbe;k(WMd8&OPWT ztXR2}y2g3zfA6$67LFbp?Y~j|M?u{DH1Z!g*|<7=%7=x}_#uJJcNj=cZ=>P$TH{n)4gAPT2NF)f!Ro6a#AiV#cY@M=kd!4WD8TqJhy zKxrxyr&xg1K1ntsV^2(yZ2J)V%5RhE_yE&=-$mRJnr5N-p4oy|n+aSxINNQw_uoXx z?|q>Yf{1cvu;W!J6O#%)c?YAMB7bK>5DlzWGm2RhFyx6|IYCvXpQ#hOvDD2&9|($* zW{9_4!dy6;L~keN=Jlw7i|7KpY3wqFObj)r3a&^r)D*J(&z>Y_c0C>JI_Liai1&W{ z;zkmQ21}resG}0qS%%$dC6$PgP9?c|wUcx*ilytzIU%Y1LE4Xv)-P;;F8^kP78+T zvAXO`Nof?55mmI*AQUm5Qb{^|m^^N#3<}od7^AZu;Z*w&nY@f1=oH;3!q_PamoGvM z_F(&(;Dh2p&&C-So!NKfBCox7l#aH3wm-HGYi6jtJs)VD0rAm^&z4^Ayk!i96TJHN zK2n+qEt3~oYGfoZg27wiD6q7>Zg+OoRxPxA3z)doj#=5NZ4h_IYbbi*6Xp z7Ygl=NIME?&)RwCa)>jZ-5{Juv$V0EC;wtIvZo5?+J9$gXyox35ZyNi<~21nU=Vi} znac9tJ6~ZqaEFs8&U0r{sG%Xj`VAYAWhdd*9a!#tl$58A8{Gr+4-X+N-AYg|f$GKF zS@aBX&m0DP8#r@)l(exB$)YhiKE}4q57WvC^uhBG??%t3ahakEW=7QFQkJc#E}+b_ zgtzveB|4ell~>*rMa6Z=8mrf?rM9+?h?o|y@Q7T;hnOlC^Tto#!k}sV^Uk-}zU3uS z#(Hk)Dv>LLoIHLC*`#nMJjs?#U*qYgz9p{gIA)7VHY|MS_S>Wr3S~_#3#Z-LXd!F2 z1lpOG7-hr#i+Jzg8NpOB-g%9NMjz`otVUI{m`x^B#R>Mx8TT9>97GXfbo|JE&RzHf zk42cN%fmlD|060IV{BZrkmlKb6lWpX!3!9NFQb{ANMZowU6&_-(4I>IwF>Q@P*)x<5XI$L=5;n-VT=Wmbuo zA)%m!!ez$>I(c~QLTchyg%7lo@zjtHcf$N9QHmFmGaAr(eu)&?E2EN zq~L>;nMa|Re+Js9njX3FTWBs9%FuNjt_JkJOBhS$lMeP#UQ~i&bzl@zql+OQ80kY- z6lzO7%(2F4E)rAa>9X)?s_q<^^8U`S??_J@|Fi5TI>x? zuFm?)NEgq>8XiRp-5^`Dn4H^B%u#}Cya%(*fzw|_Fl(Sh$o7JzD+r8D3R_R&uc+k* zJ9e;n`?r~;q(sgLk-H@b*#2v><;%%S(_PnuG)t&ra!i^5-CK*JVKwdvLp*ENW@uzExGCD+Bn-$_YfFVf+JLdg-5p+L>^h zBoZBmP%;5B{$)ZtRBWY-1Q(8B&Be$K_h2e-C7GEL(V(1M<#Hy5M;W|+scVK4Wq#jv z^X-TxO%50|kr$N0V$P@)bl$j$Q7}9m&vWv0JBLqRWllpi>mOW0%RP-`>sAXDj8JaN zpuPD##SO~|8#W8y$s^>8>{t&I;}$9=4j}6hx~}#R3Uv_ittB!xjFgBAqpmtQ4MLiZ zaVLNN(`!P?n)9{wXihKh>_0(!M>p#>t);Bk%c*l8)7vAGlQ7*(CM`%>#fla4dHjj3 zXrrC@CfbP2`v$7pP50G7UVr0tzFsJ%t*Mv-VRZ3$luNNHuJ?}M5P8($a#J;{OkK8M zQKh4{cHAhkpMLH5(O1Ip&`en5d^$Bwg`$d5p4j>*X_2fhe*7tIZ8sSl z8e%Xo&aq=>`THOK9Tzk8Tzc(YM*BwS?H#7Rs)i9;5e04|hNg#bjJFd!IzauLCg$E# zPibj6M!Wft!&^K)(}@`?@9$SGT>j*?HaXx6Po;SGz%k0K68EiMgk`N@pF7E_Y!BtB<77Kant?JF324Xb5 z*aV?NuM$4+6L9&-2{1X64asB{l5Y`yWR8eqKm2(BU&xr#tEHtSaq!^5ujeK0=$NUp zWlEs;W>u_}wWRKh;wmdb70Jo0m_!gu;&m3#-Yx>LS7g**9H-}2KTf-wfnf(*;=^p+ z=)o$w78hyCY;%TtC-W&jH#^lnnAICQvm4yL-qdX zGw^3`zW$fBMMW{ zdBJdpn4m1OAw#~Pid4lM#^PG)!y~7T-_tbrg~zsS`|PV~d?kp_b;fvh&&$gwthiS~ zTVj%QpZ(_f;-XYk$|_1qwmZVP#w8s>g-%O0--)XE^TT($_x}Nw2U10Uo**&+0000< KMNUMnLSTXgC=w2UV~vh4N0U%WbNjX_yYlHciNI38Ie#tEXD0z>2>?^XaDMtq}^)Chuuum6vuJib02Q+ zwcq_5^M1DbIiBh24=k}PLrlXI{9k|EX}6_`S2z}y4g~CWdon&hB?jJm?T$2?ZL#n> z!7o0ljprQ-kM9TnKDf{Q2g&2H zU1+c=Zr_pO`nv4mH8DRU;dC5kAi`frC>WBx;+{Cr+;X`r=~U`N>F&L5_@kcEf7zRw z1>Bi?+ z4Y&7efA99$VYBi4WBK6 zU{GS|B&>pQq@%gt3wu8o{9fD8Zr@F?_j~+%4e(Ll4L?(xYYhIN^2K8@+1|<1I!L`z zRgE+pym0P*yQ>;)2?ULypk40u`{IYqH9o|J-Oc8{pX0n==W=-aFb;C~`}g{d+FbrY zd)oyv5NIRenDkv)TV9raw<|4(E)))mWm{6n?@DGYr>FvlSNq#&07;1Zfi7Tp5g&Ft zEL5N0FJluEa_a0E8K0SzXgn@`oTs?EE7vc-CD*UKEw!qrJj3g}AN&4(_p>P$C?_r; z2CUjvt!;NYDnNfAi0>Tf_4=@}76d;6T-z0&V~f*=iKeMgxf<`%#QVjeG%W{h_j~Ps zc;jb&2=$RC9+$uNH~*$QaPbjwZOgk!{HBNRo6V-Qp$w}xZ^*09zaZcI!#|Wtsq~Th ziG!Q%0WUbJ4)ALi_!SN-8VbSA`lVK@C>#sG*>yWzvGLwV(9jzQgWBvm_PcKKezxKM z2L*dCK_6ub_*pm-k^k=3e_cNH^FJ>Zo%4aM2Tib{93k8nU)1E|$4|-=Pk&DS&wup4 z$Xl z>~KVW32PhE20jH5ts{GOYQ8mIywMd2$Tkzf{!H=QioHhB9PGi z57^oFYr{T>r#|>wp69>*2meqmeey{as+uZ%HvHQ#%y$W!v$0&Q$;$dBuDv4p%^j)N z>+;FZef}d4SQLX%Z`u%`swC8tPAWB;fkQB*k}pZx?MrfPS&FNhvc0^aK&)ABh~M^k zf^^>vZ$9XDP#EuplOK8VQ}X!dzJS>_bX>NCd=ZHTVt7T>k(q!b^1%n?ZrgCC9RBR6{f3)8ydlT& z0t5aX0`2JLu_FTqT*zj*CdqIeBQs0!`|JCXRv%9R&|^c^$ajy=~983k7N8eh4cmOz-r(UyrKdRwcl8E8vjjPfH1m*GL zn7OCsW@T<-OpZ@Z$imd5DpM0m^*ew3b@}G^UbrK=yW2JxdRL>f21e9`kV)Khpru^| z6@84j&u2*(S{wjGi^daDLzELkMAzzdMdaQZcGPw+;k_SN_VC4vLc)X0+`+960lWR? z{=c2UvAX>pt`(-tuo3ox<*Sq+V1)FcuoMcrvbnJ%*I$1{1^v`xkI5I#pOz?u8NzSV zz|cXQW*ecuA13kh4?QT)z4nGwYqj^hPL0qs)P?7Fi4;tRwuUld;Yd`4T`5+e1zp+Q z%;TbbUSNR>A@{)Fa(llvSM9poKdwEvEi5dkmDFp1PZ$OX+?+#$(}I%h!jy65^`Hzs z;CesyX<%Sz23~mXdD*yjRSH|{l9`+l1IlwQ;RDPp$!@(SZ{zbOY&H3cahQ;x^yJ~i zS^4gdF2AQDn01T*^I%mR$Ok8-I1$%cEtI5LqfLc<9m{|)PfC0=C81iU+##%`zO?T3)w zwMm%<eL1j{n)KSAdXevQ}xxmDOz#1WN(f=u|8OzvRd- zT|6fb9bY)|8V~;4jzpu#K3EzOc3?*X_?tM_kAoTbyMdGVLji?84lY{x1-m1yW=keu ziz@di-1`yi-JnhYf^jgDN~JEY(ZDsSd4!Th)$o7qQBr`LkZaIoXY_(XBw{WlB4QP9(V>&>Y+<)ru-Whu&I5O;ZbbzDB2tu)L>{nXA~{@aWV&qs*q{a34E0czVC3R4E67 z=U=^YSw_YuC6&u*SRYG|NFD-qVIm&__BDEKnT%NS<15$Xr^n*J{7o4hAeDOsPx_5o zL2?F`r7(-5UBeBKUNi>W!BBucKs0(@VqALJ798PW@eDbG;p?zK@3!45B0KoIm0P!P zUYdfA20Z+(gK4h{0{CSidDWv6Yc`Z-EarElw6P&|2;O4Q10n2eZAraRmq;=t;doL} zLwMz%}x`t$%6bzz{yb_M_s>7=fo+bLZx#u zJgeBj#Ygeu7O6%U^S%RbYuU=2^>OePE}ApY89=e&!S4mG4@YK0ICFU4Lt<6!J1E?Z zH?K)+wlT-0aLPv zz$h-c`8g?XZ!613R-;s88-7`F>s*_8t4pY5{UO`w|LRqXay>I8#X&@us=!?hE+GYd7S-?}wx~kN6oz{tW7>zZ zwBf87AccaSc`L!LF5kQfvj97r&OmtrN}_WR8EjbOOfW!UNaHlK7;CpAjtqDZ_PqiV zvy0%fHscP z)~W0|9{0?;3ZBbRt%q|ChJhB^I<$0r&wcA#2-__k5Z+%4xOZ=BLvqJX>g-fL3oPO1 zj?apb-&Tii(RTM7*m+kb5M*q$T?vk6B?h^rkPZL!WAn1}nNP`$)phyam8#EI>VG#qvM9WlI#%a$HCD*HQyy4+gCM+$VrTZNg>}|@=IHaML+-!@4c#_lI%cg&>YN z=2odF|L?#2J;_37LEI#@w6Dc2FblZGPM4bOsEza^66&IQ6+mGn9S&4F}1Z^N60@pCu0czk*ARnWM|gl=o;G_5<}>{3|TlZ zCuLkn1VNbTF=D`ugJdKx$WI(dk4a(%+Isb^s{r7{w%+t((6P0%BYAM6%hzGM=sZ5c z?Okb~yTG#F{r%sUjmvLH8q+oaf$+uO_G!ijiB%Oi1Qx=5{KeP*SUQ7RI4X_n^mVu? z&<>D=hB%PNTp}PReb8uV>{1N^jV7fMip#NwFUsurm~3npWHObMT?A1kOiH6xl^qZ| zrzf&9i6rjdditki9x;H3=I(Awh0HbTZFt!-dZ zQ$9eN<^v1*fCJJI?A`{>`5(tPg>6Aoa6V;(W*dYi$2MY3y=e{FLFb92_ zxj~#boK0=OPBjMPw1I&?J24_fAdne_Sx~fKL{6SKDN&e@8c+#MPXj^?Hp`O7460!U zJOrl}&yGnZn~?@g<|j@pdcvhC2tsqU+Q#rQ3sD&9cq*=1dF;Wnnq3WmHEU~yV{;$t z=0V%JKSALh-VUFu0(<%^|IM$+pa1?pmki+3D3Yh62?!bKt8v_ely~J%e&_#|7hm`x z1Q*obI0M2-gA5E%rI1$}O{JQS1SDazvdAypk(_3VyHKbW1W3CZVzLI#&aUjq&D9MF zK>Hs&drGWuRBP?%{2P!F9j%8J7$Oc1&S;G(kWyg}<{`lR2y83>J1)Ed(!9P~k{;sv z4AMYb8=D$v47c}Nd+k`1ng&FH!o|eE7AtC4FQvCq=u>Q zhfTC#_SDosP&>;vRoDgKUK4)i?1^b98$LOI<|Lq+3A+k;luEJ&Ts;A0V`SQe*1nGL zc?|e>VroVt5?8;_CIJ@m$wDkAty)v|+2#gLoItd)zO*bmD;w$%Iyfn{cW<{KTg$78 z<;bR!xLJJQw7l}-OYh2gIgaxa74W?xyr2aH06|{EJ>0tTV;MhwMxqcTf1xRN;&ku} zCIbZssSciCcVkU|>xWYufs;O$ib*=+lbGp931-o#AXtJNEUF!pu8%>x0{NWGWn^aY zxL6P@2c-sQzYX?qdOWKXfelP-Qx4m!Tc8|m*;-qdt)&&Mtg&GR)^FZYZEYc;mxe6~ z0c`stA-M&@;-zPv2WeB@zgaD+U`Wh=9B@E~F)tw>-x;bNEC?~QeAV{$A2`_~g*phw z5943{y#kokZgjzh<&kt86CaQSp=1qqF$8<8^eTfP_=#4%Dw{X1dxHYo{8t`6D}Uq3 z$7Rk&^x12QZ?`5{K(#)6%{H8Q7QscYx+iblT9G*@-2Cz5Ogd_ywYgnWmT*3o7K2U_ zpV55UWeDiz8<(YqSlR$iY+z&)uotYl>0vaY&{6{qVh+>I2b)!4*n9aZrbp)v0db>) zIf!wGf<5@Rg8c)Z@4vfpJGFm=;D(!Zj}Uto`bD2pxgqhs>7KYd9~ffS$c_2gQiBIj}mkU(AWvmg-=H3AwS&}zsv1QY>a z`xEESODY`Dl-E+TC+CjOK}!dU!XOO4i!cVrc{W9jKZ`Tplw;+VG)dFu3 zPRQ|*lq@aX0$J0OCyq@?8$#WJQm&V)GBF9c1$-V9=b#gfFkJ+#H_75J9A6XzJH#_7 zdF=B)jTA>rQ#wfy&txO=pG_y_7jjWVVL(W_#skip zWE5DlIvlux>AqfVN+pqzEa2GQ&bIvU#`JrX z^Kx_6Lr*;V%TN65Pmk3QFvOEd#k`Y9&M`~c2h|pfC1rDc6ESs9%a>wFfIbb4egC8sk9En~V;07eH* ziI`VH5LO-ewFtBglz~*CQ1h!cs%i zWR_NlQh6Dm(EHeq+aGvQkjOL^uBB$6!W1%2UaAzp(1Wrg?TB9&Hg`Ntf`LEx=tJ@s z-~3ZeRo@|qVW{iAn=Tw~?={8mHZb07u=KbG_dR&L6od*Cg;Y5B+O$uKjgE`}^Bx;X zAP441)ivd*W0Oi$1wr)mgVf+I7&QC{ICoEc@?a3OBsk!I`{q@df>0knds-Ifrxe$g z=-fcek0}6Yi?8JpN)_nz0!Z;22VGC7qK@L-aI@ch8Ff-u+u8B^ZglAHOWoJB&? z!t{4RS%yHM`7!7_fTeU`q&26(@y1B3nL|Xx&>E>Q$K#X-L4=_}L%-)~u?Z-a9vuab zP*?jQ{UI&s)4!QFt06_wB?00(cfDywLB?Hd>$|b)or5CpLy$*p^3ovoz#oK8{sC29D>lOjRARc#gma!6`Ru4p!#ivl32ju*?ZiB>)>j zL2tx6njTPaU zh<0f1GKjd$dJ&Q5veb5Wq+c#dcXty3M^%Cd7=p>Dbnx3-5bPVpvi#ZGH>C{W*Pv{f zWK8ic&qc-RQJ}cCdI#tNkgNuTLH7uQ&XDt5laL6$9Foi-o~0mjk~z9aG13gKDEKH?y?6CdJ@oz@X6_Pwc@c3MJYnS|NMp5<=Z`w zHcvk-|9W*t7N^GL46uKJR0{DgGu$ki#=d_1n+PN1*Hot%fO44D;tL@&4BpqVyqe`G zX1mF9%As>tE#rTVSC-#JNL&D=SVM%v;ty7uyBz7Bqhxd)ByqRby@%o%cb(qvH;wLn zu>Zwf_BHl*;$Ze&8xa>w5+D(UVBv<6c*S^QxaBt9#$i*p`i4Anb6tM-l`9gPm{O&Q zpE@P~-;b{fa~Ii}Sy?edvV&VJV&9mS9=HHdFbxn|90SN&57YL{C{y`1zUx9ZKFF0x zQEy?1COrgTUK zu?7wDFK=s-i`0V-e;&d2hgEMjq{e3X!(_6M}&iCRk*i$&50v$;bp z8dkd8`T1=dtjXlTIttQtLqU1=vp?9!y~E)Rxf(AM;Vmz4j6;Zmg?Tu}x8Jxfp$yV8 zale{_aaPA;YB$w!Tk>Y3C&xhzem`H9sYf4`(V1xpAmfn8WMLi+iHw1dg>C-Ul^gQu zxpB!sV7^RRDyGk?*#JRQg%&rpx(63lX{cGXAb7@PyVV8=ugGmE*6TY1g2dD+ZKdZd zYk%5PX;|LGtZyI`*6(;<<{cVn$WhvRPyqXma~Q5Vo>MyNH$!{OYw8b#uE#h)79F

#U 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 N002ovPDHLkV1oM$PNe_< diff --git a/battleship-game/public/assets/images/meeting-landscape.png b/battleship-game/public/assets/images/meeting-landscape.png deleted file mode 100644 index 08eb954d0eaa669245cea70cc475eca4c9a4295c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11159864 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⋘V1IWVn zg~vtZ2t~I(z*&_*Q2=mUCvW)*Ql*pwCIcsW`_`#KN{6U(+uGWOu!fEX_qAC$!a-15 z=~Y~cD)Pn|6-G(2*G8rFVF<*>YGEme#XyGPLOKpU<9cNXc|^09be)K(D2`oJ-*# zu5hojx*%7@03NMla4< zN4D6N+Sya8;e;6n+v9gbJFX_c;nzyAl-OZWpm_)HU#Gj{lLvH}s}e8n-W^bje`WuL zt0PEoK=k8*+NGOF)CHI+#co#p@f>6}aSJ+XUvx#QE^lXczXqI7?YH#U!Iut32X}OJ zcTYPdf1i&x^VYpt~ot@Nu>5_(&vNJ;MpuL|@S>^tv?(IO{ zb^5Yd>Co6yh%xh|9(VO!;5A$+^)SF&gn|4i?>CZF;(e>BAeNpNe~G(07cPt>x>X4` z-gqzBUeXK(%AAAXk#vvnXw-2^Ad%MeN~Xtgg@wyTrlpE$W@B9Z+3-tH+_d(g1{X&? z3xEhjY0h;tXQn_hQ_hq$1gH(khd`_YSPwW8s&q_B_^!ed5qoc;cOcHUW?{e?CtNTz zRm-T{<(_?FwPf|Gr|On~i3)>Fu;Wey*exSy?7>qO z0D1Op){k2IIi?PMO^SHK#;j8@Zt*V`XTf-QRFS>eip5@@v9LhEmgXS`-;{CBiNo#G zP)NpVE9rHpiPpE1VlQ35#8c9U=h*0v4;|wsf7RSBTFOI@H1!Wzh`5P-P9~c7_F8mc zP48?*>9|iO-X;gMdP>D~>h^M?*&OgFFn~uPc!T7c1cTupAfLCGC*8e^T~?1JoZeL! zTF=ZGB-Ce~9*;{`&6L_#DfO(at#unK5sIC4k&IjFO$bjJ+5mv@*L#Pt`zqFej8iQ7 z^{`d$cX;5cSah0v_pU(FzfpA9A7ZRmmwh1wkZJ9|{f0loT_wx(@VR0d{?WcW#WiiP z_Eh_I@#HN{tVG$AVAx@<&QaM!E z>x?4p-8EHyUA~2hRfZ22YYvH8uj=54Oau)bg2-OybdzKpoC?(C@?FXK&Wy2OnJJiCO?o+*#Hbdp zIyXOk`c&7<`BIt^FnD&3j^1b3U*LcF<@2UM^S-{mm>U4AXR6^-T{uE{dDzG^+St$< zC+1pg$3|{6U4iA?{GV+1=fu>r1=-U9Z?i*OTpQ1T43T{4q_*dJwSy;!CyYw_g*Qk~ zpx$^BBXJuW8)39vc;!>4BTwoSRdg2YsXw*a+uO0i#bu|$5kZo0!4hq~K0R!xITTR7 zMl}g6Zqq>kU1x7EGjh;=euUCG=i}szy==Q4f+xrk;n~^I5UuaCoV%HV0C4| zv!Fz81tqyW$6Tnlv;^yJH2Xn(y(y%4ZrICiiEwU-Rz3;@iP?fW@e()2gY0BGvCql% zLhV%Qcc7AgEV%v~S*UeeGH|Kq<YjaiV^+sS#ZqhdT3a9l9AVDleX5XGr0h}v-6m~7nQS4aM~vensB&1$4@_P z?s}x&!@fH}-oFYpKNu$eg$^C+AJG*m%dXsCR8!KNZG6ziZub-yr|07P`?>Svy?Izx7E#w9vX^c&BEP@22U!!0^7IVv|5t8PT}@AaNO9CD z|I(772WH-!o5NF>U4PiWh|XTmr)EUQA-cBps`Rn=wkd(=DqjVNu3RXte#HF*a-v=> zX6$Z_V#E4x{$-p$VC&~6B6fGr)Mp6mtBZ9~=1%OJy)v0=$t6od!6}Gp^Ec7Tx%$Yx zk9wqEc7L6m)V@AlRx)~Ec|19$u|8h)6a}J(MDyVhLKd5q%lyzo%E%-JU$CdqJf+ji(s)^YE-z9JH0q((ByL_8>o?05#bFrTz??dbb!$C{=;wk6#G8# zNFHBaSuL8nckfxPyCJRG(L2cB-!2YE2RVYTeTeh>+lSW9&a;Usavi-Ju;Xwz9BC~k zBy@1{v$Jl2Ub8|d#7 z|Bpvpc2R3jU{ubx$b!q$P7xQ%=u!RM!MLzz-Zk_%2hDJ@_^l=;eIN0+6|CS6&Cl=9 z(csoY@xTEzNs9AbYhgCB-W~JP)(%)8xmV54HDIVX{Xxm}Ovd}m+c=!pk)y->ej$!z zG?Bj^-iTCx080UkW;r(kurG5A-B6$`8G@YgEAUmM0P{)vAssJYekA*)xfkH29m#SU zQoh9-ehg@7Cm`WW+Nkxw()<0%6>B@YZQ%)$D}1&)B_i42RN;No?DIzfOd18XPSV;~ z4XuZ5Vr#0-OulI8xg_FZ?;gIzC*cU)UJ28o;|ab%oAm|$&1(q6%LO#_(Tlp~vDp_n zXjZwR?c?4=nNQ6dyf-Qzx%_H{6_n6{WWIgKaCbhXJ(UzE?oOdye|KnAmnxpqv`B1z zaX>WAoe-2RM~`IEpIjklQB!(8Gj&c+{MSy4KP3=@xhRoPhKH_BPBRS|eF$h9sN=&$ zZC$oLDPZ}fU?mmMef`f&wSrK^M^;zEul^I@(|rL7GLVB#k0qU+j?Ow09uaP!yRaad z9lJiXVHDIlWw2jV0q!tyNT}KndbMot*1HVsuC`)xJ-4I#PkMJXo1IFqSsI%Oy9QL> z&RZFtX9TV3=|erh0L1EDY4&1;UZP%`b`b*}M)m$K(vn>o*Oox52F!rpl`Hr(*-iZ4 zAK7?Rv)`xlFLF}k1CKJwwp^7eN-^F{YF}kPAYYqJY-ctC4cG(2&O`3}3fS6JJk_J3 zNku5ZmV|3;!cEK0gXMp=p>F?kU26Aq(r;Z$;~90paAVlo%E(;_d|BhF7iv-VtilJ| zyTb5>xncD14uHOwWN#i~PW$ zICbUa90AkxTWH77!-(#yEudtL05!%qD8oBr_t~CB5NTrFFn|g7yEe2c%d~T}_Y7*; z=4op=0BPS6mNn7rgx<>@_zACw5*AH2AoKCrgVE{R>gOQM$lIK>-sduYBxjnc6DHJF zH}=V^x4=8orU;z=|iKFf><4Xpu zRbIn-^?43+^Ye}E?UuV@>GveVH%{N#?a=|TSZxz8&Ogf)4M2cU)+YWCGboYx$)B0+ zCttGzY3%Yr08HC(?e@-PHW%pBgoR&#SUc*GYei7ikpIxkZnjb-%QONIe};s?tU0Hj zSKX)QJGl7Q6!e?qe&rAz!ObQZ_)jN^>eb7oUhPEZ4uE2%d>WFetuuti2&Kb8{_bDg zPgAz*xS!Y;;&Rn;JYI$aJLYj)Fz4;PdotcqUGeKY1!sOygqsmDN{7>M!~wjnE0DZo zpb`{4V5|2sM+@Zbh>K%m*CPAU%>k=W7nX!5Wu~p0s(dl#<)|wO&CLz# z&44UeW;orPPZ5pQD$25@@`(Op3#U2Q^naeq?QUX%mdt+^7)}=cOwc^!sf-p5T z1AG&q&>YJS9M-;Xh7N$^BsM4&0ne{L_tJcLn7Ypb1CGp)9>SdF z%t-_wLZ5J7SilE#Qh(*d*!A>KaR4(*i+z0q=q&fVJgjI5ScbcEA+`8-EF*3u%AKtP z)^@^p%?;(HqleBP)k++ft~+-;lAIKzfb4Q9iumr?lb#;OeemflwXV$QfhdxJK-61@ zqIN_Tzj6P}-=7-m>s#ZFzSI#pI42vd<9708OW)KMZM0?W!`0s}<3j?(tR`RlkFW|9 z)QTU@%O(Akp(k|h?`yDFihPSER6s9%#*^H`;j-Zb7yK{X4iDygKi7y`xxS#!N#iG1 zoJ3zr0n{>eoy;0)0fb>?XgzEf8 zImS09XKh3d90qjAPFM-QzbuKsm{Aw|LlzQM7|u|ktPCnI3%h>3Fo^^_afzb_MUtW` zpLD0NP41VP{F_ezI^g}I#zhpPptkED2gMvpZ#lVsoXt$jWvr40Hh9Z*e~s=@pveHk(TuG4=<`)-y+eOEA;{qOERPW|QkZG+ zYa>)<24OomApw($%uUM5a_gjPVq5mRg9+0XY@AGAcaBO;2QUV9czwO>w1+x^{Kav3 zT0?Yc|3;rhbQZ5HQ_id4zPh80{XyY5w)D7Mx$pvmi3DuNNKjBfAJXjTfFNq0E^$I{ zM7{*I_#43N$|P(VNFL4A2LE;wDTm=@pU5nXa(6V{(`t{lm`&N`gPt&OAvmG zg<_!RQ;=r$>^DoL9=nN+&3o6c1i+;40@E!o4KKU0<-96{;eI|*CBBt4wS9PxGe+J_ zw{w_ga)D!&Qx++Xx{ku%hXWZ7=#guSgZ;Wplrqxae=Gw{1)OM%IqFjUIIf3e9}*gB z7(lD)>-wRi?L#pTp0-nyuOiw{&I|jkz5$HlQ?UOQQDPc$b$g`}n3!(dy1=PpZH;N- zpI1FUA5dUPr&37k9sRe^=nUhPf@hOHP49e&My{ane#SI3UUhYKZ3M(1<0ZKlSablY z*S9KbI79t{CNEwR`1u8lT2o{(*X-F}1hCM+tp+6JfRE;Ndf1)f88^EVqZSr;(#vh0 zeUXvp6%_{^#J8L_9C5BC@|(sSL5-9EOjmh%?m)bW0WM>_mw6|_h&?qm71r}OA}JNu z+`w<^a=P~OPxR-N2s7$Qsiz->6_bm?MZFC#Qkf(QSIAw9vI5TXp~CZ z1Or%+wpJZRCHMNQsk7zDn^55Rped%UjJ3Wsy7uj4s8Q07QcBnUq1~D~@H0=`6v)51 zI{*b1DSe6SoIG8MG|Y0RjA>;G{$vls?YHL*aK5}Z&hnlg_QDm_)u=W~v^9XvtDd$4 zOgj78i02XS-0c+J7A|6xSF3J|#O>Q{5>v23#i9^Tk} zWF_uE^=Ai&$dstCf+u4WbAZ!HvhM)Ufd$elV(x_dZ@=x^QRjOQrB|+_LZ{tk7EO4$ zqwJi?oxR8r_dGx3kfebl`8Z>sjHKa20jxiUve8ts{oBO{)Gvh(-bni+up2zX*uYdM91FyEHO6JPPX$+&1P+^C~sw15nRi z0^5*WeRCMzIXDecZw~(%e~z+iTgmMQ&3s`%nertv7l5L`SNFsklSRvojO%VdiRvEs zrpyP~O>`y+7IO?~YG300m9|0f1;DW*GBn-&_TqP~y1-jq*XRxYRgXH%*^FS%C8|sZ z2LnJ9FwUQ-<`983P^^Bkvm?XxkljOUm*itvsA<5dn$D0R%^qs`y9e{B7PXnO4;}jg z0@=9JQ4Q5}Ad=$#gIdlSXvu(a4?QQ$LHp6M|B|;@g!+_54;onEu%5sW2P!RKTPecv z`HAD1DM=T)Yayo6sQ#0#pg^r75E3IIOU%H4_A3;PU0t@jK>Qg6T}+PDED|wVcq4&a+RYu@G<*F3WIJ5$MOvIq4oS=I7wKo0$3PAWJ5DJ_gqjbh;l)*}byD(>Kfdphh zx4gawWLG%JmN{Q7k;c{DotVIr8_iPLFU~wCN>BHlJIg6|&xr}bwS3H*2eY2GvHrCx zdNhojcE%+YG`9iVH?rrKfcr4^-MH}Oj~VD#%SK;cJUYvHu4_kClk>~dbGP{7Cvy4n zTW8mOB z368F;DgsVghK=oh4_&!H(wi+wvh(}KD`9wr$I}NfJ7vCyx;qorcFmufhFf<_KR;q= ziO=VHwS9B#sy+23aLF42L+Up>W#i-L<4BB-j+q*Aj(FjYN;MNX))L%c_tob-U}gk& z7{9fbiHmxJ4+8R?gNF$~_<(-=_Ci_AX|WU(>djA{$lkOBS=S1zE?&x?;_sXk+AaaQ z5&&eTjduWIe)DEhnGy7D4ZOn2JJlmRJEzftIrx)(&4|6C zJGqe8Ml8>10bV>NQ*RzDmqOs4f23#wem$Pj1YT*C2JQJc^PxmF7D1PeR>C~Uafc6+)@j5DH>3VhnvG#O9!u@Q~@rN4us@ah;2k)eeRNCTmcapc=l{f7G zXRu2|VV96{56qDN0+SD7a~^u(i~gMrtPdJJS@eT4%krpJ z*a(^nB1gyhuj(xUy;|1R+Sq6o9vxjNn3JD?OMr^cmTS_PZh zJ=^Xi5O12=P(W>LgpHOzi%o$$C-5g*!iY#SpUR#pc`HRWcD=g3wA;wm$;H5UeI02p zkWWsvGH!9MZpYIo|NMgh=$d3yf>Gx3lV@@6ytYPX@;qF=un!!u0}xUUdTmq`0Sp4W zLsu_?y&D9q*aAS@jVdMC?sII_j{a;<=S#JO%yg<#&(<>iGzRunPl=DlYSv=E@j2BK z>$X){nzwe}zuZTAj}C!e-}_*S`>@atV~*E~fYOKrjnW2e#UR^o0?YutJ4IB!KF@8( ztXNSNl~H@^Y}~uwbiAcN+19dDRkdPK&-luf0C3+Srg?VVz=lOhYCrkV zYVbr^S=lmJ_1UOsiK*(hXODdFb@1;{Gyzc6R-n60y(@?Ezx1lAilJ|(EBBSR{Ypfr zPzg(+ds9#>DBOS;2zsmsMZa2f4nY)->a&aL1a&g2%AS=cUDy|PhUURI$R3!=AM{pL z!-1~93$&yUWHGv-vEQ{yj7ItTzT{O!p;@|Oe~(j9fE<^8_$>h77T%b%!j*jdE@ZcH zAMlP4QTVi-yTJ|j}XzqFl z#JULQ7&^9~CqWKT43mT0HD*fI{2$85u*2`B$QNdu4#$j)+T0!al0|*}aA!AutV{nztX%B7I(%+0!;tt2LeFovPxrd z%^=F5#(}XI45=lNA2a<`#%?-{uyM zF)y~G$tWTs8YjtJ{E2QMPlhEu$1i11hZ&pT-WW{VLf2QP5*JB>j5`>6)Hfb-(5tO# zVX6T9s+!-medaZo=<)S z_Vw#9dR}`%UJy_af1eDlx>Qje!erJLFss%62Y8jq|A_E2-4ajMl#%FFokeIjfc%i~ z3!Z|lv_@Uk7S<4XE9p5yi9yDn{S@r`?mKsC2$s9h%qQTz4A5US4v>a=Ydbv{n(yr3 z;tFdIPqCW=wqFpsr)?4YAH4ZhT^^?pTttEjB~K+jJ?CKK6`ugA1)yCPZ#@M)BW^$2 zIfKHMUIFNs@QyCPBPFJ$;?npo|MmuBpt!7-5IE?9;FX2GU`f1=tM(0U__u(S_`ZW# zp}3IrJazV1P$^^)v_gy;{ID?y%D}$ucfQsSiJ&KL9h76MjinA%YNq%)FzA36R%B0V^VH7HGUzjF z2G1}6)l5@l|8{qeJ^0S8{_=?MnCHRIqa&aQXk^r&J}6%xdYz`4Rr)JObIlphdgb`b zlL9sWwVAg`u7c*s?z@rMJK6X0gf_6ON@`tU_`t&1H0Q;=4K(%lH-B$5&!ggD4EL`- zUobQjB@ah>%)fE70=-SG&O7oNlhezZ4}=I9-YYvC!tb0*UH z*DmfmPy710Yh%~kJX{SU(rTO9F!}ka)}2gsvmcVvT+JDZLVMbaJL({&s8SCDV?<7b zosN#Ty&!QsJBjkoKZ5=>dbwH6nPJ`jmcM40z>+}_?PQ}d&q=a1T-=ZL6{kHq1?JLn_FURYn(Z3=8lSu`Rj zyWzwQThPgie?WHu5=^ypz4(blqCbc~ z&iLG1ck(RD*<~)%39tf7zD@cxwx{hLX!YsMm8We3KP%`@;p}@(gMbC{=kF&r7Lbkl z^>mj*pEiKjx|CC7)jQvS3sqd;rPKpWE@!A#rC7>1@HaFC7UIVGo0`u20Ky?4Q%-}9 zuQYG(t6nYP*j>=a|FNoUFvlz;!~prvTsM~&KWKwedLNF{!~%JaqR!pAQvSShza;~> z0=whJ_YEzeBX6-_{R8wFh zQUx9>0L#pDx)jxS0yHcFCoJHl#^PB(-1wk$XHTB+2ez)mS?%cbt8fe^cbTHcWzB`B zm*R$-fU_(WC^~tPq$3+_cH+7nD1YYBQz9ZrbEUv8VL3cVCI~D{*nqB0IudFBqWa$ z_uI1G5#Yerax!fla3~!te{;COh-lBb*#d5rBm)9{Q!dmf{BsnFQI+up(GaNehfc?; z>e}$O@Z?cKwb*c+mj~atVTV$_*HL{xT6p|i(QyNC$uBma9Vp`;9i%K9SLT7w5_+*> z6te4R6=iVA)WgWL4amRXX$rdM{D;*tF2uwVJV6DKJhTKHlAXXInUlkP;B9iluFr}C zRTg9R?TDZ|oAvi_yG{hKCbzV-Sg|{SMXx=i7<9gQ;bL-iF&p$f;!L$*-5quI0!Brr z?#jghqtEE$UK79#>z?*khy0DD1`j9w2iCyPsa(_}eNL`MCTF``dNhjkfP*ZDu#;oN z)ode(BnTqmDWNN%^8^{R!EJ7X0l*HdM9XjTqLtq2^9?O6x;g3%HntKlD)Am$4-&`o z(C(X;(-W>K*U82b)|J%1X73Y4ABamaA3!^6eDcL{-TO5JOYjd(L^K^KBf1_aBwNZd`jd5nS$KkLn|0T5yGTg+L z*Y<9I(4m%da)2spc3PnPeJ*^R84~Iku25hu_G}MRJ3hZBI$w25&-Jp=N`BYCmN*w`2= z2GJc6LrS@sw$xYoVx=o54@%d@aH<~^Lkv* zAazN@-_)Q?XX=w*zB~b(?D)k6<5tiN_}U`$^dZj{g8eEO7`|FETG0qv@F%6Doa?9}yDRlCpqbmIL$x%DBk)k+vjrNUH` zEz5l%F45e-uvU$djr@q}9W(ESpA;RjwM_uII#c&stk4rcN0g{k&(_$ct)TmxuLgA7 zws39=^y#e>7G}=RF9J#k@*_Ltf?(yXOAk-j5!sojV*ez$C0sP#@1ptjp}!Zk7VUKg z4j;)}$Lv8359w?hK}>j&U4ZHV5W!f-L*KaCp{)BeoeF3q+d1 zEOI-@s=xzOLIJIbSJ`-&HItz$cIHp#Vn9XH!OuhSlSdS3fQI~?{qEg6S=2|Xjd|cB z1CL+;55jl=b11?Sy`15oC+WO_D1pQSdCzis40Oc);lDleJpH=5y0BONSfnuX#tktV zy}8nSq11qR`kPvpDSfEXiEqc{Weq=!P1WTT50r07FY_<(b}4tXiEqQkAJh9j-C79m zh{~;y7|qv^Eh-z$QC|oUu~-^0waMw(ml(Yq3lgJ(6hZ8=bt%eQ67xC76V}UEDElSC z$81VXV8E69(hmbxt1Y~}qz+=;|Hs#Nh9%v;e^Xl8P}9u4(#lHHTq(IKHM=V_TketM zC|rmOMaarD=WWBCR903hYUaR!nkjCw0p>zPp~6j05T2|5tNV8x_3$z}I*2dVd7bBH zowM+^>>k=9F1rW4?aUc2J|%TM=WMt(!}LG5>CNDS|FyV5h?4IXt%u!{YS}`Pg3H%Q zX_*V({k!S?{rgkXZLfQ)Qw9geD?vCEP>B7O0u^S&O4{6BC*twn$#OaQDZfp(0QYN5 zPOi9O*g^IO)ZEw9RHxTe7$?C}36^JUJnl*E`OwjEYP*C4=~|yMxoTf%=`#lmsN5Q4 z0Xx&xdwRUhsds-a-LdlJ%aj!!D;dA;(6wUQ76%y_k#x3-4bYb9o;>*rh{MlQ8VXMo&6ZF{BxBVcN$J?A#>Q`Eo(l%_% zS(;8gdIg8pztOf~lYB4eUIW9cB)gs2@w_9l20B1Kz6d6(zU-#;rGbuB8zo#pTH7$q zdxldF${YZqG`g&;Qmr6eZFCV98Z0A6i}GO8jNR_ot<{SF|@#^Pd!I!2n)V7>7gW?r@svpgax zUj@9=-a$Iv5l3!7i_9!k>@HqJAYd9xvozJnk#I*|FJLra<{ViE!ymfh!mlQBCxJxZ zqy}%Wl6-P6E-PXx@g=CSi+-4W>Z~mN_N3dQZ|~-mTonLsO*g`Z1vK|DXP83|jQHp? z-C4%2U)&7&y5fraDe&IhB(uk$7%l+@fWA}Hd)*joaBwoz(B~a*iroGQbn)8Qg$EV+ z99JN=PP0nz=KZ!A5F)PqYGk|X3EFhq$3fwUjXruMbo4A`J`9ia#3O>40#kd-^~u?# zQG}{cw!$37r((@>*VdlB2FyLc0%_bSKgP03tl{XAm8JAH09gJW z2mUYBtM13kl>nmU!&Pxmv0}*P6$_uvROI$QoIL~jqU`ScGpjLBlBMYp8RMW~{}1)F z^%;}!pO-WSLx)EjV_?69?xszvd5Bq{_L%KB^<`)Xw*KqKE1!1&@~N;eA4$YU{J1dH zozK;01q+sfZ9!Ux22i8R=uWQb5?8!`=ZX9lfS*LaNC0y7D?mkr0=~{!TdZM03~xSa z3FKtOoU|=0V9QiYwyLJJfr;_}EF{)Ev$FmFBqL1=j^2xdRbULb#AFrb8p$H2shC6f zBgQ0v=SIJMN%rX@`|{d=G8h&PjuqLAb5@DgWSQpk?pm)Rp(b@WavC@Y4p4*Fc&tKm zxEAmkj<;dwB%ZC#)E7?T!L0Pb`W@5Qzq9rLvaf0Gg!VP1z#B=n99QXidZGcL5&L+) zYF^@4y`t4)jaC1s3_m@J0t}8#rVjxYNE=E zhM=%;n?odbclSVP2XM{gGm=|{f1CIfp)U_0rO916k>y zoO=(#&UyAU5G(BU@8hcb9iZymcr!6P?qZ!0i9qPBak&5zJ(OxR7AUhwE9r=-hoHE$939M8%vU4eG1(RGW*GZw*-NwNLwf#2)pycD<5~>GJD_!z=VH zRV#B?CuZ0;(kw$KPL)h@7JD50yN?<#MD}+ynG8S4r!8E-?{c<6Qa;xC*?-~G%hCep zlRZ|E1O(ca#LQV0!4m(CX+7zVBW zzu{Nt*8iQ4+0K6LFHe7H1=h!*LA<-x<8Bd+z`zO*!{@VXxFJ9N*>%CMurO_1(kaA_ zX276;WDPJP0ILQdfGk1d2J+b|GB~pO6ud{E;fFHdfR859oIKN0L2y89Ovx@Wj-Ri0 zp+6A^uVT6U_Jni-=?0Sj>>mum(~w2eGnDQn@X>h3u0cpLK8}4Q6OmJnYX$QNZ{xIN)U1#4>mAaK5*& z5ZVLGme!vO%=;f8_E2MZ@v`F;vYshKp1G;%P$Gy|sqvXfSimrud4>F6pY=FjF8)@f z&jCL*d!o~cyF!9JEiRU9;(>&jcRpgJ&aD6&Rj?BzE7?2{JS{=ZwWrqBp*UH2v$DOs zq9h^VPZbR_T~!hI(l!!M67{iWKLgpquwVa&CL+ziZhbQ4e~odpC;!XBH`Wy?0op!TK%5ouTbQGx zPOrXtdp4>FB}mxL0vZA2Bsn;{r&iC*yc!O>m=D|zED#^b=gy{Q5{a)S@;RSB|8~Qg z=weYp(o3L<|MBtZelWH#0!uJJza=n3 zHAV`{Wz6VV5dC@^;1x_jeot3Xp8>7QZ^$Z^yW~$^wqy0#_{@&(Hv&cpI3_Hh1aYVr zWctL%pS-=kn9uo5)l%Nx)pDlxxdz>PRDwmL8~WXv3b@*%(}M(qHK1$*P1bX&?J{6XxsYt@BYINx!=iyNd$v4XAm^No4hDJBm;ULVAz}F=5b8(p)p5%H;WWD zppYp{i!1|DJTFKD$OhMtsqlm>v|9_h(-+&oDIK72I zDrE7wjP`C_(v3!yujVn&9?o_H{R41=1RB$nglyBS+5GkX9Aw1okZdprFwFi<;ezN$ z(00EGj=p#am{M;zIvUozvkv!CdsA504}f-nVZ8%_I-y6Wf4!@+iAf`X?1nTAfLYJY zg`oZLNWgOr$40)hT)Y$p zKUf`cS>Vo?Ak=e_vo^hotJAX}uVUan>`Lg2@+!t~HgBO`SxzZsC{3l*;@8-1<<;Qz z>Xcad|3)i~DPH*>U3Qsqp8nmS`sr#c3LOy8O}uySkUh{{Oep}Bxf`evA(N-ga0vVU zFIbEP6SPe4{O?#E9ZV!+`JDdY;o(G}x@rRkbDfGrP!mypX z;NIvzjGKQC_`g$Wy5k@Q&Sd@5nN$-(uxG~=gaGh2nN8tUe=rT`4N%w5;LR9c2zEn@>}V^BkqdSwQ(1bPzg{fIsf4^ zu!LylSqp57oA%t zdB*$4mqkPvAVbWyz%p`11F*UR_x~KEIkDIO`+zhbrIgB(g02IB67Zv;76s%{EXg_d zGV7@T8Cr7m5fcA1ADR7e=hag}2124cj-QZwq1AcHu`ctFdw2D%L+nB=t<{4!@AzEv z+M#yG>ux9NWl_w_BIK)lq(%4ww8?K8pF5il#%&2 z<)r(l48`BFXAx)$64{TCL9|tl&hpnwTO0G6ZZEH++sQ}W7zUF)FXG`3w{Ft5J2$?G zxrf!lgN59a>+X+|MbehUTOIAJCYf*dm|vnwlT)4&%e@>-kzCC zi-H`(S~7LqPdudNF%T&Y3tL~}-CKDdgxfi&{AqS8kYUjQSBLEB>Dhj+!0cYm>jNL& zUo8m-oZpp$1II$dc=sq7Z*=`{n}E0eJ3%u_Zij;Qs9Sc zlh#yp!M)3brH!HuRPr9jlUY{ZhLzN7XlakUB{>fsyb_BaOFv164KwG}T%GT^`Dwmo zFkaoW-l3&yOTD*KG~YDA>nX&tiGwiz^-FDem8=0w-5)8XbDB~eV&dwHJqC%xF}geh z1H3#j9Tgt*?bdDE^zk#EYf|s&bB(|35GXZ7dTVx5_K zZjd#B^>)(7dZuBgk8b0ggP4;srayCY&wn0BENhtC*tJp<#5y;jFaKd3a|i0H%RbVF zZg+k#7{6)CYXoFYC5VsML|ssj~u5cZn3w)2}QU&QTCRWP$^mmiOe3?L>% zL0aW7(QyIQa4&pLFTuG_c9K7R{+7w|G`&D8$4Zlh8+X&Q@N8dGsb9SE%d_?-@xqo! zT^;p)3Uk~Thf%1h9IdI$+}$TBny@|>HARc&!P{@Ako9GD|M{^A0#?-i{Ej+p+f>v1 zGPiLQSG>qwrf%L?>QP2D>|zl4bSmtyDpP%;dbu>C2brINXnOhk3odqWh#oSJykV z4?Q)}zxAPK``z2eOQIS(R?$(dilbu+Gxm0NPlwy_cy-gGKNTioYW*7;m0OA(=~ce# zN;^$MAjd6a<&-`su#!J`p9+g)pz3|ad)+M0U)d~yoI87N@Wdbg6U8 zzn&bnNZUw~&F=1*?CzN3H^09H{~5gc<;xeZfPn2S#~^^IG{H_Qy!7*{Xon`fkQyI` z?_FMJ9&-KI0oD5X^WUjik~C>AVMdgSV-*y!nB~ajpgku0+Gh1v%{C6(j{Gt_Nl4#K zxt@=MLytT-2MfTcIA-5Yhrv4c$Yf>dy>GPB(RmhE)uGRlq6V|ViB2Cnnjsrgc2VHB zs?IDBq}Tu>-AdGWZi2~J{;A^;mY|hlAn3ohMVOFv1<0As^)mf^g`HI!=1^x~wD4ND8%GitXsQGD*guH+ysa3sEKuuUhU2a>sGCz|rZ!+xSfZliVi}?N{0{uU4D>_~be)f%&%C#`=#h zBKKB`u~WkVsnyq+>)igg!KyE#WAu!U{`6+Wj52b+q%YJV0>!HGju1MqOoK$n%Y;)k z@5ZjfL$G`^i%`LON7022JtCk;1}c%75eCt?=&jpc+)p;0sTC4aqIJv{p~$kS@4HQS zW4Gm4tSu)oXr&AS^p2ljhPSv4^ICs}pTvD1A1ByUW9X)BZR#@e?(-%(o{dRbDJ!;? zNoV)n4m+CqxV!t*Wk*;lin!FKtG-JdmRga{bz?RHti++MadnMT-`SeWLv-8Kuila9xmEZ_q zxfex{Wv~lB>=|k#6|cU|AJ>18d!D4vb1mnDqDq@+ZBNJvOG^>5Wua&=*eKLWSaPx( z(cjvVSIyowhb6VpKE%iw)M5_(xlYm;yubD;)hd?dZ9-Ef_sOt;C^=0e^xfqv8(&DR zm?yP8Oa8Rx#~sD%&b_^hh09}3-bJi0Eplt;4R9o5v@tAU!`vW$GnHXz=|^F?xZtQw z#6B}v8r33Qg#BPFg_>-}>f_Yi*XuDMyV@QJed3T-gF>@cgC}Ybv|RqsB4|KmKu^fv zPd5v36-9*)lVYeQGh<@pfTWCt|c0PYuaiLC+Ol7Uzot+couJ}R& z&>m$2)ZQlF7+-6-1Dg%n;@s;G>zOMn=Ho~VD3BI(DQcW-{#*vxEtjbFM`{Kl*Q+paKzev&uK7L-(#Im zKMdE_);66H#DRGv5MF7%!m#PNEc;+bUNBRK?1wddg{dm5Z%!V zP8>H{ylHM*)6IY*?D3Nsr#=|<)STKQRhF(QFW>Uv!<}T+*l8m(sqJ;;o4J55HwJ-K zI$2gRG4;tjO^dkVr#tYWJxZLZtG#uN9@{H|KIfz)-}dnlU07A4M(4(W4;(iC(ztPp zMOsbNT#HCWUie@y6qCR~K@+}mGbvO|MFB-%QtfH0F0L)`B`Ps@|2bRYhW}hiY@fGl*lbJs^ZU+ZK%&jNr}>1@r4cX=D|pjC~PXVUE!N8bYFK9l)Q+I z7@L&CnYZdGLhq~+I=C{>wB`9SoWolb%90GV!ZgKDeE%tBc}dpp7U3#w7apc>%F^`+ zBkz)9k#Ui|3#A#vks+sL_t|JFJ7L3}z{W)-eNUeH72xX_{4!Bcd3&Sw#**8lP%mvW zf!VFnQqih+WAQ}=C#$;{y)3JH^9xmQ|JfhMxi9U48pR?+ zk5$*m5{MROtEvdO31F;3oWsVLZd6uwa(1(ZYE-S!9zyI=mzen`X15@8BMSOgGK%7*&wWsQvs927j@zv)IN-gat1Ey!% z=|Upqbqy)HnE7OXd|4!{-GFAo2VE6|HhWGx`gz~4lbr~S&DX6Ep86vY!)1i~S&RwGC_!YDWldOd{7=p$$ zpX$k9$f_U|cTb)_{bCMi@OLYTGr(FBIYRW;X*dR>Vj4LU2G1Yo)z<`*h$HnCSOF$- zC5|>5iJEkJklG5FY2cjuz(BawhHUuuXjfKib#LCh5k61^GBu7KstIiU`SYL(mWP-c zt=hIrsnX0iVSdo%((FK-YjBft>OJ8ulhIZs;|d)R-+wBq(ckwm++-ioXWP#emFU4C zcZ;1ncgp$nfz&XQ=wJIcmMp{bBV+6(mO^>E(@=4QOcT~_$~BQD^8DH!q;_riX zxZT;Y-l92j5wwZ~==8C;y1Jv0>s0JIRgT^$%}UhE8q8G)-lH(m{+ia3XmH|hkJ#Db z&j$^hG%I@~k|S~D^5ykmSBts0P^?|5U)A|zj8#s@!_y#L8)3(a{rvfrr$_s-ito8( z`*Y{KNuQ)LAN=#{oE;tfUK4%w6GM4DJhQtePadwXP286*^14EA!i4|6XFITo0^+lr zP$nUt=028RSX>OTH0JQX1;_xlK6^Z$Yhs&8UPj~_yU)miJr=YWnF#Ny+sx_g@Z?U>T)nxtYs#Y zvXp;qnp^9aSM(T#e`|qMia|ulAD1>05y^+EZ9 z*P=N&60`6=^1jqo>*^!aZZKoS@mZOHptS|5Ciitk#qOG2Bs#Y}f^eGNT|8YAp zmb+uJ_K6YC?_GHK)2Ed?Q8)>r|CjaFxZ71#b3^NBmDhH8!<;G}CWpQHlPy_RY_+}? zt->!QP9K>tkl%Chz$JsSU1@n^YsWE;4i5Ct#E|^(LVM}0at!mbRC=s#Q}Oj1C(Mz3 zQLFc0>nVW`9?ZG6^1oj0;pBjc>}YNE{OY=>0af1h0TffH#KHrEosZ88c&_TC+2efJ z9m2Q#4Ks_(yx?{h{T~Xvp_UEMKA6Zx?FHmr*xP&<=skn52WE;R$SNf|I_e!A9L}Cu z31n$q)Udf9&+T(7VQYR(9;Y`1XVBm$0&%i1GBTPAB@Tkd>?@=iq1-NI; zi~7T!nQYryUk%S*;qv&JH91E))?dDC8uIVx+4J99<79e#Bft7q`f##zuKN0mKDc=C z6>-(~Qo!Jyw{P{S*NB-^u>^_wlM57dQ)T7OmQq)Tu_|RqIe3^L;ECy)k69!6))>@?k_I+FKBHg0B*@nchi=oyGd@{DlQBzbU4z0VwgtFp$W4xtYI57K9DHWhGE8(# zE)oKn)if#k+7nui2I3eA3AW?-3fg2U)SV$$+>!_&J2n>ZKC6q-MbqVXy!$_gtQ%K8 z>hJyjmrem~zi|97-5>EmngIqR?Je5Q;NQFfyC)X&hbl$##Fd&4X`UN1#&V3^cSggf zRJU&iRVSIGiv2%1>tt@HgqYaXYuAM9Bc|UANtoSC$MP8dTGAo5>T%%88V8-?%1V(% zd?e7%1gVr!lXbDH-9XUL0@Q>FU@_n3)NR`adTZIOs_iQ)Cj6zR32xx2f&lyQaQg4U z?eO*E&7qk_*-r3d7$!O$q=CnXI#kdGo7E8^*A=2rVL`g<-|i& zfm3W{m}QY5f#ieE^wFbT4PC6I#`#nb-(mS1!2~UA{rYgXQ2n<3kuKKs>&&V66Hz`0$$IA+Afg*v8VV)_uTz2vFL@Dx z+^T&7FtXpc(PhM`iFTd_62s{m96#)mpQv@AKaHpyN&I2wbf!qp%xvn$jRak%QS3sz z?vuC}G)aO7@yLE0UsEmfHJ@FCT`K|$fNqz?PQ&pYV4uT44`Qi6TXpEcG%2)PNQi%6 zDt5pvxwyEN^?3F}I&WO}nbD)95!6uNS6&07f~3NAb+eQn!&U$7;k$l^K>h@AO9CW2 zzwU6zeuz?2@k`(37c3kpe$>N0)=~CNDAZb3)**UwSJ(>rRhO@1LB2H_t+dGDe1H8q z4vUiC)!>L)JowYZqK8aBFIw7=W^ebj{Ozse_4QgqgWH*J^|cqi?P+S#*B@6HbTwFu z-q$aE@5xbxc)zO~;cJ$NJK5>-SI+?_FjHJA`=5Oo zlNQM-l(pzR`}PeF%TgtvPU;`tp`s*@QUSIi-M`&weo=p!4%BG}OvjsrRNAov zb>Yj+3;JtWnRE0=;!b&ful^N)#l|m$N_TaQ=}M1zy56?Tv0fQFzQX?LrX9QXIp}Og z|J+iI#`@1vasl9LhUTfCzDOS& zofm)j>H1ANfg3at6XT91R?E=4vn1=nw%A96dHMLXwQa#kXjRB%5`06wAf-I`yl;~# zu{D7XY8yX6b#r!Mn-@&u9B53k~5a)Nv-_Lpr`fl)BK9yPyHc6r1vZa8s!}O_)x2LLa$emjN6Pl9*vbJu zDhKg5vccR+1oD@z5Y3I3JKm0M*ktliNU6tS?xwE7c69~Ov16|%_(E6-!QDoW<(ux@ z)tZUi+%Zo<=2tc~(QH7b>cN8t|2?&5ZUC14lt2I& zjT3m*5mBFyjFnQTZ1_pmHzN`f8_frB+t^QmECCiYp z#iPIM&OJ*fES2KNb1L+J2Da9pu{b!UM%lc1?wCmmD-*E2oC9hks&q|eDD4@A^L&nxux33>5G8zk3 zRJO^0Pija?TkTfMu|`D5e0#a?5^`N1|H#w%cp`V(m#+jSPcdPO(@w#qgOj%f)34vWNjkIFy%5U{K)T?Uh85Vpj5HBc4ZeGgis;04{2!y6zGQ8$&9yfU-01bxZu@86q&0&|3@1tsRjbc70C)>^dl5hrgt zti)g-)tO&uluGFI`P+|s;EJ^4rX0I+olSjttjKLjH6I#vD%%-7olBobMy6+|b2XoO zBNz9O9P}e&f5^&3oVMEXXOwZleKP)UN1?t=Ud-Iwyk4=s?q{*9OG9sIssEOQ{(wfI}kaO|=rgyDkAlQD`#C3>R z(<%x~bWG-3E1|my2_vzl`OQlnj*hIQpah5$LqN}v%(ujj_6EaB^qQ2VK7RVNVCR`X z31Y}<2;6D6`pODP2aIaN)gBOigjIDd${-J36#^me5y;WD$ae{|Pwq9vOObryKohivAj(g%fhE zR;xuBFa>iG^AE`hMGYS41u90YJKf@^_d^_xo=*-r2UiL%ArOs7>D={1PL4<@^iG;G zvSLw}zj5@Ml*P%#^<|;%Zk^M*#KeEnaN{f3i`w3rtbxuZiO@cEflTe@iouS@TuUd)Cje>ULRZ_d2b)gVWO&72ygsTcVvgaK#}7#(v@>j-cn$J z)LHQ8Z|sNY_w>K-j@f_@R$ies7Tk{Sj=Rd;GJ3v7z$wBiOruH4DZ7ZlWJ;;d*3X|$ zrKhMFn5A?--EnT=ThI;k*d`3y!VwobOVAL9ea3Xo+@{xuZS<}y7Q0C zS4Oab>YtyT^~6w1>zw}Rz!>N8tEK2=qc#S8(rJ6~J>ei|)Q(rLAmfM4H~Au7R01N7u%2Qp0?S+gFuOa`dz0qOJY zRYGolsWDY<(bWNn-X+aX*M(!E-9Gcc%Alr;Jv%ho69-2L=kAcH6w0%>@VAYdvSB;f zzSPB@#=GzyR)pG;KfJ1cC@-yLo_tz3|>Yx=D@Tslo7Y;vXZBU?^)Yy%1yR;mzMez#*KJx zl4X-YGdgml4kW0D3$mX?T-^}Y7(=J8$t1gJD5q=mHc>(_gttWei9p>?x4IZs)%0LQ;xMvqV(Vp5&oh^ZURxH zC4l|ai;D-^{TbPxdFcB_wXvV~WwEzY*G>WrhrEWrO_h~sEq=NvZL#7uL|YeL7woWK z`ro>c4X@j5&iYjDZ}Z-d2zISyAuNI`ykoqiiJi&C6GRYa?WQuVtZec@sd0UMCS;>7 zM=NOL=V)Gf+*8!=0z%=D`zpCJD5n^TTs$*pGo45^kj+#0QG|1cFFCWy6 zOfc3)^zO%{udTnD`f*$lxqP^w?^=0Hy<$wnY`Yv=?wW;H0G%7yJK3-}%#tpDe9`^t z7lVC&X{l*OMfI*?;H>6E7Vw3B$GCy|D#xM|FYdAP(gr@2xt|STJ3?uKmkg+{)VT+#21NvlO+%uYi(GV~QrU z`cHbeM0l`aW_e-Bp z&j^XB91bX}a?@&o&T>B{?3j#nVETv&9+;auv1i)9>0%@c(Y|-UlDDMpeDZi|FuE|W zl^G62q&m+a?sBX8)^_G|cOd&X9u_jKa+bEWBvAnXQUUNL?ml-|#B%mqfg^#o9U0ZZ zYL)Q_rq^>SXO{3BrJDEQx0d+M#=2C75FUfF2qp|DVPbG@erb%Z6)qubRS9hG3#K8- zeMBO0I9ZoC@V*QqMI{?`SpE6&5gC7{QfdYOFyXii0OUaX7Z*qpB_($j9z5V@_2F!z z!=zyzy7yB!NaP&8v;}u|{NAHohD8_rJzP%6m&t-@DqwN-=IaB}MMa1g&o;KT*+@fu zXCG;OPqhwtZ|qk{{SiXh}$;HUlW6D@=~uZHwCwHiz;&vrQ`R z$nMyM=ccck#W%=xUb`8kqyiGmG|k-LP^EUr@|Bjx(Qm^kqoW=*X(R?BVN(y847-W! ztGEK{`c35cr@e+DWgw!$W@#82Io1sB(ysi2P|scPaXP=dyX!oHq#VUx@Cielbv%+h zwlpoOC#y^SajmiR4F6!0>OmO?(qIIKaGauS6-kK6^9A0x^-7jMFkL{2OCI@uSyev1=I44HvY=Tp;LTVqiQ z3g_$Vk`Ci^7jiCB{O_;2pDC&s65pAf|G|gyJbxCEMj-1sdS2dz=GlEAvdj~47Sr=* z&l-l9*2@Q`pxTxG{O~7C&;5OnOZKV!R(DLT{7_c+NGL>9%+8K(17B)tNcrk5*_zUs zBOhS*qCB2vDY@OdiI%>jRiQ6^BJ{gNeEA^-n@({^ZS=0J;^IIL*?QFY*U0Htz|6vFPiaY|N}M%z4`z1-+gwhdk@=yfB6Zu${6 zXv19a>Cq=S<8xxVT@OPK-?YFul35zPy@|nt!emX$d&ewhy-gk*CzfnqjZy-$oz*>p zE(a;-d@#^Tu3w&M0}|NvH5bYqni1cVtn0&>9u*_w1kj&Qi?@Cfn+woVmBVE1WsFaR zj9tC~X$~P!t{J)8wNrDB7tGsiR^qIo5ypBf>QQ@h2WM&`pTfgNgzqYHyb_{mNo#Rg zAOF4|Sk61xtv#sw&|iAEL+p}6 zmd?Z`BTCP+6pr;8S5isg7HiOG#Y~0T(-eV_T&>WPb|PJ~6Wh0Slbes2MVDV6P=u;4 ze`_me3OKQ`9ha^=o8)u*Luj#ymMc$4d1omGy$V2G*xYyI;|9o|uVdP#zvz_`J8F`s z>fe_IQ|Ta`EpmF4xIWV&_=Vd6y8JtUx9)tP>2AOU6%{O>SAGBEbCEkQ%vR)9c(~|S ziuccSf!x5`O)BkgjfzwiTVMA(pnnyrwvCNF*%pHV%4HpXHUqwzZvze>NKD;j%u2BM zwYw&>trE+v$#!;b>51kDK1TDl-PKgsq%LWuXPh9^!+~&0K+eCimWa65qxl@#+M$xw z^;7z5vN9jPew|cT60dKn_RWVrtg5L$hJyNfMsKME&GR9EOEyoHB-6gLTP^x(A_W*; zn

cG^KeQnB&V>Xm)805ffYZo0|XL=iC3N^9jq7x6O>iCF_G!tdD@%2dlezS)N>@ z09w85(9+cLyA1CvU5)4;QcED`F?FItlyWyAeniIts= zWtnE2d-1RD2%ni@8v+zY3~`DNbDL)~1nxC&1>oJUK+knQ!#q@&-gWwp*1>y1KD%TV`i<&b)YoYYN%WX}ysE)C4ajgg4?*7$D7B zSkOmXsNOiSJ1WUW_~HTS1`lbIef4i|Rji`!L^Zv5v$dNysvyWZy;u15@u*c)IEcP* z69>WwOcTw0r~z=mL8)O!r-|L}b$6Z^4VS$>p1}^AUv+omoI)DB(HV<#Dkz1JOe~+s!EsHmt6V#TC zNqTTz-%qc_@(QrbwBFn|r*(W>{no{c`#qhGq5L$r4(EL}2BpZx!k~{G-S=Q}MIGtl zROXr=GdJ{fOG(UKq??Me4HT|8?ot~ewzv4I&t3(S>W{SaPXltkgmi5Vd9Xzsu!u+x z-*cCTVOM=OXBV{Zf#unMu~;f^*L=e9icAot9Pf(v5>%LE{~ojF{-R}NI3N3@a;Lq77{Pa05`KaV>K6kL^VhEJA9#1 z!AF}M7R*gNhl8tN6*zU-KmAizSWKoHNc(Jb;t2Nju^J=9{;_bJ@S_YG2|S&gZZ0qQ zP}ykxmCe2b0elGYoQ0#e7;l)Sm0zFF zy}_XEK{~SU(Tlx%Y;Eb#@U2z^rOony;{JwQ!ePjj7Irt-%m&JWh@ zYCGh*W09Lt7rLo6-6F|#X{sf;yE`fuIns&vk*o0hP4WC|``E4K{rl@QB%e!d$!DM& zQ;equHh5Y{=#nfv4nBQ^b^UZbe=HKvZ`~ad;_r8gHY;v_--NYXP^x?{CwNRdjwh-( zwKTt zA-CF3%0_s_B`{7a;pj+2y2$RnjLE75s>~5=-%_X1wA$@QNY>%lHN(2d*>;YQ&pN(>i^bYeA+ry-+AN zxXy>NKUt-mN%@=OV^&ld@|U4-;ZVrbKt*IqN{W&jSQYi^=MRJ!y)+}%%U?7+HFcl? zCbDnE-Q>}UO^i8uYc?Td!{>%kPwi*g8OOfl&T!G9B=1B=$5tF!1F&G=djh?f6b$wX zrp?KDgVzZQ9=y}NzAox`Mg9Ec`07lVo)8`KFT>oLfa7V5g&&6M$;tjV0^80p55If6 z(USVg&E-}kRp%j-HchRoZf}5RiKDZfSeLx+!m5dY5|ZYv zBVwu1HoLK8NS)=Ho83&$k&kjNR^x~Qsz;7fR`TkYk>yaFkU>KeisKvkDo*+2M`PoJ zlf?QF&;(o$mD<*WiVGh^jzKoplH%evCF9eKiol`!Hk|sFnlDI3z zV~g***RpDZ?!|1)w-B==xxT9mYUy{l27Q^r{#xF5XuGNKQ=l6#b?U|t?P+UK0)V~> zZMp!ur@5IC2;6zAaL7s(H6$7Z{YV>9q?4y18f|hg?Z2?(#Oc4P83chq<35dP5~vA| zTmfj?Er-!>_W=9sVhZu1>O6V6fu5^y>C&ZIuqC&y?(oGccVBu-UcM*nJw4sAf}SIJ z?+2^6Hwl23=frO78=$gsNeLypEs(#EmPh>1>?`jUpzyTd-kIfr-NH&R z5l9KJ46y^4{V-RnOb?Q>HAD8q(Q^5p8*?j6ABD@uuK^9)AdNm zG2;1V;3Ndx!|s`{3iGlnkCh=_2^*Yt@}uE1+`=%<9J|7k4oGm_nZ9F@{!k)&Q+X zXxAC_^l)z3&yINdX6q&k8ac-P*Rn>(+8w|$yX^Id-a4154SINXJ1U4?GuN*nv61CQR|xpaAnBc*zu^9poWML2r_vX zQx9LmVd$G4uBdE78>5Icjine@kEJs4?bZljOgeWG`nL|^z0e<_TuI4Q&7sDa$Zdjm zDIT?RgcQ=n%ne;M9B+J7mZ|F0nvV6++1+Ey8e^OdO)JUSF-y)p1_l2V z^=I`y%c{8kd0$vWMBRP{iw~$fJ-#w9x16nYI=zoR`vZ~T+ZUI#RaRCNy`#uE;bKXv zFll+ckg`qphJ${W4x_}wNLYS-4KGHT$@WX}&D7v3h9-90hWeADZ2 zB5pMY*P^x@D6(tdD#XsQ%tOLr=iA$|a&b{gIinue@b0&>p!Nkv;}5hK_V3?kf@|w7 zalIMNsSL7Th;rAQLQPcR~bXEDi zvU1|#qc7(VaH?cia>(^XM$@4=!0CzrJd=778_MiM|rT-`XcQ$1E3o z*rHUscx9~LwxYRFXKA@`jf7P~q@^R#i(FcIoGw=WHqg984ZS#H!{qJa?`!HZ6zur( zoVgIl`rACgyV&-ia{_GTUM-v?43As}y0MpO;#j*q8-t&YJqwPKTLo3&h|%uM-uJ9! zm|l*xnTqYhcc0k(&_D*I+ndN)Rhy0HpdKO$PUCav4R9Fj z)B^v6v;50i{N%e1XjZm;8A%AAa6Izuj+x;}#Ns^36J-l91`OV*(aE}~O zCxv$reDlNQ{nB71LrzCibFDXiP1%~3m!B`pWPbb*vuoJXoJ75J$t!pHZ6_o+PCj~ z|3KpZqwBrnl2HG!e@A7*RatH=Tb|NfnUbrrtaBRHsT|>+6)7qyDhQf6%2lUwCz)+= zW#$$~iYY=?f)i8{DhDDeASl1v=k@&ld0t=t>5tR`g!}%C>v~@orl*rjO6ypX7$&p7 z8jgc~B;4WZ9jmWXR@$)j{;7weNrHp^qvJwq$y@w;P?hgFbf|L{#3$%}&qoNKIxD9W zFZX@BdjN+SG#@lF+PRgf26~ZO7#(87H2Cgr8EI=2OMX1RKA!1(*bOu;#R7=axHUYfkp39TR?2`sUY$nm-d zc5l#vdg&B?_yC05PyVTKai7kWWDOM@T0oyiAE02k) z>8KmpEe9|}opwC=#F}7i6y#P-dSl+_RvBxni08_Rd%9yjl6z`dk{v+n?Q>yTO3H{| z*&M2wZuV(b*pvUgE!veQk>ct1yEU-K=(420+Ss%W8%D=mU@LGrYnANE46HrSk#*M9 zut2C!MpYvUJcmsgawWqk1;z!i-eP4t9$?eEYVQtxD!l3}r!-mFSqJ(iYuc^R0=y9W zP-GoG_wvA|&#&VGnx0WipIQ4VtaVbXxgZih7NDE*Kv+yrs>QI#Nb)N1&K(tdd;9)g zY6Mel@B8;(fAq$|%*-~HmhA4}fIQ&TroL}ie(+jQJH@85YHaH$l zQMaum-KbrT_!$uR$opkvS!u=AATT7J`*CICfo&V9Kc1IX?J!ASh_o)fiB5#QQg4Zq zzRJa*oK-IZ8r9m7^?L!Nonp1NRHK zq4UOpRu7wpzDg+(wgAokw|u)R;GMu`yUL|lB09Prq?oWqS}UI6SFIT-UdF#od@5U(e zs>Dp=Q~IX&rDGo<=y#^n0wOuL4ksPTN2n4xJ|j(}x`7j0%=3%VIIxGpv`|J;wtX(D zD*MlL`_38ImdTwfq`-&cyq$J)aEak;*P+82{HYU9Ca<@}NZwtUwJ_iP^_!28j&!Md zcK#`DCiG#I?C#9WQSXr$l0~yi<+2&jDp=!Vc5ge83t5-rIM6C{OW={oW?dpyjF5y^ zv34i5e3KxN$Z45Uw>Zh1|4Y{^cI-_d1%I(rn5YtZlQv<6&L0O7G!rA{d~q4(zjxSt z?weGZH42QOwF?a52Z;{j9PTy@Hgp+uAX~F@b6e-r9>q;w(GN%i*%=KO3yg82{6F_)AFUH?Sl zYpsc;6JZ;}E~e~d^Fy__l$mEbzH-x9AiYWC8|H!oetdAZ$I$YGPw(lP7p>YyANuFJ zUO(yVyQeNU_bX}AEei5sCkY-qso+-`>BS3B0m?nkb3TT7@iaxbQLTa|+sJ9-crWF$ zr%%1_QRIybo`bzp&ZDg_)xjcG-juc*gBxx54zw3vKR5{qHx$sh_&tD=0L)!li+cE8zfmS%`4XAE2Clf%-ND26Or6l^b)hx^X%PTo0|n zb6LuOV|&h7706N34irSnbPpID)wWK)j8i(t`T8-WZt0H?bzbR%mGGtz}WrT1=)JvD;8G$v1-hQ6Q$G<7~rNzEnfjL*fYi| ztzWLZx%7SDw+7MZs`DP%%Re8a8 z*|qG4zKZYaj=h9JL*pRm-z0S}j)$OzIQ!>4jHLT>*uQ%CE~&3rpVZSb$sIk8v@iu@ zl({bl0M{h-!yOG^ImrOGfrk~6+&A6Yo>D55YyhV@$Xp*~u0+?6i@@;ZrY)^Gig3g- z8PVVo^LyXDFvxkwi{t*}@O0if8EGxwAWthSz3)A~P&yC7KS;D&7BFXa#oej+_2(wf z8TeJnNP^~LU{T(e{>82KZm-|AtZZ5eemQ~~WdRF$D0=WA_!=H&R@NPVLQq0xGLuK5 z4us)*r;Kz?VKH=rRKKog_2CTquer~Ul>-K8>Knm)fj^5kw+ zNdZL5GFnA0UF!rzY`uATS>JTC?y|nqf&Fe`bw1#K-d8LYax<`6#G%2EROy+*M9L3R z&+e|6CxYrDRwslQ?qTZgOP(3W-L(^eoqGH5D^8T<ZXq) zz9-7sNgV$Di-c&%qUoepu(&!7A6-rbM5zn?zL~$_b3HO?-RI8H@<<4>&#|;0e-4H< z995@N5Vj(E$IGb3R<11+2g7fWNrsZebU0$xN{MDJQorWrd!NFJoE}@sJd+MNKbPZ8 z4wBQxn@B3anlTES$@5^kNte-1yX#5!i?t@ltVf4$rhED*7GBzDi=&+Wj}K(X8`&;U z0^HkNLq{h9TavgneN%{HF*F}rozONDBAv&ex_XUd)dv5E0Q8oQTdff1oXWlj2?)eM z^ie`zeWwZa7xrnmY+1K7l5s2Fo${`Eav$B3X+<{9kY^{)MdfMs>VIok4AC96lAnz- zBC0}~IWF)7og#E6s?o*6Bcf-Z8)%uH<<#2NTn$Sbul#-F zzXte)Unv$K(Y9Jv3jdc4F2%(@8sjl)R=U-i=pW@yW*dHs0JfHTS*fW4^X_VhAm2)A z*VE`_DJfVsu44cECp!4y(JI+3+1E{#LllCScKwr zrHtF7j7;%dLc-sBw`DVJOI_QdFr~ik4Iro}a?1D~FaVj7S{AkCH@KG=fYBA{d+zj5 zRS(3{@)xU0R?1*;Y9QX2t>iMYbLZC0x@ICG}=$dRApR~8mZrJKwpl76CXBJkbR01iI%ksYF= zeJjiL6PAzyc=X!9x2(EA5O-&zmu{Z7T~PTqM}9*XWInLc<@W7UcS3vHi-(~Y8<{w% z)-hujO@Tn%=*9#|=Hp?CSDoszZ^GJmZW2gGBcDF0Xj;C3ADB&a(8lmAu;0ypRqtQ1 zc>nfoh^V|xQ6p#7W;YdRIK<%TLNZdd>CyQ`alJSLptqGG%7 zmpsu&%}3tx{PV|A$ff0Mmf7}vV9KR;)vb4}mSR47weQE=NZ;H@Or*DTFE9-H;;onT z8>n8mt#uL%ZIU5*9G_NBM{tRBvXImFH=sNBl<%`CEtRJjVit~N-l$#?> z@BjR^ZJcXaCl~?d|8MV}Y#llZ z?}(UzNyOF>{p@tbsoOAn3;q?`qb!hzr#BlW&Ncs&(S8Y-PFy{p2n_5GfUn=xnluG7 z8#NA%Mk~5c=^>G7mIk~xIVI^&?)26{61ZtI5997vnOk5pDWGvIb8kp?Aoo??{5~mX z+^>P8M;$ncKHS6QZQ1hHkDSNn5CxqZZ&{YUD3rc1^l5jG*3KwNXN7O_tY{a^qP8YE zh{WGTr19KEwV6rbvj_zvM4*W@U5@cADV$tjlj4Q4y6e`q(&A7MPT|H}`w$#8v%5|B zFR86NCJK}z+tJ9JI~v~9kInoT5SZG4R^QRne6LEdIVP+QdewIh;!O4+Mqz$F&1IdKMupgcER;jsomvOmNA+AJJeekdZGy(3@DNxVU)Lx$^DX zwg>Hc|9yFBrRD{cHJ06?mUKlet7w&HK|!NZ^9u`Os~yN`SM{aCo*iNPDt)o z3^@^)Vw0cscR?JV9b2zNutE#UQFIM5^5Z8x^!U2429L;z9g!A6Cu5myVBsP>oPQJl+H##aTyv(|%B%LD7YTeeUbiU@(9t5#)%R zF+;p9EA4PcjwD#pAjGJ$m;b5-YG+mlua}Yjfgk}h!m#yX@Kkw%O+G{Mgv&&Ij?V>H z4RJd@Mgez-nSI<@^^=x$GU%Vjd4*9F9gF?sszWZ4o?${Ch9SSEC~4;1a~U;f@JRD7VI zQ1f|`VmGgBN|Mvs{%0m4Dww?z>`#u#N0K>bFwq)YF^iRo;=<<{zH{QCZ^NmKM_ZjSs85Bp+Jg^u0ZPONc15(iP70BD|c66VZlo1G*kIReGN-~XZ5``{SExV z%0SArEsi4>DU|JzmEBR>;ozsKap}sH_|*%ioVE1$@#DiF3uG9i^n5WFaYp+i93p*W z_SEKYfnD|NsMtx_w=KEdC)uIM62VH%qv;Vtwa=Zq5tu(xDc9ZI4L<03A6#GFf>m^w z7$MLHaFbqsmX09KXUUQsWQA;fOo@Ly+RhFA2!Ir;WQHW^?83s`PaGWFISW?d^>y6R-yz7;tTv4uZF>7SRL%4?%9c8-vlL<-L2~dfR^=87#dE zLexeIl{34#O`6$D>cF&rvhY$!n&b^t$*O!AGjYf>6hR@8(C*8IoQRnLpZxH04M$_T zlT+eV>vRZfHD14Q&u0scATGT6S70X?-a$szHtCG5V1|46h-yX#0OKW_ zOg+ErDCX)i0T4m8+hS@&@nj8e^n_}XXQXso%ZYXBl6b=7Gp_72YUi4D!+zPPmYL42 zb@CWu)@Xb?8L->8rxxet<_e6{BCV6JM>dvnB@UI*Ms`r&m@W06SdxgCUtf3ML))$s zV@`p~>occY4TDiUa%9)lEAfhSM&wNAqdl|S%7mWF9-d0risZ&Z<$zXiQV2Sm!48sV z-(Vv!9rAmc*^^M{<)PlVjYJfL+&%p1{P|t25d6F4Dj4nIC~~KVEuquo9QxCLlqCU; zNC=EFYOTUwj?sH`{4OP0J>qz*`PZ`2QcUB~OvEGp(M43w<_4`BcS48%7;m9%T8z5ccnZ$Ir+0KVsd zg>fxeF^pHm)$Y%)h}7CmE%6CoSi)GcA)4Da*0978H%_c)E1073_6ji7iaN%_HZGI6 zmCbi@c09fQJ=jt{JOARdP!-a#2

?K+PK9x(6c(<)0!Nof_hYRtBhBJ-V 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

QDYtAwKoEQ@npAr$DW7tR#H)~|dMI9V3?p#Z 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 z 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

xd8*M)57 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ℑK2f_U;5aPt4K*Bkjk9?~2NV1sF*;$3Jhp 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