From fc218c088b736b4f546c2e2997d40a83a1273076 Mon Sep 17 00:00:00 2001 From: esis8 Date: Sun, 22 Mar 2026 19:39:24 -0300 Subject: [PATCH 1/2] Add SafeQuote Cardano Pythathon submission --- lazer/cardano/safequote-veltrix/.gitignore | 59 + lazer/cardano/safequote-veltrix/README.md | 68 + .../workflows/continuous-integration.yml | 18 + .../safequote-app-aiken/.gitignore | 6 + .../safequote-app-aiken/README.md | 65 + .../safequote-app-aiken/aiken.lock | 27 + .../safequote-app-aiken/aiken.toml | 23 + .../safequote-app-aiken/plutus.json | 181 + .../safequote-app-aiken/test/invoice_test.ak | 5 + .../safequote-app-aiken/validators/invoice.ak | 120 + .../validators/mint_invoice_nft.ak | 17 + .../safequote-app-website/.gitignore | 41 + .../safequote-app-website/README.md | 36 + .../safequote-app-website/eslint.config.mjs | 18 + .../safequote-app-website/next.config.ts | 7 + .../safequote-app-website/package.json | 32 + .../safequote-app-website/pnpm-lock.yaml | 5661 +++++++++++++++++ .../safequote-app-website/pnpm-workspace.yaml | 5 + .../public/apple-touch-icon.png | Bin 0 -> 30121 bytes .../public/favicon-96x96.png | Bin 0 -> 9185 bytes .../safequote-app-website/public/favicon.ico | Bin 0 -> 15086 bytes .../safequote-app-website/public/favicon.svg | 1 + .../public/site.webmanifest | 21 + .../public/web-app-manifest-192x192.png | Bin 0 -> 37613 bytes .../public/web-app-manifest-512x512.png | Bin 0 -> 184615 bytes .../scripts/resolve-invoice-nft-policy-id.mjs | 26 + .../safequote-app-website/scripts/seed.ts | 21 + .../scripts/test-pyth.ts | 43 + .../src/app/api/auth/login/route.ts | 69 + .../src/app/api/auth/wallet/route.ts | 44 + .../src/app/api/invoices/[id]/route.ts | 33 + .../src/app/api/invoices/route.ts | 40 + .../src/app/api/oracle/ada-usd/route.ts | 61 + .../src/app/globals.scss | 27 + .../safequote-app-website/src/app/layout.tsx | 57 + .../src/app/page.module.scss | 3 + .../safequote-app-website/src/app/page.tsx | 5 + .../features/invoices/lib/invoice-store.ts | 7 + .../src/features/invoices/lib/pay-invoice.ts | 54 + .../src/features/ui/safequote-app.tsx | 322 + .../src/features/wallet/lib/wallet-adapter.ts | 26 + .../safequote-app-website/src/proxy.ts | 21 + .../safequote-app-website/src/types/auth.ts | 10 + .../src/types/invoice.ts | 20 + .../safequote-app-website/src/types/oracle.ts | 7 + .../safequote-app-website/tsconfig.json | 34 + 46 files changed, 7341 insertions(+) create mode 100644 lazer/cardano/safequote-veltrix/.gitignore create mode 100644 lazer/cardano/safequote-veltrix/README.md create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-aiken/.github/workflows/continuous-integration.yml create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-aiken/.gitignore create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-aiken/README.md create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.lock create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.toml create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-aiken/plutus.json create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-aiken/test/invoice_test.ak create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/invoice.ak create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/mint_invoice_nft.ak create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/.gitignore create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/README.md create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/eslint.config.mjs create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/next.config.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/package.json create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-lock.yaml create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-workspace.yaml create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/public/apple-touch-icon.png create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon-96x96.png create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon.ico create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon.svg create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/public/site.webmanifest create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/public/web-app-manifest-192x192.png create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/public/web-app-manifest-512x512.png create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/scripts/resolve-invoice-nft-policy-id.mjs create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/scripts/seed.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/scripts/test-pyth.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/login/route.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/wallet/route.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/[id]/route.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/route.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/oracle/ada-usd/route.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/app/globals.scss create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/app/layout.tsx create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.module.scss create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.tsx create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-store.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/features/ui/safequote-app.tsx create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/features/wallet/lib/wallet-adapter.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/proxy.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/types/auth.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/types/invoice.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/types/oracle.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/tsconfig.json diff --git a/lazer/cardano/safequote-veltrix/.gitignore b/lazer/cardano/safequote-veltrix/.gitignore new file mode 100644 index 00000000..91ee4a2d --- /dev/null +++ b/lazer/cardano/safequote-veltrix/.gitignore @@ -0,0 +1,59 @@ +# Node / Next +node_modules/ +.pnpm-store/ +.next/ +out/ +dist/ +build/ +coverage/ + +# Logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +*.log + +# Env files +.env +.env.* +!.env.example + +# OS / editor +.DS_Store +Thumbs.db +.vscode/ +.idea/ + +# TypeScript +*.tsbuildinfo + +# Python +__pycache__/ +*.pyc + +# Aiken / generated artifacts +artifacts/ +build/packages/ +tmp/ + +# Cardano / local secrets +*.skey +*.vkey +*.addr +*.seed +wallet.json +*.mnemonic + +# Test outputs +playwright-report/ +test-results/ + +# Keep source, ignore local dependency installs inside subprojects +safequote-app-website/node_modules/ +safequote-app-website/.next/ +safequote-app-website/.env.local +safequote-app-website/.env.development.local +safequote-app-website/.env.production.local + +safequote-app-aiken/build/packages/ diff --git a/lazer/cardano/safequote-veltrix/README.md b/lazer/cardano/safequote-veltrix/README.md new file mode 100644 index 00000000..0c00dc1b --- /dev/null +++ b/lazer/cardano/safequote-veltrix/README.md @@ -0,0 +1,68 @@ +# SafeQuote + +**Team:** Veltrix +**Member:** Elio Esis +**Contact:** eesis.dev@gmail.com + +## Overview + +SafeQuote is a Cardano preprod web app that lets a seller issue an invoice in USD and settle it in ADA while preserving the USD value with on-chain Pyth validation. + +The flow is wallet-only. A browser wallet connects to the app, creates an invoice, and mints an invoice NFT that represents that invoice. Another wallet can pay the invoice by providing the correct PIN and sending enough ADA to satisfy the USD amount according to the current ADA/USD price verified on-chain. + +## How the app works + +1. A seller connects a CIP-30 browser wallet on Cardano preprod. +2. The seller creates an invoice denominated in USD. +3. The app generates a PIN and stores its hash in the invoice datum. +4. An invoice NFT is minted to represent the invoice. +5. A buyer connects a wallet and opens the invoice. +6. The buyer enters the PIN and attempts to pay in ADA. +7. The transaction uses the SafeQuote Aiken validator to verify: + - the Pyth update is valid + - the feed used is ADA/USD + - the ADA sent is at least the minimum required for the USD amount + - the PIN matches the stored hash + - the invoice NFT is transferred to the buyer + - the ADA settlement goes to the seller +8. If all checks pass, the transaction succeeds on-chain. + +## How Pyth is used + +SafeQuote uses Pyth as the source of truth for the ADA/USD price. + +### Off-chain + +The web app calls the Pyth Lazer Cardano flow to fetch the latest ADA/USD update and prepares the binary payload required for transaction building. + +- Pyth product: Pyth Lazer / Cardano consumer flow +- Feed used: ADA/USD +- Cardano feed id: `16` +- Preprod policy id: `d799d287105dea9377cdf9ea8502a83d2b9eb2d2050a8aea800a21e6` + +### On-chain + +The Aiken validator consumes the Pyth update on-chain and verifies the ADA/USD quote before accepting payment. This ensures the invoice value is enforced in USD while settlement still happens in ADA. + +## Stack + +- Cardano preprod +- Aiken +- Next.js +- TypeScript +- MeshJS +- Pyth Lazer Cardano integration + +## Current status + +This project is being built as a hackathon MVP focused on: +- wallet-only authentication +- USD invoices settled in ADA +- invoice NFT representation +- PIN-protected payment flow +- on-chain Pyth verification with Aiken + +## Notes + +- This project targets Cardano preprod. +- Pyth API keys are kept in private environment variables and are not committed. diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/.github/workflows/continuous-integration.yml b/lazer/cardano/safequote-veltrix/safequote-app-aiken/.github/workflows/continuous-integration.yml new file mode 100644 index 00000000..b80488dc --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/.github/workflows/continuous-integration.yml @@ -0,0 +1,18 @@ +name: Continuous Integration + +on: + push: + branches: ["main"] + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: aiken-lang/setup-aiken@v1 + with: + version: v1.1.19 + - run: aiken fmt --check + - run: aiken check -D + - run: aiken build diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/.gitignore b/lazer/cardano/safequote-veltrix/safequote-app-aiken/.gitignore new file mode 100644 index 00000000..ff7811b1 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/.gitignore @@ -0,0 +1,6 @@ +# Aiken compilation artifacts +artifacts/ +# Aiken's project working directory +build/ +# Aiken's default documentation export +docs/ diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/README.md b/lazer/cardano/safequote-veltrix/safequote-app-aiken/README.md new file mode 100644 index 00000000..c72213e2 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/README.md @@ -0,0 +1,65 @@ +# safequote_app_aiken + +Write validators in the `validators` folder, and supporting functions in the `lib` folder using `.ak` as a file extension. + +```aiken +validator my_first_validator { + spend(_datum: Option, _redeemer: Data, _output_reference: Data, _context: Data) { + True + } +} +``` + +## Building + +```sh +aiken build +``` + +## Configuring + +**aiken.toml** +```toml +[config.default] +network_id = 41 +``` + +Or, alternatively, write conditional environment modules under `env`. + +## Testing + +You can write tests in any module using the `test` keyword. For example: + +```aiken +use config + +test foo() { + config.network_id + 1 == 42 +} +``` + +To run all tests, simply do: + +```sh +aiken check +``` + +To run only tests matching the string `foo`, do: + +```sh +aiken check -m foo +``` + +## Documentation + +If you're writing a library, you might want to generate an HTML documentation for it. + +Use: + +```sh +aiken docs +``` + +## Resources + +Find more on the [Aiken's user manual](https://aiken-lang.org). diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.lock b/lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.lock new file mode 100644 index 00000000..f4adff39 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.lock @@ -0,0 +1,27 @@ +# This file was generated by Aiken +# You typically do not need to edit this file + +[[requirements]] +name = "aiken-lang/stdlib" +version = "v3.0.0" +source = "github" + +[[requirements]] +name = "pyth-network/pyth-lazer-cardano" +version = "main" +source = "github" + +[[packages]] +name = "aiken-lang/stdlib" +version = "v3.0.0" +requirements = [] +source = "github" + +[[packages]] +name = "pyth-network/pyth-lazer-cardano" +version = "main" +requirements = [] +source = "github" + +[etags] +"pyth-network/pyth-lazer-cardano@main" = [{ secs_since_epoch = 1774214111, nanos_since_epoch = 474416700 }, "a46dacd97a22eb07feeaf966d48c3116c8249ddc836705656e3135cea285bcfc"] diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.toml b/lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.toml new file mode 100644 index 00000000..64d9b033 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.toml @@ -0,0 +1,23 @@ +name = "esis8/safequote_app_aiken" +version = "0.0.0" +compiler = "v1.1.19" +plutus = "v3" +license = "Apache-2.0" +description = "SafeQuote Aiken contracts" + +[repository] +user = "esis8" +project = "safequote_app_aiken" +platform = "github" + +[[dependencies]] +name = "aiken-lang/stdlib" +version = "v3.0.0" +source = "github" + +[[dependencies]] +name = "pyth-network/pyth-lazer-cardano" +version = "main" +source = "github" + +[config] diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/plutus.json b/lazer/cardano/safequote-veltrix/safequote-app-aiken/plutus.json new file mode 100644 index 00000000..d0cd7da2 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/plutus.json @@ -0,0 +1,181 @@ +{ + "preamble": { + "title": "esis8/safequote_app_aiken", + "description": "SafeQuote Aiken contracts", + "version": "0.0.0", + "plutusVersion": "v3", + "compiler": { + "name": "Aiken", + "version": "v1.1.19+e525483" + }, + "license": "Apache-2.0" + }, + "validators": [ + { + "title": "invoice.invoice.spend", + "datum": { + "title": "datum", + "schema": { + "$ref": "#/definitions/invoice~1InvoiceDatum" + } + }, + "redeemer": { + "title": "redeemer", + "schema": { + "$ref": "#/definitions/invoice~1InvoiceRedeemer" + } + }, + "compiledCode": "59181701010029800aba4aba2aba1aba0aab9faab9eaab9dab9a4888888896600264653001300800198041804800cdc3a400530080024888966002600460106ea800e2653001300d00198069807000cdc3a40009112cc004c004c030dd500444c8c8cc8966002602a007159800980298081baa0068cc004c050c044dd50034c044dd500648c054c058c0580064602a602c00323015301630163016301630160019180a980b180b180b000cdc024003374a900024444444464b30013371e6e50dd7180e980f0041bae3004301a375401319800918019980e98019980e9ba90014bd701980ea6103d87a80004bd70488c8cc00400400c896600200314a115980098019810800c528c4cc008008c08800501c203e91119199119801001000912cc00400600713233225980099b910070028acc004cdc78038014400600c810a26600a00a604e0088108dd718100009bad30210013023001408464646600200200c44b3001001801c4c8cc896600266e4402400a2b30013371e0120051001803204489980280298140022044375c60420026eacc088004c0900050220a5eb7bdb180520004889660026466446600a6eb0c034c080dd500c12cc004cdd7981218109baa001003899b8900298009bab300d30213754003488100a44100401514a080f8c010004cc88cdc1980499b803370466e08dd6980618101baa00f4820225ea60020054805266e052000375a6046604800e80100040048896600266e2000520008a4001159800980a800c520028992cc004c058cdc300124009198008024c00400e66e0c009200440111300198008024c00400e66e0cc02c009200440108100dc1001203e407c66e08dd69810802a4190026eb8c080c074dd500644ca60026008003375c6012603c6ea80366eb8c084c088c088c088c088c078dd5006a4446600c6eb0c038c084dd500c92cc004cdd7981298111baa0010048980dcc004dd5980718111baa001801400d006452820401bae302000b8a50406c8a5040613001370e90024dc4a400922325980099b8f48900375c603e60400031301f0018b20343002001911919800800801911980180098010014dd71803180c9baa008488888c8c8c966002604a00313259800980b18109baa001899192cc004c060c08cdd5000c4c966002603260486ea8006264b3001301a30253754003133028302930263754004660506052604c6ea80052f5c11640906020604a6ea800e2c8118c09cc090dd5000c59022180798119baa00130253022375400316408064660020026eb0c03cc088dd51812801112cc004006298103d87a80008992cc004cdc39bad302730243754002901044c030cc0980052f5c113300300330280024088604c00281222c8110c966002602a60406ea8006264b300130163021375400313233007001225980080144c8cc004004010896600200314bd7044cc0a660026e2520009b8c480126e0120039b89480226e3120009b8c480226e01200748888888cc88cc0548c8d6600266e3cdd7181a800a4410475d3c793008cc004888c8cc00cdd6981c8009bae3039303a00130030019b89480426e3120109b804803e600e90082444446600a464660766ea0cde5250375c6078002660766078607a00297ae05980098029b8d00189981d1ba930020013303a37526600860066e340040052f5c11640d84646600e4660786ea0cdc7000a4000660786ea4cc008c08cdc6800800a5eb808cc0208cc0f4dd419b8e00148000cc0f4dd49980198121b8d0010014bd70111919198201813198201ba800733040375000a66080608200297ae033040304130420014bd7018008012cc004c05400a2653001001a5eb820068008889660026066003123233043374e002660866ea40092f5c065300100180252f5c080088896600200510018cc00400e608e005330453046002001400c8222246530010059982198220008024c0a800e6eb8c110c1140050054c004c8cc10cdd419bca4a06eb8c110004cc10cc110c1140052f5c0b30013016371a00313304237526022002660846ea4cc050c04cdc6800800a5eb822c81f24466088004660886ea40052f5c1370e90034dc3a4010911119191919803194c0040066eb0c12c00a60606609460960106609498103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80004bd70200222259800801440063300100398270014c8c966002608000313230353304f30500013304f30353304f3050304d375400697ae030513051001304c37540071598009822800c4c8c8c0d8cc140c144008cc140c144004cc140c0d8cc140c144c138dd500225eb80c148c148004c144004c130dd5001c566002606600313232323037330513052003330513052002330513052001330513037330513052304f375400a97ae03053305300130520013051001304c37540071598009805000c4c8c8c8c8c0e0cc148c14c010cc148c14c00ccc148c14c008cc148c14c004cc148c0e0cc148c14cc140dd500325eb80c150c150004c14c004c148004c144004c130dd5001c56600260120031323232323230393305330540053305330540043305330540033305330540023305330540013305330393305330543051375400e97ae0305530550013054001305300130520013051001304c375400715980099b874802800626464646464646074660a860aa00c660a860aa00a660a860aa008660a860aa006660a860aa004660a860aa002660a86074660a860aa60a46ea80212f5c060ac60ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e9006000c4c8c8c8c8c8c8c8c0eccc154c15801ccc154c158018cc154c158014cc154c158010cc154c15800ccc154c158008cc154c158004cc154c0eccc154c158c14cdd5004a5eb80c15cc15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d200e00189919191919191919181e1982b182b8041982b182b8039982b182b8031982b182b8029982b182b8021982b182b8019982b182b8011982b182b8009982b181e1982b182b982a1baa00a4bd70182c182c000982b800982b000982a800982a00098298009829000982880098261baa0038acc004cdc3a40200031323232323232323232303d33057305800933057305800833057305800733057305800633057305800533057305800433057305800333057305800233057305800133057303d3305730583055375401697ae03059305900130580013057001305600130550013054001305300130520013051001304c375400715980099b8748048006264646464646464646464607c660b060b2014660b060b2012660b060b2010660b060b200e660b060b200c660b060b200a660b060b2008660b060b2006660b060b2004660b060b2002660b0607c660b060b260ac6ea80312f5c060b460b400260b200260b000260ae00260ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e900a000c4c8c8c8c8c8c8c8c8c8c8c8c0fccc164c16802ccc164c168028cc164c168024cc164c168020cc164c16801ccc164c168018cc164c168014cc164c168010cc164c16800ccc164c168008cc164c168004cc164c0fccc164c168c15cdd5006a5eb80c16cc16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d2016001899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d18201982d182d982c1baa00e4bd70182e182e000982d800982d000982c800982c000982b800982b000982a800982a00098298009829000982880098261baa003899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d182d982e0009982d18201982d182d982c1baa00e4bd7025eb80c16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001a0944128825104a20944128825104a20944128825104a18251baa001304d002400c8258dd718251825800991acc004c08000a2653001001a5eb82006800888966002607c00312323304e374e0026609c6ea40092f5c065300100180252f5c080088896600200510018cc00400e60a4005330503051002001400c827a246530010059982718278008024c0d400e6eb8c13cc1400050051802800a0908b208a375c60946096006530012232598009800a40211598009800a4001148002266e3922010801020408102040800000241211598009800a408113370490400219801801980a80144cdc124101010100406600600666e00009203f41208240dc4000c888c8cc134c00cdd698270009982698271827800a5eb80c00c006660926ea0cdc7000a4000660926ea4cc03cc0c0dc6800800a5eb8122232329800919802919198289ba833794940dd718290009982898291829800a5eb816600260366e340062660a06ea4c060004cc140dd49980d180c9b8d0010014bd7045904c1191801acc004c10c006298103d87a80008981b998289ba80014bd70209a30030019bad304f003911191acc006600260886eb4c14c00694294504e44cc02000c8c014c0e4cc14cdd4000a5eb822601e600898103d87a800041386eb8c14cc150004cc144dd419b8e00148000cc144dd49980b981c1b8d0010014bd7024446b30013043002898019181c19829000a5eb822b3001304800289801919ba548008cc1480052f5c1159800981b00144c00c8cdd2a4008660a400297ae08acc004c03400a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e95200633052375000297ae08acc004c03000a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e952008330523750b3001337100029040400244006266e04004c0192020413897ae08acc004cdc3a40140051300323374a900519829000a5eb822b30013370e900600144cc0048cdd2a4018660a400297ae0232330533750600c6eb4c150004cc14cc150c1540052f5c064660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874803800a266002466e95200e330520014bd70119198299ba833794940dd7182a00099829982a182a800a5eb8166002603a6e340062660a46ea4c068004cc148dd49980e180d9b8d0010014bd7045904e456600266e1d2010002899800919ba548040cc1480052f5c0464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874804800a246464660a866e9520123305430550014bd701982a182a982b000a5eb80c004008cc0208c8cc150dd419bca4a06eb8c154004cc150c154c1580052f5c0b30013037371a00313305337526046002660a66ea4cc0a4c0a0dc6800800a5eb822c8278966002608a00314c103d87980008acc004c128006298103d87a80008acc004c0e0006298103d87b80008acc004c03c006298103d87c80008acc004c038006298103d87d80008b209e413c827904f209e8acc004cdc3a40280051300323374a900a19829000a5eb822b30013370e900b00144c00c8cdd2a402c660a400297ae08acc004cdc3a403000513300123374a900c19829000a5eb808c8cc14cdd419bca4a06eb8c150004cc14cc150c1540052f5c0b3001301d371a00313305237526034002660a46ea4cc070c06cdc6800800a5eb822c82722c826904d209a4134826904d209a4134826904d209a41348268dd718291829803096600266e2000520808080808080808080028800c4cdc0800980124100028250c00c00c6eb4c120004c8cc11cdd419b8e00148000cc11cdd49980698171b8d0010014bd701bae30473048004207a8b20743718900122c8180dd7181a981b000acc004c01cdc6800c4cc0ccdd49801000998199ba9330053004371a00200297ae08b205e375c603a60606ea8cc0548c8d6600266e3cdd7181a800a44104b9011a82008919191919191919911981e98119981e981f0039981e9ba90013303d303e0024bd701981e981f181f80125eb80d660026024003125980099b89002371a00313303c37526601e004002660786ea66002005337026e3400400a002b8c25eb822c81c22c81b8dd7181e181e8011bae303c004375a607600264660746ea0cde5250375c6076002660746076607800297ae059800980e9b8d00189981c9ba930090013303937526601e601c6e340040052f5c11640d46eb8c0e4c0e8004d6600294624b30013371290201b8d00189981c1ba93300b48100004cc0e0dd4cc005204099b80371a002901fc0057184bd704590344590331bae30383039001300100259800a51892cc004cdc4a4100026e3400626606c6ea4cc0252080010013303637533001482000666e00dc6800a40ff0015c612f5c11640c91640c51640c06eb8c0d4c0d800566002600e6e340062660666ea4c008004cc0ccdd49980298021b8d0010014bd7045902f1bae303300a300348010c00d2008198010011815800a050899180118150019bae302800240986eb0c094c088dd5000c5902019199119801001000912cc004006298103d87a80008992cc004cdd78021812000c4c034cc09cc0940052f5c11330030033029002408c604e0028128dd5981298131813181318131813181318131813181318111baa01a3374a90021981199ba548008cc08cc02cc084dd5181218109baa0014bd7025eb822c80f8c8cc004004dd6180698109baa0192259800800c530103d87a80008992cc006600266ebc00530103d87a8000a50a514085100189980180198138012042325980099912cc00400a294226530013259800980d98131baa00189bad3027302a37566054604e6ea800629000204a30290019baf3029302a0019bab003488966002003159800980100344cc01400d20008a50409d1325980099baf30290014c010140008acc004cc018010dd6981518169bab302a001898019ba6302e0028a5040a11598009980300224001130030078a5040a08140c0b000502a0ca600200337566024604c6ea8c048c098dd5002488cc0a8008cc0a8dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044ca60026eb8c0a00066eacc0a4006605a0069112cc004cdc8a441000038acc004cdc7a44100003899802980a198171ba60024bd70000c4cc015300103d87a800000640a919800803c006446600e0046606066ec0dd48029ba6004001401c81506056004814a29422942294102a1ba633025337606ea4018dd31981299bb04c10b4a50797468205374617465004c010101004bd6f7b63025eb7bdb1808928c566002603860446ea8c098c08cdd5181318119baa300f3023375400313259800980598119baa0018992cc004c064c090dd5000c4c8c8c8c8cc8966002605e00713259800981018159baa0018991919194c004dd69819800cdd718198024dd69819801cdd7181980124444b3001303800589980c1bab303700e225980080144cc0680308966002005130203303a0144bd7044c8c8cc06cc0e40084c00cc0f8010dd7181c800981d8012072899191980c981c00109801981e0021bae3036001303900240dd1640d4303300130320013031001302c37540031640a8605c00d1640b06eb8c0b0004dd5981600118160009815800981500098129baa0018b2046302730243754003164088602060466ea8c03cc08cdd5000c590214530103d87a80004084604a00281188966002602a60406ea800a2646464b3001302800289980318138018998030008024590251813000981300098109baa0028b203e2259800980a180f9baa00289919192cc004c09c00a26464b300130190018acc004c094dd5001401a2c81322b3001301e001899192cc004c0ac00a0111640a06eb4c0a4004c094dd50014566002601800315980098129baa0028034590264590232046408c60466ea8004c09800e2c8120c966002604600315980098049811000c5a260386044002810a2c8120dd51812800981280098101baa0028b203c22c807a2c8090dd718090009bae30120023012001300d375401116402c3009375400716401c300800130033754013149a26cac80081", + "hash": "e17f2b34d9308785e63a6e1862209f764a0c772f5cd8ad7580038d69" + }, + { + "title": "invoice.invoice.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "59181701010029800aba4aba2aba1aba0aab9faab9eaab9dab9a4888888896600264653001300800198041804800cdc3a400530080024888966002600460106ea800e2653001300d00198069807000cdc3a40009112cc004c004c030dd500444c8c8cc8966002602a007159800980298081baa0068cc004c050c044dd50034c044dd500648c054c058c0580064602a602c00323015301630163016301630160019180a980b180b180b000cdc024003374a900024444444464b30013371e6e50dd7180e980f0041bae3004301a375401319800918019980e98019980e9ba90014bd701980ea6103d87a80004bd70488c8cc00400400c896600200314a115980098019810800c528c4cc008008c08800501c203e91119199119801001000912cc00400600713233225980099b910070028acc004cdc78038014400600c810a26600a00a604e0088108dd718100009bad30210013023001408464646600200200c44b3001001801c4c8cc896600266e4402400a2b30013371e0120051001803204489980280298140022044375c60420026eacc088004c0900050220a5eb7bdb180520004889660026466446600a6eb0c034c080dd500c12cc004cdd7981218109baa001003899b8900298009bab300d30213754003488100a44100401514a080f8c010004cc88cdc1980499b803370466e08dd6980618101baa00f4820225ea60020054805266e052000375a6046604800e80100040048896600266e2000520008a4001159800980a800c520028992cc004c058cdc300124009198008024c00400e66e0c009200440111300198008024c00400e66e0cc02c009200440108100dc1001203e407c66e08dd69810802a4190026eb8c080c074dd500644ca60026008003375c6012603c6ea80366eb8c084c088c088c088c088c078dd5006a4446600c6eb0c038c084dd500c92cc004cdd7981298111baa0010048980dcc004dd5980718111baa001801400d006452820401bae302000b8a50406c8a5040613001370e90024dc4a400922325980099b8f48900375c603e60400031301f0018b20343002001911919800800801911980180098010014dd71803180c9baa008488888c8c8c966002604a00313259800980b18109baa001899192cc004c060c08cdd5000c4c966002603260486ea8006264b3001301a30253754003133028302930263754004660506052604c6ea80052f5c11640906020604a6ea800e2c8118c09cc090dd5000c59022180798119baa00130253022375400316408064660020026eb0c03cc088dd51812801112cc004006298103d87a80008992cc004cdc39bad302730243754002901044c030cc0980052f5c113300300330280024088604c00281222c8110c966002602a60406ea8006264b300130163021375400313233007001225980080144c8cc004004010896600200314bd7044cc0a660026e2520009b8c480126e0120039b89480226e3120009b8c480226e01200748888888cc88cc0548c8d6600266e3cdd7181a800a4410475d3c793008cc004888c8cc00cdd6981c8009bae3039303a00130030019b89480426e3120109b804803e600e90082444446600a464660766ea0cde5250375c6078002660766078607a00297ae05980098029b8d00189981d1ba930020013303a37526600860066e340040052f5c11640d84646600e4660786ea0cdc7000a4000660786ea4cc008c08cdc6800800a5eb808cc0208cc0f4dd419b8e00148000cc0f4dd49980198121b8d0010014bd70111919198201813198201ba800733040375000a66080608200297ae033040304130420014bd7018008012cc004c05400a2653001001a5eb820068008889660026066003123233043374e002660866ea40092f5c065300100180252f5c080088896600200510018cc00400e608e005330453046002001400c8222246530010059982198220008024c0a800e6eb8c110c1140050054c004c8cc10cdd419bca4a06eb8c110004cc10cc110c1140052f5c0b30013016371a00313304237526022002660846ea4cc050c04cdc6800800a5eb822c81f24466088004660886ea40052f5c1370e90034dc3a4010911119191919803194c0040066eb0c12c00a60606609460960106609498103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80004bd70200222259800801440063300100398270014c8c966002608000313230353304f30500013304f30353304f3050304d375400697ae030513051001304c37540071598009822800c4c8c8c0d8cc140c144008cc140c144004cc140c0d8cc140c144c138dd500225eb80c148c148004c144004c130dd5001c566002606600313232323037330513052003330513052002330513052001330513037330513052304f375400a97ae03053305300130520013051001304c37540071598009805000c4c8c8c8c8c0e0cc148c14c010cc148c14c00ccc148c14c008cc148c14c004cc148c0e0cc148c14cc140dd500325eb80c150c150004c14c004c148004c144004c130dd5001c56600260120031323232323230393305330540053305330540043305330540033305330540023305330540013305330393305330543051375400e97ae0305530550013054001305300130520013051001304c375400715980099b874802800626464646464646074660a860aa00c660a860aa00a660a860aa008660a860aa006660a860aa004660a860aa002660a86074660a860aa60a46ea80212f5c060ac60ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e9006000c4c8c8c8c8c8c8c8c0eccc154c15801ccc154c158018cc154c158014cc154c158010cc154c15800ccc154c158008cc154c158004cc154c0eccc154c158c14cdd5004a5eb80c15cc15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d200e00189919191919191919181e1982b182b8041982b182b8039982b182b8031982b182b8029982b182b8021982b182b8019982b182b8011982b182b8009982b181e1982b182b982a1baa00a4bd70182c182c000982b800982b000982a800982a00098298009829000982880098261baa0038acc004cdc3a40200031323232323232323232303d33057305800933057305800833057305800733057305800633057305800533057305800433057305800333057305800233057305800133057303d3305730583055375401697ae03059305900130580013057001305600130550013054001305300130520013051001304c375400715980099b8748048006264646464646464646464607c660b060b2014660b060b2012660b060b2010660b060b200e660b060b200c660b060b200a660b060b2008660b060b2006660b060b2004660b060b2002660b0607c660b060b260ac6ea80312f5c060b460b400260b200260b000260ae00260ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e900a000c4c8c8c8c8c8c8c8c8c8c8c8c0fccc164c16802ccc164c168028cc164c168024cc164c168020cc164c16801ccc164c168018cc164c168014cc164c168010cc164c16800ccc164c168008cc164c168004cc164c0fccc164c168c15cdd5006a5eb80c16cc16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d2016001899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d18201982d182d982c1baa00e4bd70182e182e000982d800982d000982c800982c000982b800982b000982a800982a00098298009829000982880098261baa003899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d182d982e0009982d18201982d182d982c1baa00e4bd7025eb80c16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001a0944128825104a20944128825104a20944128825104a18251baa001304d002400c8258dd718251825800991acc004c08000a2653001001a5eb82006800888966002607c00312323304e374e0026609c6ea40092f5c065300100180252f5c080088896600200510018cc00400e60a4005330503051002001400c827a246530010059982718278008024c0d400e6eb8c13cc1400050051802800a0908b208a375c60946096006530012232598009800a40211598009800a4001148002266e3922010801020408102040800000241211598009800a408113370490400219801801980a80144cdc124101010100406600600666e00009203f41208240dc4000c888c8cc134c00cdd698270009982698271827800a5eb80c00c006660926ea0cdc7000a4000660926ea4cc03cc0c0dc6800800a5eb8122232329800919802919198289ba833794940dd718290009982898291829800a5eb816600260366e340062660a06ea4c060004cc140dd49980d180c9b8d0010014bd7045904c1191801acc004c10c006298103d87a80008981b998289ba80014bd70209a30030019bad304f003911191acc006600260886eb4c14c00694294504e44cc02000c8c014c0e4cc14cdd4000a5eb822601e600898103d87a800041386eb8c14cc150004cc144dd419b8e00148000cc144dd49980b981c1b8d0010014bd7024446b30013043002898019181c19829000a5eb822b3001304800289801919ba548008cc1480052f5c1159800981b00144c00c8cdd2a4008660a400297ae08acc004c03400a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e95200633052375000297ae08acc004c03000a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e952008330523750b3001337100029040400244006266e04004c0192020413897ae08acc004cdc3a40140051300323374a900519829000a5eb822b30013370e900600144cc0048cdd2a4018660a400297ae0232330533750600c6eb4c150004cc14cc150c1540052f5c064660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874803800a266002466e95200e330520014bd70119198299ba833794940dd7182a00099829982a182a800a5eb8166002603a6e340062660a46ea4c068004cc148dd49980e180d9b8d0010014bd7045904e456600266e1d2010002899800919ba548040cc1480052f5c0464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874804800a246464660a866e9520123305430550014bd701982a182a982b000a5eb80c004008cc0208c8cc150dd419bca4a06eb8c154004cc150c154c1580052f5c0b30013037371a00313305337526046002660a66ea4cc0a4c0a0dc6800800a5eb822c8278966002608a00314c103d87980008acc004c128006298103d87a80008acc004c0e0006298103d87b80008acc004c03c006298103d87c80008acc004c038006298103d87d80008b209e413c827904f209e8acc004cdc3a40280051300323374a900a19829000a5eb822b30013370e900b00144c00c8cdd2a402c660a400297ae08acc004cdc3a403000513300123374a900c19829000a5eb808c8cc14cdd419bca4a06eb8c150004cc14cc150c1540052f5c0b3001301d371a00313305237526034002660a46ea4cc070c06cdc6800800a5eb822c82722c826904d209a4134826904d209a4134826904d209a41348268dd718291829803096600266e2000520808080808080808080028800c4cdc0800980124100028250c00c00c6eb4c120004c8cc11cdd419b8e00148000cc11cdd49980698171b8d0010014bd701bae30473048004207a8b20743718900122c8180dd7181a981b000acc004c01cdc6800c4cc0ccdd49801000998199ba9330053004371a00200297ae08b205e375c603a60606ea8cc0548c8d6600266e3cdd7181a800a44104b9011a82008919191919191919911981e98119981e981f0039981e9ba90013303d303e0024bd701981e981f181f80125eb80d660026024003125980099b89002371a00313303c37526601e004002660786ea66002005337026e3400400a002b8c25eb822c81c22c81b8dd7181e181e8011bae303c004375a607600264660746ea0cde5250375c6076002660746076607800297ae059800980e9b8d00189981c9ba930090013303937526601e601c6e340040052f5c11640d46eb8c0e4c0e8004d6600294624b30013371290201b8d00189981c1ba93300b48100004cc0e0dd4cc005204099b80371a002901fc0057184bd704590344590331bae30383039001300100259800a51892cc004cdc4a4100026e3400626606c6ea4cc0252080010013303637533001482000666e00dc6800a40ff0015c612f5c11640c91640c51640c06eb8c0d4c0d800566002600e6e340062660666ea4c008004cc0ccdd49980298021b8d0010014bd7045902f1bae303300a300348010c00d2008198010011815800a050899180118150019bae302800240986eb0c094c088dd5000c5902019199119801001000912cc004006298103d87a80008992cc004cdd78021812000c4c034cc09cc0940052f5c11330030033029002408c604e0028128dd5981298131813181318131813181318131813181318111baa01a3374a90021981199ba548008cc08cc02cc084dd5181218109baa0014bd7025eb822c80f8c8cc004004dd6180698109baa0192259800800c530103d87a80008992cc006600266ebc00530103d87a8000a50a514085100189980180198138012042325980099912cc00400a294226530013259800980d98131baa00189bad3027302a37566054604e6ea800629000204a30290019baf3029302a0019bab003488966002003159800980100344cc01400d20008a50409d1325980099baf30290014c010140008acc004cc018010dd6981518169bab302a001898019ba6302e0028a5040a11598009980300224001130030078a5040a08140c0b000502a0ca600200337566024604c6ea8c048c098dd5002488cc0a8008cc0a8dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044ca60026eb8c0a00066eacc0a4006605a0069112cc004cdc8a441000038acc004cdc7a44100003899802980a198171ba60024bd70000c4cc015300103d87a800000640a919800803c006446600e0046606066ec0dd48029ba6004001401c81506056004814a29422942294102a1ba633025337606ea4018dd31981299bb04c10b4a50797468205374617465004c010101004bd6f7b63025eb7bdb1808928c566002603860446ea8c098c08cdd5181318119baa300f3023375400313259800980598119baa0018992cc004c064c090dd5000c4c8c8c8c8cc8966002605e00713259800981018159baa0018991919194c004dd69819800cdd718198024dd69819801cdd7181980124444b3001303800589980c1bab303700e225980080144cc0680308966002005130203303a0144bd7044c8c8cc06cc0e40084c00cc0f8010dd7181c800981d8012072899191980c981c00109801981e0021bae3036001303900240dd1640d4303300130320013031001302c37540031640a8605c00d1640b06eb8c0b0004dd5981600118160009815800981500098129baa0018b2046302730243754003164088602060466ea8c03cc08cdd5000c590214530103d87a80004084604a00281188966002602a60406ea800a2646464b3001302800289980318138018998030008024590251813000981300098109baa0028b203e2259800980a180f9baa00289919192cc004c09c00a26464b300130190018acc004c094dd5001401a2c81322b3001301e001899192cc004c0ac00a0111640a06eb4c0a4004c094dd50014566002601800315980098129baa0028034590264590232046408c60466ea8004c09800e2c8120c966002604600315980098049811000c5a260386044002810a2c8120dd51812800981280098101baa0028b203c22c807a2c8090dd718090009bae30120023012001300d375401116402c3009375400716401c300800130033754013149a26cac80081", + "hash": "e17f2b34d9308785e63a6e1862209f764a0c772f5cd8ad7580038d69" + }, + { + "title": "mint_invoice_nft.mint_invoice_nft.mint", + "redeemer": { + "title": "_redeemer", + "schema": { + "$ref": "#/definitions/mint_invoice_nft~1MintInvoiceRedeemer" + } + }, + "compiledCode": "58b601010029800aba2aba1aab9faab9eaab9dab9a48888896600264653001300700198039804000cdc3a400130070024888966002600460106ea800e264b300130033009375400b1323322598009808000c4c966002600e601a6ea8006264646644b300130150038a518b2026375a60240026eb8c048008c048004c038dd5000c5900c1807800c5900e1bae300d001300e001300a375400b1640206eb8c02cc024dd5001c590070c01c004c00cdd5003c52689b2b200201", + "hash": "8f7269679fe9ee9a63d4abbf9fb2b997797a78a186fd799569a1681a" + }, + { + "title": "mint_invoice_nft.mint_invoice_nft.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "58b601010029800aba2aba1aab9faab9eaab9dab9a48888896600264653001300700198039804000cdc3a400130070024888966002600460106ea800e264b300130033009375400b1323322598009808000c4c966002600e601a6ea8006264646644b300130150038a518b2026375a60240026eb8c048008c048004c038dd5000c5900c1807800c5900e1bae300d001300e001300a375400b1640206eb8c02cc024dd5001c590070c01c004c00cdd5003c52689b2b200201", + "hash": "8f7269679fe9ee9a63d4abbf9fb2b997797a78a186fd799569a1681a" + } + ], + "definitions": { + "ByteArray": { + "title": "ByteArray", + "dataType": "bytes" + }, + "Int": { + "dataType": "integer" + }, + "aiken/crypto/VerificationKeyHash": { + "title": "VerificationKeyHash", + "dataType": "bytes" + }, + "cardano/assets/AssetName": { + "title": "AssetName", + "dataType": "bytes" + }, + "cardano/assets/PolicyId": { + "title": "PolicyId", + "dataType": "bytes" + }, + "cardano/transaction/OutputReference": { + "title": "OutputReference", + "description": "An `OutputReference` is a unique reference to an output on-chain. The `output_index`\n corresponds to the position in the output list of the transaction (identified by its id)\n that produced that output", + "anyOf": [ + { + "title": "OutputReference", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "transaction_id", + "$ref": "#/definitions/ByteArray" + }, + { + "title": "output_index", + "$ref": "#/definitions/Int" + } + ] + } + ] + }, + "invoice/InvoiceDatum": { + "title": "InvoiceDatum", + "anyOf": [ + { + "title": "InvoiceDatum", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "seller", + "$ref": "#/definitions/aiken~1crypto~1VerificationKeyHash" + }, + { + "title": "usd_amount_cents", + "$ref": "#/definitions/Int" + }, + { + "title": "pyth_policy_id", + "$ref": "#/definitions/cardano~1assets~1PolicyId" + }, + { + "title": "pin_hash", + "$ref": "#/definitions/ByteArray" + }, + { + "title": "invoice_nft_policy_id", + "$ref": "#/definitions/cardano~1assets~1PolicyId" + }, + { + "title": "invoice_nft_name", + "$ref": "#/definitions/cardano~1assets~1AssetName" + }, + { + "title": "deadline", + "$ref": "#/definitions/Int" + } + ] + } + ] + }, + "invoice/InvoiceRedeemer": { + "title": "InvoiceRedeemer", + "anyOf": [ + { + "title": "Pay", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "buyer", + "$ref": "#/definitions/aiken~1crypto~1VerificationKeyHash" + }, + { + "title": "pin", + "$ref": "#/definitions/ByteArray" + } + ] + } + ] + }, + "mint_invoice_nft/MintInvoiceRedeemer": { + "title": "MintInvoiceRedeemer", + "anyOf": [ + { + "title": "MintInvoice", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "seller", + "$ref": "#/definitions/aiken~1crypto~1VerificationKeyHash" + }, + { + "title": "invoice_ref", + "$ref": "#/definitions/cardano~1transaction~1OutputReference" + } + ] + } + ] + } + } +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/test/invoice_test.ak b/lazer/cardano/safequote-veltrix/safequote-app-aiken/test/invoice_test.ak new file mode 100644 index 00000000..bdfd04d7 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/test/invoice_test.ak @@ -0,0 +1,5 @@ +use validators/invoice + +test minimum_lovelace_required_handles_negative_exponent() { + invoice.minimum_lovelace_required(100, 250, -2) == 400_000 +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/invoice.ak b/lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/invoice.ak new file mode 100644 index 00000000..62000a87 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/invoice.ak @@ -0,0 +1,120 @@ +use aiken/collection/list +use aiken/crypto.{VerificationKeyHash, blake2b_256} +use aiken/math +use cardano/address +use cardano/assets.{AssetName, PolicyId} +use cardano/transaction.{OutputReference, Transaction} +use pyth +use types/u32 + +pub const ada_usd_feed_id = 16 + +pub type InvoiceDatum { + InvoiceDatum { + seller: VerificationKeyHash, + usd_amount_cents: Int, + pyth_policy_id: PolicyId, + pin_hash: ByteArray, + invoice_nft_policy_id: PolicyId, + invoice_nft_name: AssetName, + deadline: Int, + } +} + +pub type InvoiceRedeemer { + Pay { buyer: VerificationKeyHash, pin: ByteArray } +} + +pub fn minimum_lovelace_required( + usd_amount_cents: Int, + ada_usd_price: Int, + exponent: Int, +) -> Int { + let scale = math.pow(10, 0 - exponent) + let numerator = usd_amount_cents * 1_000_000 * scale + let denominator = ada_usd_price * 100 + ( numerator + denominator - 1 ) / denominator +} + +pub fn read_ada_usd_quote( + pyth_policy_id: PolicyId, + tx: Transaction, +) -> (Int, Int) { + expect [update] = pyth.get_updates(pyth_policy_id, tx) + + expect Some(feed) = + list.find( + update.feeds, + fn(feed) { u32.as_int(feed.feed_id) == ada_usd_feed_id }, + ) + + expect Some(Some(price)) = feed.price + expect Some(exponent) = feed.exponent + (price, exponent) +} + +pub fn pays_seller_at_least( + seller: VerificationKeyHash, + minimum_lovelace: Int, + tx: Transaction, +) -> Bool { + let seller_address = address.from_verification_key(seller) + + list.any( + tx.outputs, + fn(output) { + output.address == seller_address && assets.lovelace_of(output.value) >= minimum_lovelace + }, + ) +} + +pub fn sends_invoice_nft_to_buyer( + buyer: VerificationKeyHash, + invoice_nft_policy_id: PolicyId, + invoice_nft_name: AssetName, + tx: Transaction, +) -> Bool { + let buyer_address = address.from_verification_key(buyer) + + list.any( + tx.outputs, + fn(output) { + output.address == buyer_address && assets.has_nft( + output.value, + invoice_nft_policy_id, + invoice_nft_name, + ) + }, + ) +} + +validator invoice { + spend( + datum: Option, + redeemer: InvoiceRedeemer, + _own_ref: OutputReference, + tx: Transaction, + ) { + expect Some(datum) = datum + let Pay { buyer, pin } = redeemer + + let (price, exponent) = read_ada_usd_quote(datum.pyth_policy_id, tx) + let min_lovelace = + minimum_lovelace_required(datum.usd_amount_cents, price, exponent) + + and { + blake2b_256(pin) == datum.pin_hash, + pays_seller_at_least(datum.seller, min_lovelace, tx), + sends_invoice_nft_to_buyer( + buyer, + datum.invoice_nft_policy_id, + datum.invoice_nft_name, + tx, + ), + } + } + + else(_) { + fail + } +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/mint_invoice_nft.ak b/lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/mint_invoice_nft.ak new file mode 100644 index 00000000..5905addf --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/mint_invoice_nft.ak @@ -0,0 +1,17 @@ +use aiken/crypto.{VerificationKeyHash} +use cardano/assets.{PolicyId} +use cardano/transaction.{OutputReference, Transaction} + +pub type MintInvoiceRedeemer { + MintInvoice { seller: VerificationKeyHash, invoice_ref: OutputReference } +} + +validator mint_invoice_nft { + mint(_redeemer: MintInvoiceRedeemer, _policy_id: PolicyId, _tx: Transaction) { + True + } + + else(_) { + fail + } +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/.gitignore b/lazer/cardano/safequote-veltrix/safequote-app-website/.gitignore new file mode 100644 index 00000000..5ef6a520 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/README.md b/lazer/cardano/safequote-veltrix/safequote-app-website/README.md new file mode 100644 index 00000000..e215bc4c --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/eslint.config.mjs b/lazer/cardano/safequote-veltrix/safequote-app-website/eslint.config.mjs new file mode 100644 index 00000000..05e726d1 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/eslint.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + ]), +]); + +export default eslintConfig; diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/next.config.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/next.config.ts new file mode 100644 index 00000000..e9ffa308 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/package.json b/lazer/cardano/safequote-veltrix/safequote-app-website/package.json new file mode 100644 index 00000000..12d5a1f9 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/package.json @@ -0,0 +1,32 @@ +{ + "name": "safequote-app-website", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "eslint" + }, + "dependencies": { + "@hookform/resolvers": "^5.2.2", + "@meshsdk/core": "1.9.0-beta.101", + "@pythnetwork/pyth-lazer-sdk": "^6.2.1", + "dotenv": "^17.3.1", + "next": "16.2.1", + "react": "19.2.4", + "react-dom": "19.2.4", + "react-hook-form": "^7.72.0", + "sass": "^1.98.0", + "zod": "^4.3.6" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.2.1", + "tsx": "^4.21.0", + "typescript": "^5" + } +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-lock.yaml b/lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-lock.yaml new file mode 100644 index 00000000..16f7f2fa --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-lock.yaml @@ -0,0 +1,5661 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@hookform/resolvers': + specifier: ^5.2.2 + version: 5.2.2(react-hook-form@7.72.0(react@19.2.4)) + '@meshsdk/core': + specifier: 1.9.0-beta.101 + version: 1.9.0-beta.101(@bufbuild/protobuf@1.10.1)(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@pythnetwork/pyth-lazer-sdk': + specifier: ^6.2.1 + version: 6.2.1 + dotenv: + specifier: ^17.3.1 + version: 17.3.1 + next: + specifier: 16.2.1 + version: 16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0) + react: + specifier: 19.2.4 + version: 19.2.4 + react-dom: + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) + react-hook-form: + specifier: ^7.72.0 + version: 7.72.0(react@19.2.4) + sass: + specifier: ^1.98.0 + version: 1.98.0 + zod: + specifier: ^4.3.6 + version: 4.3.6 + devDependencies: + '@types/node': + specifier: ^20 + version: 20.19.37 + '@types/react': + specifier: ^19 + version: 19.2.14 + '@types/react-dom': + specifier: ^19 + version: 19.2.3(@types/react@19.2.14) + eslint: + specifier: ^9 + version: 9.39.4 + eslint-config-next: + specifier: 16.2.1 + version: 16.2.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + tsx: + specifier: ^4.21.0 + version: 4.21.0 + typescript: + specifier: ^5 + version: 5.9.3 + +packages: + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + + '@biglup/is-cid@1.0.3': + resolution: {integrity: sha512-R0XPZ/IQhU2TtetSFI9vI+7kJOJYNiCncn5ixEBW+/LNaZCo2HK37Mq3pRNzrM4FryuAkyeqY7Ujmj3I3e3t9g==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@bufbuild/protobuf@1.10.1': + resolution: {integrity: sha512-wJ8ReQbHxsAfXhrf9ixl0aYbZorRuOWpBNzm8pL8ftmSxQx/wnJD5Eg861NwJU/czy2VXFIebCeZnZrI9rktIQ==} + + '@cardano-ogmios/client@6.9.0': + resolution: {integrity: sha512-IsoUVsaMXiYyhWrdVKYOA5PDlX0EZ2gaq4lfk4JelRw6mcWVxemUrMaU2ndvugO9LQ3SCM1nESPgMIU0xe5FWw==} + engines: {node: '>=14'} + + '@cardano-ogmios/schema@6.9.0': + resolution: {integrity: sha512-e7QVLF+dQMIv9p+p5CWQjMfBmkERYRa2wK2AjyehQZCJnecZ0gvTbRqewdX5VW4mVXf6KUfFyphsxWK46Pg6LA==} + engines: {node: '>=14'} + + '@cardano-sdk/core@0.46.12': + resolution: {integrity: sha512-yUA/xBUQMiMqIWiZPvIhM911pL3jNKg4PkZQ8qP9R7yU3NQ5x4RQkZ+zFDlVLxUt+gJiwIW2es0iPd8ObIKCxA==} + engines: {node: '>=16.20.2'} + peerDependencies: + rxjs: ^7.4.0 + peerDependenciesMeta: + rxjs: + optional: true + + '@cardano-sdk/crypto@0.4.5': + resolution: {integrity: sha512-ymliqxdmen5dGVaiMVQ0VnhrwaYUjbPD3sHoMj8NI6MTuxrREp3pLJASREtWhwmv9k+QzDT6CoyuIXnlEQiWZQ==} + engines: {node: '>=16.20.2'} + peerDependencies: + '@dcspark/cardano-multiplatform-lib-asmjs': ^3.1.1 + '@dcspark/cardano-multiplatform-lib-browser': ^3.1.1 + '@dcspark/cardano-multiplatform-lib-nodejs': ^3.1.1 + peerDependenciesMeta: + '@dcspark/cardano-multiplatform-lib-asmjs': + optional: true + '@dcspark/cardano-multiplatform-lib-browser': + optional: true + '@dcspark/cardano-multiplatform-lib-nodejs': + optional: true + + '@cardano-sdk/dapp-connector@0.13.26': + resolution: {integrity: sha512-4GptUVsGmgZhzKs+yp3360dA+HNdMi8IW1r2n1H63PYOJDPj2bjopBeyOGFn8Dmkzt+64rm2KyVyZM2SlcUq9Q==} + engines: {node: '>=16.20.2'} + + '@cardano-sdk/input-selection@0.14.28': + resolution: {integrity: sha512-pbysJUaIbbpesbv/f0XfFPKBb+bLjCmPcMfNJzpePSZBvr8bUcFpnfKtq28KthVdpe2mgL3k9ebTTcBSk7aERw==} + engines: {node: '>=16.20.2'} + + '@cardano-sdk/key-management@0.29.12': + resolution: {integrity: sha512-bctIVPg0DBCECnECIPCBfHwnF3En+AVJzpUdje+Q2a+/kryolw99i5Y7le+rpjq1LRypWUG0sUAGLY8D850epA==} + engines: {node: '>=16.20.2'} + + '@cardano-sdk/util@0.17.1': + resolution: {integrity: sha512-TCYe+wRguW1WgRlbWqhGPhcSBkzVzdIcCVgDDN7wiQk2dew0EWVqjsKeqDZdfwzy/s2kr/ZOgXIGywBn/Bzu/Q==} + engines: {node: '>=16.20.2'} + + '@cardanosolutions/json-bigint@1.1.0': + resolution: {integrity: sha512-Pdgz18cSwLKKgheOqW/dqbzNI+CliNT4AdaKaKY/P++J9qLxIB8MITCurlzbaFWV3W4nmK0CRQwI1yvuArmjFg==} + + '@chainsafe/is-ip@2.1.0': + resolution: {integrity: sha512-KIjt+6IfysQ4GCv66xihEitBjvhU/bixbbbFxdJ1sqCp4uJ0wuZiYBPhksZoy4lfaF0k9cwNzY5upEW/VWdw3w==} + + '@chainsafe/netmask@2.0.0': + resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} + + '@connectrpc/connect-node@1.4.0': + resolution: {integrity: sha512-0ANnrr6SvsjevsWEgdzHy7BaHkluZyS6s4xNoVt7RBHFR5V/kT9lPokoIbYUOU9JHzdRgTaS3x5595mwUsu15g==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@bufbuild/protobuf': ^1.4.2 + '@connectrpc/connect': 1.4.0 + + '@connectrpc/connect-web@1.4.0': + resolution: {integrity: sha512-13aO4psFbbm7rdOFGV0De2Za64DY/acMspgloDlcOKzLPPs0yZkhp1OOzAQeiAIr7BM/VOHIA3p8mF0inxCYTA==} + peerDependencies: + '@bufbuild/protobuf': ^1.4.2 + '@connectrpc/connect': 1.4.0 + + '@connectrpc/connect@1.4.0': + resolution: {integrity: sha512-vZeOkKaAjyV4+RH3+rJZIfDFJAfr+7fyYr6sLDKbYX3uuTVszhFe9/YKf5DNqrDb5cKdKVlYkGn6DTDqMitAnA==} + peerDependencies: + '@bufbuild/protobuf': ^1.4.2 + + '@dnsquery/dns-packet@6.1.1': + resolution: {integrity: sha512-WXTuFvL3G+74SchFAtz3FgIYVOe196ycvGsMgvSH/8Goptb1qpIQtIuM4SOK9G9lhMWYpHxnXyy544ZhluFOew==} + engines: {node: '>=6'} + + '@emnapi/core@1.9.1': + resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==} + + '@emnapi/runtime@1.9.1': + resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==} + + '@emnapi/wasi-threads@1.2.0': + resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} + + '@emurgo/cardano-message-signing-nodejs@1.1.0': + resolution: {integrity: sha512-PQRc8K8wZshEdmQenNUzVtiI8oJNF/1uAnBhidee5C4o1l2mDLOW+ur46HWHIFKQ6x8mSJTllcjMscHgzju0gQ==} + + '@esbuild/aix-ppc64@0.27.4': + resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.4': + resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.4': + resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.4': + resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.4': + resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.4': + resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.4': + resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.4': + resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.4': + resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.4': + resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.4': + resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.4': + resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.4': + resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.4': + resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.4': + resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.4': + resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.4': + resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.4': + resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.4': + resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.4': + resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.4': + resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.4': + resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.4': + resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.4': + resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.4': + resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.4': + resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.4': + resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + + '@foxglove/crc@0.0.3': + resolution: {integrity: sha512-DjIZsnL3CyP/yQ/vUYA9cjrD0a/8YXejI5ZmsaOiT16cLfZcTwaCxIN01/ys4jsy+dZCQ/9DnWFn7AEFbiMDaA==} + + '@harmoniclabs/bigint-utils@1.0.0': + resolution: {integrity: sha512-OhZMHcdtH2hHKMlxWFHf71PmKHdoi9ARpjS9mUu0/cd8VWDDjT7VQoQwC5NN/68iyO4O5Dojrvrp9tjG5BDABA==} + + '@harmoniclabs/biguint@1.0.0': + resolution: {integrity: sha512-5DyCIBDL4W+7ffR1IJSbGrCG4xEYxAlFH5gCNF42qtyL5ltwZ92Ae1MyXpHM2TUPy7ocSTqlLUsOdy+SvqVVPw==} + + '@harmoniclabs/bitstream@1.0.0': + resolution: {integrity: sha512-Ed/I46IuCiytE5QiMmmUo9kPJcypM7OuUqoRaAXUALL5C6LKLpT6kYE1qeuhLkx2/WvkHT18jcOX6jhM/nmqoA==} + + '@harmoniclabs/bytestring@1.0.0': + resolution: {integrity: sha512-d5m10O0okKc6QNX0pSRriFTkk/kNMnMBGbo5X3kEZwKaXTI4tDVoTZBL7bwbYHwOEdSxWJjVtlO9xtB7ZrYZNg==} + + '@harmoniclabs/cbor@1.6.0': + resolution: {integrity: sha512-KI25p8pHI1rmFZC9NYSxATwlCZ+KJdjydpptKebHcw03Iy7M+E8mF+hSnN5dTbS45xw5ZyKUgPLRgLo1sTuIoQ==} + + '@harmoniclabs/crypto@0.2.5': + resolution: {integrity: sha512-t2saWMFWBx8tOHotiYTTfQKhPGpWT4AMLXxq3u0apShVXNV0vgL0gEgSMudBjES/wrKByCqa2xmU70gadz26hA==} + + '@harmoniclabs/obj-utils@1.0.0': + resolution: {integrity: sha512-EO1bQBZAORrutcP+leP5YNDwNd/9TOE23VEvs3ktniXg6w0knUrLjUIl2Pkcbs/D1VQxqmsNpXho+vaMj00qxA==} + + '@harmoniclabs/pair@1.0.0': + resolution: {integrity: sha512-D9OBowsUsy1LctHxWzd9AngTzoo5x3rBiJ0gu579t41Q23pb+VNx1euEfluUEiaYbgljcl1lb/4D1fFTZd1tRQ==} + + '@harmoniclabs/plutus-data@1.2.6': + resolution: {integrity: sha512-rF046GZ07XDpjZBNybALKYSycjxCLzXKbhLylu9pRuZiii5fVXReEfgtLB29TsPBvGY6ZBeiyHgJnLgm+huZBw==} + peerDependencies: + '@harmoniclabs/bytestring': ^1.0.0 + '@harmoniclabs/cbor': ^1.3.0 + + '@harmoniclabs/uint8array-utils@1.0.4': + resolution: {integrity: sha512-Z454prSbX4geXGHyjjcn9vm6u9NsD3VJykv8f8yE1VjIXSPitaLPEnm8u2+B+GMp1chYlLilOq+kW4OvJ6y28A==} + + '@harmoniclabs/uplc@1.4.1': + resolution: {integrity: sha512-sELKStjxPBPBxBMylU4oBSUe0/8eJe2HqRblNSwrMu8Fso4YpSPDqHZ33iDZ8QAadVUsT5r2EQKX0TLrj7qXvQ==} + peerDependencies: + '@harmoniclabs/bytestring': ^1.0.0 + '@harmoniclabs/cbor': ^1.3.0 + '@harmoniclabs/crypto': ^0.3.0-dev0 + '@harmoniclabs/pair': ^1.0.0 + '@harmoniclabs/plutus-data': ^1.2.4 + + '@hookform/resolvers@5.2.2': + resolution: {integrity: sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==} + peerDependencies: + react-hook-form: ^7.55.0 + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@isaacs/ttlcache@1.4.1': + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + + '@libp2p/interface@3.1.0': + resolution: {integrity: sha512-RE7/XyvC47fQBe1cHxhMvepYKa5bFCUyFrrpj8PuM0E7JtzxU7F+Du5j4VXbg2yLDcToe0+j8mB7jvwE2AThYw==} + + '@meshsdk/common@1.9.0-beta.100': + resolution: {integrity: sha512-H3ktKR9eheRKZupg7DLdUr8A9dsefJbu7Wc+I1suwrv+oAZWiJ2wCuF3bX2QQo3LyWrSkVCE7WEiKFfQmukIww==} + + '@meshsdk/common@1.9.0-beta.101': + resolution: {integrity: sha512-5riUdwO78nSq61P+fNOMs5rfOVxm61N5T/JbdKE9oa8FMuAvgePBs6vesdCU1FSAQy4ppZI3Ez5q1ujoShw/7g==} + + '@meshsdk/core-cst@1.9.0-beta.100': + resolution: {integrity: sha512-gXC7c81puzv12C3xJ6vhH/KIEc/P6ScuXsgmLlqFMpDv0SuoMg+42HgdyWi0WrccVwi8cdepsn5YhtCaYVn0nw==} + + '@meshsdk/core-cst@1.9.0-beta.101': + resolution: {integrity: sha512-Vz7EFwc+9zNjhxt0LanY3283eqdjb78uyvodTKMixkYOJvDYprGY3Ul6B4w+IJ4fn/RfazFn9XtIk2Y+wIJ69w==} + + '@meshsdk/core@1.9.0-beta.101': + resolution: {integrity: sha512-tAg8V3+CJEwHMKsXHlfYsmTSZSz1fUIFzmGkH247ydjcynqNKjoZ10vtj0O2nI7QXT7oI9EhCJ6xikJC/jUXBQ==} + + '@meshsdk/provider@1.9.0-beta.100': + resolution: {integrity: sha512-930tN8ZxK/pOXCSlvLxWIUbP5KyEO7EloacuPjSNnRP9rVJlt/AoiW30CSV8l9ZegA9VH30pev9Svv0Qj/kjRQ==} + + '@meshsdk/transaction@1.9.0-beta.101': + resolution: {integrity: sha512-kjJ1zQgy3sVCNPwpcvpSrpQ2bA6AIz6sDJiPBgBSZqSzBp2qfto3ERIwXQ6eu7vvFzqnnDWcj/QSJB5O7FWqww==} + + '@meshsdk/wallet@1.9.0-beta.101': + resolution: {integrity: sha512-HAG8gyZY7HQJ66sPj6Id/ojhqbuGYe7xRj0Qu9z3iAXE9pq9h2FvSjCCxiclKEwyRot9Gk/+wMZTJCqSen0luw==} + + '@multiformats/dns@1.0.13': + resolution: {integrity: sha512-yr4bxtA3MbvJ+2461kYIYMsiiZj/FIqKI64hE4SdvWJUdWF9EtZLar38juf20Sf5tguXKFUruluswAO6JsjS2w==} + + '@multiformats/mafmt@12.1.6': + resolution: {integrity: sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww==} + + '@multiformats/multiaddr@12.5.1': + resolution: {integrity: sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==} + + '@multiformats/multiaddr@13.0.1': + resolution: {integrity: sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==} + + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + + '@next/env@16.2.1': + resolution: {integrity: sha512-n8P/HCkIWW+gVal2Z8XqXJ6aB3J0tuM29OcHpCsobWlChH/SITBs1DFBk/HajgrwDkqqBXPbuUuzgDvUekREPg==} + + '@next/eslint-plugin-next@16.2.1': + resolution: {integrity: sha512-r0epZGo24eT4g08jJlg2OEryBphXqO8aL18oajoTKLzHJ6jVr6P6FI58DLMug04MwD3j8Fj0YK0slyzneKVyzA==} + + '@next/swc-darwin-arm64@16.2.1': + resolution: {integrity: sha512-BwZ8w8YTaSEr2HIuXLMLxIdElNMPvY9fLqb20LX9A9OMGtJilhHLbCL3ggyd0TwjmMcTxi0XXt+ur1vWUoxj2Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@16.2.1': + resolution: {integrity: sha512-/vrcE6iQSJq3uL3VGVHiXeaKbn8Es10DGTGRJnRZlkNQQk3kaNtAJg8Y6xuAlrx/6INKVjkfi5rY0iEXorZ6uA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@16.2.1': + resolution: {integrity: sha512-uLn+0BK+C31LTVbQ/QU+UaVrV0rRSJQ8RfniQAHPghDdgE+SlroYqcmFnO5iNjNfVWCyKZHYrs3Nl0mUzWxbBw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-arm64-musl@16.2.1': + resolution: {integrity: sha512-ssKq6iMRnHdnycGp9hCuGnXJZ0YPr4/wNwrfE5DbmvEcgl9+yv97/Kq3TPVDfYome1SW5geciLB9aiEqKXQjlQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@next/swc-linux-x64-gnu@16.2.1': + resolution: {integrity: sha512-HQm7SrHRELJ30T1TSmT706IWovFFSRGxfgUkyWJZF/RKBMdbdRWJuFrcpDdE5vy9UXjFOx6L3mRdqH04Mmx0hg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-x64-musl@16.2.1': + resolution: {integrity: sha512-aV2iUaC/5HGEpbBkE+4B8aHIudoOy5DYekAKOMSHoIYQ66y/wIVeaRx8MS2ZMdxe/HIXlMho4ubdZs/J8441Tg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@next/swc-win32-arm64-msvc@16.2.1': + resolution: {integrity: sha512-IXdNgiDHaSk0ZUJ+xp0OQTdTgnpx1RCfRTalhn3cjOP+IddTMINwA7DXZrwTmGDO8SUr5q2hdP/du4DcrB1GxA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@16.2.1': + resolution: {integrity: sha512-qvU+3a39Hay+ieIztkGSbF7+mccbbg1Tk25hc4JDylf8IHjYmY/Zm64Qq1602yPyQqvie+vf5T/uPwNxDNIoeg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@parcel/watcher-android-arm64@2.5.6': + resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-x64-musl@2.5.6': + resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} + engines: {node: '>= 10.0.0'} + + '@pythnetwork/pyth-lazer-sdk@6.2.1': + resolution: {integrity: sha512-+d+ATApOBF5z3YvqwP/5R42xr9vWpLOvbAFWDWldYiltlH8eU9PaGgeczgCs3it3STpnL+8jTXsUBhqv9T94Aw==} + engines: {node: ^24.0.0} + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@scure/base@1.2.6': + resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} + + '@simplewebauthn/browser@13.3.0': + resolution: {integrity: sha512-BE/UWv6FOToAdVk0EokzkqQQDOWtNydYlY6+OrmiZ5SCNmb41VehttboTetUM3T/fr6EAFYVXjz4My2wg230rQ==} + + '@standard-schema/utils@0.3.0': + resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + + '@types/base32-encoding@1.0.2': + resolution: {integrity: sha512-6kXiZ8gETqBU/B9ddcw15nwacX4iX9mLZTU0kghWK5u+OdjfJg6vxHh/vXoURWTyLSzs2jKgcq1lS3S/Tvl4mw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/json-bigint@1.0.4': + resolution: {integrity: sha512-ydHooXLbOmxBbubnA7Eh+RpBzuaIiQjh8WGJYQB50JFGFrdxW7JzVlyEV7fAXw0T2sqJ1ysTneJbiyNLqZRAag==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/node@20.19.37': + resolution: {integrity: sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==} + + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + + '@typescript-eslint/eslint-plugin@8.57.1': + resolution: {integrity: sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.57.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/parser@8.57.1': + resolution: {integrity: sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.57.1': + resolution: {integrity: sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.57.1': + resolution: {integrity: sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.57.1': + resolution: {integrity: sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.57.1': + resolution: {integrity: sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/types@8.57.1': + resolution: {integrity: sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.57.1': + resolution: {integrity: sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.57.1': + resolution: {integrity: sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/visitor-keys@8.57.1': + resolution: {integrity: sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.11.1': + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.11.1': + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + cpu: [x64] + os: [win32] + + '@utxorpc/sdk@0.6.8': + resolution: {integrity: sha512-Mff6q2o7R2aam85KmjtAZDKPhJesMmnGFbk2M54lPO0FwrrWRfUf6DYezqWfYcjXgKQSHDuklAcdtF0weEENRA==} + + '@utxorpc/spec@0.16.0': + resolution: {integrity: sha512-EK2M0TBp14MrRCYDuFeJ+bAS39RxxLLh+CD08h/YvAgxSv/4ZOBCf1/sxHAGCBGGndB4heZYFeuQ+i1i8vP5lw==} + engines: {node: '>=20.0.0'} + + '@zxing/text-encoding@0.9.0': + resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} + + abort-error@1.0.1: + resolution: {integrity: sha512-fxqCblJiIPdSXIUrxI0PL+eJG49QdP9SQ70qtB65MVAoMr2rASlOyAbJFOylfB467F/f+5BCLJJq58RYi7mGfg==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.11.1: + resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==} + engines: {node: '>=4'} + + axios@1.13.6: + resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + b4a@1.8.0: + resolution: {integrity: sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + base32-encoding@1.0.0: + resolution: {integrity: sha512-k1gA7f00ODLY7YtuEQFz0Kn3huTCmL/JW+oQtw51ID+zxs5chj/YQ1bXN+Q0JsqiKB2Yn0oA0AA8uipFYgpagQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + baseline-browser-mapping@2.10.10: + resolution: {integrity: sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + + bignumber.js@9.3.1: + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bip39@3.1.0: + resolution: {integrity: sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==} + + blake2b-wasm@2.4.0: + resolution: {integrity: sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w==} + + blake2b@2.1.4: + resolution: {integrity: sha512-AyBuuJNI64gIvwx13qiICz6H6hpmjvYS5DGkG6jbXMOT8Z3WUJ3V1X0FlhIoT1b/5JtHE3ki+xjtMvu1nn+t9A==} + + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + + bn.js@5.2.3: + resolution: {integrity: sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@5.0.4: + resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + engines: {node: 18 || 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001780: + resolution: {integrity: sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==} + + cbor@10.0.12: + resolution: {integrity: sha512-exQDevYd7ZQLP4moMQcZkKCVZsXLAtUSflObr3xTh4xzFIv/xBCdvCd6L259kQOUP2kcTC0jvC6PpZIf/WmRXA==} + engines: {node: '>=20'} + + chacha-native@2.0.3: + resolution: {integrity: sha512-93h+osfjhR2sMHAaapTLlL/COoBPEZ6upicPBQ4GfUyadoMb8t9/M0PKK8kC+F+DEA/Oy3Kg9w3HzY3J1foP3g==} + + chacha@2.1.0: + resolution: {integrity: sha512-FhVtqaZOiHlOKUkAWfDlJ+oe/O8iPQbCC0pFXJqphr4YQBCZPXa8Mv3j35+W4eWFWCoTUcW2u5IWDDkknygvVA==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + cipher-base@1.0.7: + resolution: {integrity: sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==} + engines: {node: '>= 0.10'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + dotenv@17.3.1: + resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + electron-to-chromium@1.5.321: + resolution: {integrity: sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.3.1: + resolution: {integrity: sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + esbuild@0.27.4: + resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-next@16.2.1: + resolution: {integrity: sha512-qhabwjQZ1Mk53XzXvmogf8KQ0tG0CQXF0CZ56+2/lVhmObgmaqj7x5A1DSrWdZd3kwI7GTPGUjFne+krRxYmFg==} + peerDependencies: + eslint: '>=9.0.0' + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.10.1: + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-react-hooks@7.0.1: + resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@9.39.4: + resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + fraction.js@4.0.1: + resolution: {integrity: sha512-NQYzZw8MUsxSZFQo6E8tKOlmSd/BlDTNOR4puXFSHSwFwNaIlmbortQy5PDN/KnVQ4xWG2NtN0J0hjPw7eE06A==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-random-values@2.1.0: + resolution: {integrity: sha512-q2yOLpLyA8f9unfv2LV8KVRUFeOIrQVS5cnqpbv6N+ea9j1rmW5dFKj/2Q7CK3juEfDYQgPxGt941VJcmw0jKg==} + engines: {node: 14 || 16 || >=18} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.13.6: + resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash-base@3.1.2: + resolution: {integrity: sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==} + engines: {node: '>= 0.8'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hashlru@2.3.0: + resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + + i@0.3.7: + resolution: {integrity: sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==} + engines: {node: '>=0.4'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + immutable@5.1.5: + resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + iso-url@1.2.1: + resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==} + engines: {node: '>=12'} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + isomorphic-ws@5.0.0: + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + libsodium-sumo@0.7.16: + resolution: {integrity: sha512-x6atrz2AdXCJg6G709x9W9TTJRI6/0NcL5dD0l5GGVqNE48UJmDsjO4RUWYTeyXXUpg+NXZ2SHECaZnFRYzwGA==} + + libsodium-wrappers-sumo@0.7.10: + resolution: {integrity: sha512-1noz8Mcl/LUzO/iSO/FJzoJyIaPwxl+/+E4CoTIXtsPiEEXQx2sxalmrVWxteLpynqgX0ASo28ChB9NEVRh0Pg==} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + main-event@1.0.1: + resolution: {integrity: sha512-NWtdGrAca/69fm6DIVd8T9rtfDII4Q8NQbIbsKQq2VzS9eqOGYs8uaNQjcuaCq/d9H/o625aOTJX2Qoxzqw0Pw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + min-document@2.19.2: + resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimatch@10.2.4: + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multiformats@13.4.2: + resolution: {integrity: sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==} + + nan@2.26.2: + resolution: {integrity: sha512-0tTvBTYkt3tdGw22nrAy50x7gpbGCCFH3AFcyS5WiUu7Eu4vWlri1woE6qHBSfy11vksDqkiwjOnlR7WV8G1Hw==} + + nanoassert@2.0.0: + resolution: {integrity: sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + next@16.2.1: + resolution: {integrity: sha512-VaChzNL7o9rbfdt60HUj8tev4m6d7iC1igAy157526+cJlXOQu5LzsBXNT+xaJnTP/k+utSX5vMv7m0G+zKH+Q==} + engines: {node: '>=20.9.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-exports-info@1.6.0: + resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} + engines: {node: '>= 0.4'} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-releases@2.0.36: + resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} + + nofilter@3.1.0: + resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} + engines: {node: '>=12.19'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-queue@9.1.0: + resolution: {integrity: sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw==} + engines: {node: '>=20'} + + p-timeout@7.0.1: + resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==} + engines: {node: '>=20'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + pbkdf2@3.1.5: + resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==} + engines: {node: '>= 0.10'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + progress-events@1.0.1: + resolution: {integrity: sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw==} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@19.2.4: + resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} + peerDependencies: + react: ^19.2.4 + + react-hook-form@7.72.0: + resolution: {integrity: sha512-V4v6jubaf6JAurEaVnT9aUPKFbNtDgohj5CIgVGyPHvT9wRx5OZHVjz31GsxnPNI278XMu+ruFz+wGOscHaLKw==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + engines: {node: '>=0.10.0'} + + readable-stream@1.1.14: + resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@2.0.0-next.6: + resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + ripemd160@2.0.3: + resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} + engines: {node: '>= 0.8'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + sass@1.98.0: + resolution: {integrity: sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==} + engines: {node: '>=14.0.0'} + hasBin: true + + scalus@0.14.2: + resolution: {integrity: sha512-dobDMIUDUVhtxoX3ceGlaykKQGkph4HOE9hjkLsmwVgYf24fIik6YrZzVFrZSNCTvI2WN7hjEknehIrEJo1CMQ==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + serialize-error@8.1.0: + resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==} + engines: {node: '>=10'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + sha.js@2.4.12: + resolution: {integrity: sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==} + engines: {node: '>= 0.10'} + hasBin: true + + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + to-buffer@1.2.2: + resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} + engines: {node: '>= 0.4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-custom-error@3.3.1: + resolution: {integrity: sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==} + engines: {node: '>=14.0.0'} + + ts-log@2.2.7: + resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + engines: {node: '>=18.0.0'} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript-eslint@8.57.1: + resolution: {integrity: sha512-fLvZWf+cAGw3tqMCYzGIU6yR8K+Y9NT2z23RwOjlNFF2HwSB3KhdEFI5lSBv8tNmFkkBShSjsCjzx1vahZfISA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + uint8-varint@2.0.4: + resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} + + uint8arraylist@2.4.8: + resolution: {integrity: sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ==} + + uint8arrays@5.1.0: + resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==} + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + undici@5.29.0: + resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} + engines: {node: '>=14.0'} + + unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + utf8-codec@1.0.0: + resolution: {integrity: sha512-S/QSLezp3qvG4ld5PUfXiH7mCFxLKjSVZRFkB3DOjgwHuJPFDkInAXc/anf7BAbHt/D38ozDzL+QMZ6/7gsI6w==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + web-encoding@1.1.5: + resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} + + webextension-polyfill@0.8.0: + resolution: {integrity: sha512-a19+DzlT6Kp9/UI+mF9XQopeZ+n2ussjhxHJ4/pmIGge9ijCDz7Gn93mNnjpZAk95T4Tae8iHZ6sSf869txqiQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + 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 + + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} + 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 + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zod-validation-error@4.0.2: + resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + +snapshots: + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.0': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.29.2': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + + '@babel/parser@7.29.2': + dependencies: + '@babel/types': 7.29.0 + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@biglup/is-cid@1.0.3': + dependencies: + '@multiformats/mafmt': 12.1.6 + '@multiformats/multiaddr': 12.5.1 + iso-url: 1.2.1 + multiformats: 13.4.2 + uint8arrays: 5.1.0 + + '@bufbuild/protobuf@1.10.1': {} + + '@cardano-ogmios/client@6.9.0': + dependencies: + '@cardano-ogmios/schema': 6.9.0 + '@cardanosolutions/json-bigint': 1.1.0 + '@types/json-bigint': 1.0.4 + bech32: 2.0.0 + cross-fetch: 3.2.0 + fastq: 1.20.1 + isomorphic-ws: 4.0.1(ws@7.5.10) + nanoid: 3.3.11 + ts-custom-error: 3.3.1 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@cardano-ogmios/schema@6.9.0': {} + + '@cardano-sdk/core@0.46.12(rxjs@7.8.2)': + dependencies: + '@biglup/is-cid': 1.0.3 + '@cardano-ogmios/client': 6.9.0 + '@cardano-ogmios/schema': 6.9.0 + '@cardano-sdk/crypto': 0.4.5 + '@cardano-sdk/util': 0.17.1 + '@foxglove/crc': 0.0.3 + '@scure/base': 1.2.6 + fraction.js: 4.0.1 + ip-address: 9.0.5 + lodash: 4.17.23 + ts-custom-error: 3.3.1 + ts-log: 2.2.7 + web-encoding: 1.1.5 + optionalDependencies: + rxjs: 7.8.2 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - react-native-b4a + - utf-8-validate + + '@cardano-sdk/crypto@0.4.5': + dependencies: + '@cardano-sdk/util': 0.17.1 + blake2b: 2.1.4 + i: 0.3.7 + libsodium-wrappers-sumo: 0.7.10 + lodash: 4.17.23 + pbkdf2: 3.1.5 + ts-custom-error: 3.3.1 + ts-log: 2.2.7 + transitivePeerDependencies: + - react-native-b4a + + '@cardano-sdk/dapp-connector@0.13.26(rxjs@7.8.2)': + dependencies: + '@cardano-sdk/core': 0.46.12(rxjs@7.8.2) + '@cardano-sdk/crypto': 0.4.5 + '@cardano-sdk/util': 0.17.1 + ts-custom-error: 3.3.1 + ts-log: 2.2.7 + webextension-polyfill: 0.8.0 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@cardano-sdk/input-selection@0.14.28(rxjs@7.8.2)': + dependencies: + '@cardano-sdk/core': 0.46.12(rxjs@7.8.2) + '@cardano-sdk/key-management': 0.29.12 + '@cardano-sdk/util': 0.17.1 + bignumber.js: 9.3.1 + lodash: 4.17.23 + ts-custom-error: 3.3.1 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@cardano-sdk/key-management@0.29.12': + dependencies: + '@cardano-sdk/core': 0.46.12(rxjs@7.8.2) + '@cardano-sdk/crypto': 0.4.5 + '@cardano-sdk/dapp-connector': 0.13.26(rxjs@7.8.2) + '@cardano-sdk/util': 0.17.1 + '@emurgo/cardano-message-signing-nodejs': 1.1.0 + bip39: 3.1.0 + chacha: 2.1.0 + get-random-values: 2.1.0 + lodash: 4.17.23 + pbkdf2: 3.1.5 + rxjs: 7.8.2 + ts-custom-error: 3.3.1 + ts-log: 2.2.7 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - react-native-b4a + - utf-8-validate + + '@cardano-sdk/util@0.17.1': + dependencies: + bech32: 2.0.0 + lodash: 4.17.23 + serialize-error: 8.1.0 + ts-custom-error: 3.3.1 + ts-log: 2.2.7 + + '@cardanosolutions/json-bigint@1.1.0': {} + + '@chainsafe/is-ip@2.1.0': {} + + '@chainsafe/netmask@2.0.0': + dependencies: + '@chainsafe/is-ip': 2.1.0 + + '@connectrpc/connect-node@1.4.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.1))': + dependencies: + '@bufbuild/protobuf': 1.10.1 + '@connectrpc/connect': 1.4.0(@bufbuild/protobuf@1.10.1) + undici: 5.29.0 + + '@connectrpc/connect-web@1.4.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.1))': + dependencies: + '@bufbuild/protobuf': 1.10.1 + '@connectrpc/connect': 1.4.0(@bufbuild/protobuf@1.10.1) + + '@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.1)': + dependencies: + '@bufbuild/protobuf': 1.10.1 + + '@dnsquery/dns-packet@6.1.1': + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + utf8-codec: 1.0.0 + + '@emnapi/core@1.9.1': + dependencies: + '@emnapi/wasi-threads': 1.2.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.9.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emurgo/cardano-message-signing-nodejs@1.1.0': {} + + '@esbuild/aix-ppc64@0.27.4': + optional: true + + '@esbuild/android-arm64@0.27.4': + optional: true + + '@esbuild/android-arm@0.27.4': + optional: true + + '@esbuild/android-x64@0.27.4': + optional: true + + '@esbuild/darwin-arm64@0.27.4': + optional: true + + '@esbuild/darwin-x64@0.27.4': + optional: true + + '@esbuild/freebsd-arm64@0.27.4': + optional: true + + '@esbuild/freebsd-x64@0.27.4': + optional: true + + '@esbuild/linux-arm64@0.27.4': + optional: true + + '@esbuild/linux-arm@0.27.4': + optional: true + + '@esbuild/linux-ia32@0.27.4': + optional: true + + '@esbuild/linux-loong64@0.27.4': + optional: true + + '@esbuild/linux-mips64el@0.27.4': + optional: true + + '@esbuild/linux-ppc64@0.27.4': + optional: true + + '@esbuild/linux-riscv64@0.27.4': + optional: true + + '@esbuild/linux-s390x@0.27.4': + optional: true + + '@esbuild/linux-x64@0.27.4': + optional: true + + '@esbuild/netbsd-arm64@0.27.4': + optional: true + + '@esbuild/netbsd-x64@0.27.4': + optional: true + + '@esbuild/openbsd-arm64@0.27.4': + optional: true + + '@esbuild/openbsd-x64@0.27.4': + optional: true + + '@esbuild/openharmony-arm64@0.27.4': + optional: true + + '@esbuild/sunos-x64@0.27.4': + optional: true + + '@esbuild/win32-arm64@0.27.4': + optional: true + + '@esbuild/win32-ia32@0.27.4': + optional: true + + '@esbuild/win32-x64@0.27.4': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)': + dependencies: + eslint: 9.39.4 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.2': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.5': + dependencies: + ajv: 6.14.0 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.4': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + + '@fastify/busboy@2.1.1': {} + + '@foxglove/crc@0.0.3': {} + + '@harmoniclabs/bigint-utils@1.0.0': + dependencies: + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@harmoniclabs/biguint@1.0.0': {} + + '@harmoniclabs/bitstream@1.0.0': + dependencies: + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@harmoniclabs/bytestring@1.0.0': + dependencies: + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@harmoniclabs/cbor@1.6.0': + dependencies: + '@harmoniclabs/bytestring': 1.0.0 + '@harmoniclabs/obj-utils': 1.0.0 + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@harmoniclabs/crypto@0.2.5': + dependencies: + '@harmoniclabs/bitstream': 1.0.0 + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@harmoniclabs/obj-utils@1.0.0': {} + + '@harmoniclabs/pair@1.0.0': {} + + '@harmoniclabs/plutus-data@1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0)': + dependencies: + '@harmoniclabs/biguint': 1.0.0 + '@harmoniclabs/bytestring': 1.0.0 + '@harmoniclabs/cbor': 1.6.0 + '@harmoniclabs/crypto': 0.2.5 + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@harmoniclabs/uint8array-utils@1.0.4': {} + + '@harmoniclabs/uplc@1.4.1(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0)(@harmoniclabs/crypto@0.2.5)(@harmoniclabs/pair@1.0.0)(@harmoniclabs/plutus-data@1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0))': + dependencies: + '@harmoniclabs/bigint-utils': 1.0.0 + '@harmoniclabs/bytestring': 1.0.0 + '@harmoniclabs/cbor': 1.6.0 + '@harmoniclabs/crypto': 0.2.5 + '@harmoniclabs/pair': 1.0.0 + '@harmoniclabs/plutus-data': 1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0) + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@hookform/resolvers@5.2.2(react-hook-form@7.72.0(react@19.2.4))': + dependencies: + '@standard-schema/utils': 0.3.0 + react-hook-form: 7.72.0(react@19.2.4) + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.7': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@img/colour@1.1.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.9.1 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + + '@isaacs/ttlcache@1.4.1': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@leichtgewicht/ip-codec@2.0.5': {} + + '@libp2p/interface@3.1.0': + dependencies: + '@multiformats/dns': 1.0.13 + '@multiformats/multiaddr': 13.0.1 + main-event: 1.0.1 + multiformats: 13.4.2 + progress-events: 1.0.1 + uint8arraylist: 2.4.8 + + '@meshsdk/common@1.9.0-beta.100': + dependencies: + bech32: 2.0.0 + bip39: 3.1.0 + blake2b: 2.1.4 + blakejs: 1.2.1 + transitivePeerDependencies: + - react-native-b4a + + '@meshsdk/common@1.9.0-beta.101': + dependencies: + bech32: 2.0.0 + bip39: 3.1.0 + blake2b: 2.1.4 + blakejs: 1.2.1 + transitivePeerDependencies: + - react-native-b4a + + '@meshsdk/core-cst@1.9.0-beta.100(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2)': + dependencies: + '@cardano-sdk/core': 0.46.12(rxjs@7.8.2) + '@cardano-sdk/crypto': 0.4.5 + '@cardano-sdk/input-selection': 0.14.28(rxjs@7.8.2) + '@cardano-sdk/util': 0.17.1 + '@harmoniclabs/cbor': 1.6.0 + '@harmoniclabs/pair': 1.0.0 + '@harmoniclabs/plutus-data': 1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0) + '@harmoniclabs/uplc': 1.4.1(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0)(@harmoniclabs/crypto@0.2.5)(@harmoniclabs/pair@1.0.0)(@harmoniclabs/plutus-data@1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0)) + '@meshsdk/common': 1.9.0-beta.100 + '@types/base32-encoding': 1.0.2 + base32-encoding: 1.0.0 + bech32: 2.0.0 + blakejs: 1.2.1 + bn.js: 5.2.3 + hash.js: 1.1.7 + scalus: 0.14.2 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - '@harmoniclabs/bytestring' + - '@harmoniclabs/crypto' + - bufferutil + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@meshsdk/core-cst@1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2)': + dependencies: + '@cardano-sdk/core': 0.46.12(rxjs@7.8.2) + '@cardano-sdk/crypto': 0.4.5 + '@cardano-sdk/input-selection': 0.14.28(rxjs@7.8.2) + '@cardano-sdk/util': 0.17.1 + '@harmoniclabs/cbor': 1.6.0 + '@harmoniclabs/pair': 1.0.0 + '@harmoniclabs/plutus-data': 1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0) + '@harmoniclabs/uplc': 1.4.1(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0)(@harmoniclabs/crypto@0.2.5)(@harmoniclabs/pair@1.0.0)(@harmoniclabs/plutus-data@1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0)) + '@meshsdk/common': 1.9.0-beta.101 + '@types/base32-encoding': 1.0.2 + base32-encoding: 1.0.0 + bech32: 2.0.0 + blakejs: 1.2.1 + bn.js: 5.2.3 + hash.js: 1.1.7 + scalus: 0.14.2 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - '@harmoniclabs/bytestring' + - '@harmoniclabs/crypto' + - bufferutil + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@meshsdk/core@1.9.0-beta.101(@bufbuild/protobuf@1.10.1)(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2)': + dependencies: + '@meshsdk/common': 1.9.0-beta.101 + '@meshsdk/core-cst': 1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@meshsdk/provider': 1.9.0-beta.100(@bufbuild/protobuf@1.10.1)(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@meshsdk/transaction': 1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@meshsdk/wallet': 1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + transitivePeerDependencies: + - '@bufbuild/protobuf' + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - '@harmoniclabs/bytestring' + - '@harmoniclabs/crypto' + - bufferutil + - debug + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@meshsdk/provider@1.9.0-beta.100(@bufbuild/protobuf@1.10.1)(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2)': + dependencies: + '@meshsdk/common': 1.9.0-beta.100 + '@meshsdk/core-cst': 1.9.0-beta.100(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@utxorpc/sdk': 0.6.8(@bufbuild/protobuf@1.10.1) + '@utxorpc/spec': 0.16.0 + axios: 1.13.6 + cbor: 10.0.12 + transitivePeerDependencies: + - '@bufbuild/protobuf' + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - '@harmoniclabs/bytestring' + - '@harmoniclabs/crypto' + - bufferutil + - debug + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@meshsdk/transaction@1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2)': + dependencies: + '@cardano-sdk/core': 0.46.12(rxjs@7.8.2) + '@cardano-sdk/input-selection': 0.14.28(rxjs@7.8.2) + '@cardano-sdk/util': 0.17.1 + '@meshsdk/common': 1.9.0-beta.101 + '@meshsdk/core-cst': 1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + json-bigint: 1.0.0 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - '@harmoniclabs/bytestring' + - '@harmoniclabs/crypto' + - bufferutil + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@meshsdk/wallet@1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2)': + dependencies: + '@meshsdk/common': 1.9.0-beta.101 + '@meshsdk/core-cst': 1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@meshsdk/transaction': 1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@simplewebauthn/browser': 13.3.0 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - '@harmoniclabs/bytestring' + - '@harmoniclabs/crypto' + - bufferutil + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@multiformats/dns@1.0.13': + dependencies: + '@dnsquery/dns-packet': 6.1.1 + '@libp2p/interface': 3.1.0 + hashlru: 2.3.0 + p-queue: 9.1.0 + progress-events: 1.0.1 + uint8arrays: 5.1.0 + + '@multiformats/mafmt@12.1.6': + dependencies: + '@multiformats/multiaddr': 12.5.1 + + '@multiformats/multiaddr@12.5.1': + dependencies: + '@chainsafe/is-ip': 2.1.0 + '@chainsafe/netmask': 2.0.0 + '@multiformats/dns': 1.0.13 + abort-error: 1.0.1 + multiformats: 13.4.2 + uint8-varint: 2.0.4 + uint8arrays: 5.1.0 + + '@multiformats/multiaddr@13.0.1': + dependencies: + '@chainsafe/is-ip': 2.1.0 + multiformats: 13.4.2 + uint8-varint: 2.0.4 + uint8arrays: 5.1.0 + + '@napi-rs/wasm-runtime@0.2.12': + dependencies: + '@emnapi/core': 1.9.1 + '@emnapi/runtime': 1.9.1 + '@tybys/wasm-util': 0.10.1 + optional: true + + '@next/env@16.2.1': {} + + '@next/eslint-plugin-next@16.2.1': + dependencies: + fast-glob: 3.3.1 + + '@next/swc-darwin-arm64@16.2.1': + optional: true + + '@next/swc-darwin-x64@16.2.1': + optional: true + + '@next/swc-linux-arm64-gnu@16.2.1': + optional: true + + '@next/swc-linux-arm64-musl@16.2.1': + optional: true + + '@next/swc-linux-x64-gnu@16.2.1': + optional: true + + '@next/swc-linux-x64-musl@16.2.1': + optional: true + + '@next/swc-win32-arm64-msvc@16.2.1': + optional: true + + '@next/swc-win32-x64-msvc@16.2.1': + optional: true + + '@noble/hashes@1.8.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@nolyfill/is-core-module@1.0.39': {} + + '@parcel/watcher-android-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-x64@2.5.6': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.6': + optional: true + + '@parcel/watcher-win32-arm64@2.5.6': + optional: true + + '@parcel/watcher-win32-ia32@2.5.6': + optional: true + + '@parcel/watcher-win32-x64@2.5.6': + optional: true + + '@parcel/watcher@2.5.6': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.3 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 + optional: true + + '@pythnetwork/pyth-lazer-sdk@6.2.1': + dependencies: + '@isaacs/ttlcache': 1.4.1 + buffer: 6.0.3 + isomorphic-ws: 5.0.0(ws@8.20.0) + ts-log: 2.2.7 + ws: 8.20.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@rtsao/scc@1.1.0': {} + + '@scure/base@1.2.6': {} + + '@simplewebauthn/browser@13.3.0': {} + + '@standard-schema/utils@0.3.0': {} + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/base32-encoding@1.0.2': + dependencies: + '@types/node': 20.19.37 + + '@types/estree@1.0.8': {} + + '@types/json-bigint@1.0.4': {} + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/node@20.19.37': + dependencies: + undici-types: 6.21.0 + + '@types/react-dom@19.2.3(@types/react@19.2.14)': + dependencies: + '@types/react': 19.2.14 + + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + + '@typescript-eslint/eslint-plugin@8.57.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/type-utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.1 + eslint: 9.39.4 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.1 + debug: 4.4.3 + eslint: 9.39.4 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.57.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.57.1': + dependencies: + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/visitor-keys': 8.57.1 + + '@typescript-eslint/tsconfig-utils@8.57.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.57.1(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.4 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.57.1': {} + + '@typescript-eslint/typescript-estree@8.57.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.57.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/visitor-keys': 8.57.1 + debug: 4.4.3 + minimatch: 10.2.4 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.57.1(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + eslint: 9.39.4 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.57.1': + dependencies: + '@typescript-eslint/types': 8.57.1 + eslint-visitor-keys: 5.0.1 + + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + optional: true + + '@unrs/resolver-binding-android-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + dependencies: + '@napi-rs/wasm-runtime': 0.2.12 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + optional: true + + '@utxorpc/sdk@0.6.8(@bufbuild/protobuf@1.10.1)': + dependencies: + '@connectrpc/connect': 1.4.0(@bufbuild/protobuf@1.10.1) + '@connectrpc/connect-node': 1.4.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.1)) + '@connectrpc/connect-web': 1.4.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.1)) + '@utxorpc/spec': 0.16.0 + buffer: 6.0.3 + transitivePeerDependencies: + - '@bufbuild/protobuf' + + '@utxorpc/spec@0.16.0': + dependencies: + '@bufbuild/protobuf': 1.10.1 + + '@zxing/text-encoding@0.9.0': + optional: true + + abort-error@1.0.1: {} + + acorn-jsx@5.3.2(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn@8.16.0: {} + + ajv@6.14.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + ast-types-flow@0.0.8: {} + + async-function@1.0.0: {} + + asynckit@0.4.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axe-core@4.11.1: {} + + axios@1.13.6: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axobject-query@4.1.0: {} + + b4a@1.8.0: {} + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + base32-encoding@1.0.0: {} + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.10.10: {} + + bech32@2.0.0: {} + + bignumber.js@9.3.1: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + optional: true + + bip39@3.1.0: + dependencies: + '@noble/hashes': 1.8.0 + + blake2b-wasm@2.4.0: + dependencies: + b4a: 1.8.0 + nanoassert: 2.0.0 + transitivePeerDependencies: + - react-native-b4a + + blake2b@2.1.4: + dependencies: + blake2b-wasm: 2.4.0 + nanoassert: 2.0.0 + transitivePeerDependencies: + - react-native-b4a + + blakejs@1.2.1: {} + + bn.js@5.2.3: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@5.0.4: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.10.10 + caniuse-lite: 1.0.30001780 + electron-to-chromium: 1.5.321 + node-releases: 2.0.36 + update-browserslist-db: 1.2.3(browserslist@4.28.1) + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001780: {} + + cbor@10.0.12: + dependencies: + nofilter: 3.1.0 + + chacha-native@2.0.3: + dependencies: + bindings: 1.5.0 + inherits: 2.0.4 + nan: 2.26.2 + optional: true + + chacha@2.1.0: + dependencies: + inherits: 2.0.4 + readable-stream: 1.1.14 + optionalDependencies: + chacha-native: 2.0.3 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + cipher-base@1.0.7: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + + client-only@0.0.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + core-util-is@1.0.3: {} + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.7 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.3 + sha.js: 2.4.12 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.7 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + + cross-fetch@3.2.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.2.3: {} + + damerau-levenshtein@1.0.8: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + deep-is@0.1.4: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delayed-stream@1.0.0: {} + + detect-libc@2.1.2: + optional: true + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dom-walk@0.1.2: {} + + dotenv@17.3.1: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + electron-to-chromium@1.5.321: {} + + emoji-regex@9.2.2: {} + + es-abstract@1.24.1: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.20 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.3.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + math-intrinsics: 1.1.0 + safe-array-concat: 1.1.3 + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + esbuild@0.27.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.4 + '@esbuild/android-arm': 0.27.4 + '@esbuild/android-arm64': 0.27.4 + '@esbuild/android-x64': 0.27.4 + '@esbuild/darwin-arm64': 0.27.4 + '@esbuild/darwin-x64': 0.27.4 + '@esbuild/freebsd-arm64': 0.27.4 + '@esbuild/freebsd-x64': 0.27.4 + '@esbuild/linux-arm': 0.27.4 + '@esbuild/linux-arm64': 0.27.4 + '@esbuild/linux-ia32': 0.27.4 + '@esbuild/linux-loong64': 0.27.4 + '@esbuild/linux-mips64el': 0.27.4 + '@esbuild/linux-ppc64': 0.27.4 + '@esbuild/linux-riscv64': 0.27.4 + '@esbuild/linux-s390x': 0.27.4 + '@esbuild/linux-x64': 0.27.4 + '@esbuild/netbsd-arm64': 0.27.4 + '@esbuild/netbsd-x64': 0.27.4 + '@esbuild/openbsd-arm64': 0.27.4 + '@esbuild/openbsd-x64': 0.27.4 + '@esbuild/openharmony-arm64': 0.27.4 + '@esbuild/sunos-x64': 0.27.4 + '@esbuild/win32-arm64': 0.27.4 + '@esbuild/win32-ia32': 0.27.4 + '@esbuild/win32-x64': 0.27.4 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-next@16.2.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3): + dependencies: + '@next/eslint-plugin-next': 16.2.1 + eslint: 9.39.4 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4) + eslint-plugin-react: 7.37.5(eslint@9.39.4) + eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4) + globals: 16.4.0 + typescript-eslint: 8.57.1(eslint@9.39.4)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-webpack + - eslint-plugin-import-x + - supports-color + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.11 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.3 + eslint: 9.39.4 + get-tsconfig: 4.13.6 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.15 + unrs-resolver: 1.11.1 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.39.4 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.9 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.11.1 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.39.4 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-react-hooks@7.0.1(eslint@9.39.4): + dependencies: + '@babel/core': 7.29.0 + '@babel/parser': 7.29.2 + eslint: 9.39.4 + hermes-parser: 0.25.1 + zod: 4.3.6 + zod-validation-error: 4.0.2(zod@4.3.6) + transitivePeerDependencies: + - supports-color + + eslint-plugin-react@7.37.5(eslint@9.39.4): + dependencies: + array-includes: 3.1.9 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.3.1 + eslint: 9.39.4 + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.5 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.6 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@9.39.4: + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.5 + '@eslint/js': 9.39.4 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.14.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 4.2.1 + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + eventemitter3@5.0.4: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-uri-to-path@1.0.0: + optional: true + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + + flatted@3.4.2: {} + + follow-redirects@1.15.11: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + fraction.js@4.0.1: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + generator-function@2.0.1: {} + + gensync@1.0.0-beta.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-random-values@2.1.0: + dependencies: + global: 4.4.0 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.13.6: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + global@4.4.0: + dependencies: + min-document: 2.19.2 + process: 0.11.10 + + globals@14.0.0: {} + + globals@16.4.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + gopd@1.2.0: {} + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash-base@3.1.2: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hashlru@2.3.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + + i@0.3.7: {} + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + immutable@5.1.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inherits@2.0.4: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-bun-module@2.0.0: + dependencies: + semver: 7.7.4 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.20 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + isarray@0.0.1: {} + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + iso-url@1.2.1: {} + + isomorphic-ws@4.0.1(ws@7.5.10): + dependencies: + ws: 7.5.10 + + isomorphic-ws@5.0.0(ws@8.20.0): + dependencies: + ws: 8.20.0 + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + js-tokens@4.0.0: {} + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + jsbn@1.1.0: {} + + jsesc@3.1.0: {} + + json-bigint@1.0.0: + dependencies: + bignumber.js: 9.3.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + libsodium-sumo@0.7.16: {} + + libsodium-wrappers-sumo@0.7.10: + dependencies: + libsodium-sumo: 0.7.16 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + lodash@4.17.23: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + main-event@1.0.1: {} + + math-intrinsics@1.1.0: {} + + md5.js@1.3.5: + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + min-document@2.19.2: + dependencies: + dom-walk: 0.1.2 + + minimalistic-assert@1.0.1: {} + + minimatch@10.2.4: + dependencies: + brace-expansion: 5.0.4 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.12 + + minimist@1.2.8: {} + + ms@2.1.3: {} + + multiformats@13.4.2: {} + + nan@2.26.2: + optional: true + + nanoassert@2.0.0: {} + + nanoid@3.3.11: {} + + napi-postinstall@0.3.4: {} + + natural-compare@1.4.0: {} + + next@16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0): + dependencies: + '@next/env': 16.2.1 + '@swc/helpers': 0.5.15 + baseline-browser-mapping: 2.10.10 + caniuse-lite: 1.0.30001780 + postcss: 8.4.31 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.4) + optionalDependencies: + '@next/swc-darwin-arm64': 16.2.1 + '@next/swc-darwin-x64': 16.2.1 + '@next/swc-linux-arm64-gnu': 16.2.1 + '@next/swc-linux-arm64-musl': 16.2.1 + '@next/swc-linux-x64-gnu': 16.2.1 + '@next/swc-linux-x64-musl': 16.2.1 + '@next/swc-win32-arm64-msvc': 16.2.1 + '@next/swc-win32-x64-msvc': 16.2.1 + sass: 1.98.0 + sharp: 0.34.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + node-addon-api@7.1.1: + optional: true + + node-exports-info@1.6.0: + dependencies: + array.prototype.flatmap: 1.3.3 + es-errors: 1.3.0 + object.entries: 1.1.9 + semver: 6.3.1 + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-releases@2.0.36: {} + + nofilter@3.1.0: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-queue@9.1.0: + dependencies: + eventemitter3: 5.0.4 + p-timeout: 7.0.1 + + p-timeout@7.0.1: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + pbkdf2@3.1.5: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + to-buffer: 1.2.2 + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + possible-typed-array-names@1.1.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + progress-events@1.0.1: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@19.2.4(react@19.2.4): + dependencies: + react: 19.2.4 + scheduler: 0.27.0 + + react-hook-form@7.72.0(react@19.2.4): + dependencies: + react: 19.2.4 + + react-is@16.13.1: {} + + react@19.2.4: {} + + readable-stream@1.1.14: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readdirp@4.1.2: {} + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + resolve-from@4.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.6: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.1 + node-exports-info: 1.6.0 + object-keys: 1.1.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + ripemd160@2.0.3: + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + sass@1.98.0: + dependencies: + chokidar: 4.0.3 + immutable: 5.1.5 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.6 + + scalus@0.14.2: {} + + scheduler@0.27.0: {} + + semver@6.3.1: {} + + semver@7.7.4: {} + + serialize-error@8.1.0: + dependencies: + type-fest: 0.20.2 + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + sha.js@2.4.12: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + + sharp@0.34.5: + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.7.4 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + source-map-js@1.2.1: {} + + sprintf-js@1.1.3: {} + + stable-hash@0.0.5: {} + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.1 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@0.10.31: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + strip-bom@3.0.0: {} + + strip-json-comments@3.1.1: {} + + styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.4): + dependencies: + client-only: 0.0.1 + react: 19.2.4 + optionalDependencies: + '@babel/core': 7.29.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + to-buffer@1.2.2: + dependencies: + isarray: 2.0.5 + safe-buffer: 5.2.1 + typed-array-buffer: 1.0.3 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tr46@0.0.3: {} + + ts-api-utils@2.5.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + ts-custom-error@3.3.1: {} + + ts-log@2.2.7: {} + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + tsx@4.21.0: + dependencies: + esbuild: 0.27.4 + get-tsconfig: 4.13.6 + optionalDependencies: + fsevents: 2.3.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript-eslint@8.57.1(eslint@9.39.4)(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.57.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.9.3: {} + + uint8-varint@2.0.4: + dependencies: + uint8arraylist: 2.4.8 + uint8arrays: 5.1.0 + + uint8arraylist@2.4.8: + dependencies: + uint8arrays: 5.1.0 + + uint8arrays@5.1.0: + dependencies: + multiformats: 13.4.2 + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@6.21.0: {} + + undici@5.29.0: + dependencies: + '@fastify/busboy': 2.1.1 + + unrs-resolver@1.11.1: + dependencies: + napi-postinstall: 0.3.4 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.11.1 + '@unrs/resolver-binding-android-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-x64': 1.11.1 + '@unrs/resolver-binding-freebsd-x64': 1.11.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-musl': 1.11.1 + '@unrs/resolver-binding-wasm32-wasi': 1.11.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + + update-browserslist-db@1.2.3(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + utf8-codec@1.0.0: {} + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.1.2 + is-typed-array: 1.1.15 + which-typed-array: 1.1.20 + + web-encoding@1.1.5: + dependencies: + util: 0.12.5 + optionalDependencies: + '@zxing/text-encoding': 0.9.0 + + webextension-polyfill@0.8.0: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.20 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.20: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + ws@7.5.10: {} + + ws@8.20.0: {} + + yallist@3.1.1: {} + + yocto-queue@0.1.0: {} + + zod-validation-error@4.0.2(zod@4.3.6): + dependencies: + zod: 4.3.6 + + zod@4.3.6: {} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-workspace.yaml b/lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-workspace.yaml new file mode 100644 index 00000000..77457084 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +allowBuilds: + '@parcel/watcher': false + chacha-native: false + sharp: false + unrs-resolver: false diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/public/apple-touch-icon.png b/lazer/cardano/safequote-veltrix/safequote-app-website/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2196bbcad6f154151ad488714d92b23e722dd80b GIT binary patch literal 30121 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 literal 0 HcmV?d00001 diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon-96x96.png b/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..d1abc10e13ee917468ed4922878238a20df531ff GIT binary patch literal 9185 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 HADjDs=*LBz literal 0 HcmV?d00001 diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon.svg b/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon.svg new file mode 100644 index 00000000..4496fff5 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/public/site.webmanifest b/lazer/cardano/safequote-veltrix/safequote-app-website/public/site.webmanifest new file mode 100644 index 00000000..6d18a21b --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/public/site.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "SafeQuote", + "short_name": "SafeQuote", + "icons": [ + { + "src": "/web-app-manifest-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/web-app-manifest-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "theme_color": "#0B132B", + "background_color": "#0B132B", + "display": "standalone" +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/public/web-app-manifest-192x192.png b/lazer/cardano/safequote-veltrix/safequote-app-website/public/web-app-manifest-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..12148639c23053b11f4f204e787794fc6b8fd18b GIT binary patch literal 37613 zcmV)`Kz_f8P)4r=qICUgtoS0$gWBRpP(Mfhq;~ zFV1?^n6Go7N&&93qAKxUiIv#fhq;~Pfd5#U~lC>l>*$#k$e3d*j%TLjtg;WIijv} z^H;*1YW48JCPjp*@DFg{KcoQv0C#_Fl6c1&oxJ+3c-pu3tgRm1rkvD2`bMIm?U*B; zeI_39e`)Jn_s$>HgO~-XU#nE5?gs~|6yV--nRq_=Rk*rA=g&#a#}=90>oqrtK6*uT z(#V2~woDgX%^uM5MO}j@HwVUqzTw_>vg^I?QdJArI8dbk*En&HViaf>!Movm#V&Pw zS(uB?#ZpwP%G~$8cy_f>le}$~x;*28A^N z)NB8$`RJxE^d;G+7zjYMZh_80QL)&as<}ZX-0M)qy%)+j;fa18_xbc2ZJ zYWUS3+SIE~S7&f>(W%si8Y0L~^wpaQf}6Wt2=35)gbrec;AR=y1t9Q8t}2{6 za-d29?#P--3q*)|#@)T`^eC6EKXi8Kz2zm>ryiZ)63}It^FuFg(Z!BB;?(r5!z6mZ z`ZC`Z4LJo#u`v-8knkU48e&s~LWK!XE@;3aD4+t_1U7rQMV9T95>ON^vnkXH!5W=V zr`rfQ=9M+H>Byai7UK@-AA0k!A@aopgdbe`K0ZU&Z`YenPi}b1rQ3pLhGwt%LS&qp zw^;>$oCCriNBys2#!A|n{e!&QOz-2=E8!E@M(?b%20y*l?AzvRlV_u87WcZNsZ(fg zs`YIu3rr`Q@=wcosozKisku;;W3k%pS7f3AP#Ihef#D5U(w?R2qO&_iQexH9oDw1X z^q0kjS4xR7cl?{W)*mzlkG?KAV^u2zGU2y^@LPrd$+F;q zT7Byo{!Z<_dc?KcnsIK=Ois|WdHtlx6kqrqU4kyiB`i^|t&n zsaeU!3C%Jt9Q#6DyZz8|m+Fzg>`YTqdcHj6d;-7*YsQA*D+-rC{&LATk8~^lvR4z! zhN0os9TOS}#~1Zdr~dSgw&28SmA&Y^!kE=6Xo9Uyq226(?WT%NhVFEKa_kY0{y#5p z>9PDNr_NtR;As>duf~c0$vORvL02h&gE?`cw&^P&?p?p>=hXQ5nNY3m_lnO$KU%yW z`ahGtW^Rz?ahuh-`to#>RaXNc34A9}Epb2^u99@nRAb=UXH5{7*bC#Ic+OIwPO zoPuyIFgg9=&th5X29N}$SYM-#JtTI4A$G(JkBHt+I5iwLSQXuC3BDT`h>ns-Sa}gG zzVwOZ$h0fh2waUBK#~>GHWt9~*(Xg~-&|GtW53B|U%uPlv~@}s@$~X1bZH6C=yH#a z)D@mvAe82uw5h$lWuNBHL-jU`#TqTwNTFR8`wbp8(yz|RQbeAd={V0y#SoORs`Rz6}ZT-*8E z{7ogkT>Bq*%eBjlt0H~%mR62VffUbpH#jeFJ%hycj++wachgAi!4FSSIDjr|3?i$G0aka z1@cZ#CV9u>XwuqVrN=%RSF+>H4UiR|3lOjT#)PBgj8q#UEqWtr!xi+fG#Rr^(2_2%D5 zF}=R^?)mLt2tH8N-4o_@a`d#e!vXz~-nRbuKfTRu9N=A)m{R6eW?LYGI=`p*$?^E-h3>mWgqgrpy zSmodA&Gjx#drV=T0nO}X=}9?9e*P?F-KQ^KUi!*w=i*0>PTw(mJJPFgX%Z9dIa|kP zXRqjavT#|q-32Rp?aTjR(AnZ$lM4}tA@HDNp4gO_zW2+oE^V4L`OORC?#yjfYl$tp9hx{pM_|_TrjFzE3ZD-K*!UHf}vXuHn^niZjHa)hvWM=6OVVbVw#5^%|%hP!Wrgke` zKj=$1x}@k1vq~VeuM4gkO?{qT^FpWncL$++&U#h|$UhLQC!|{Iomv!=K_Pj5)Qu!R8`=T^|^^lcm zJ7@JLN51Q3$UR{c%Zd(KwSghl+8w8ebz)a~*J<;HYv)Ndk;eaQsGK?f=HWIN=;ra{ z(&2KG7k)8$w3x1_10Ge`@{3fd+uygJ+}*0^;LoE9R`=ZmC%!4fVP3Pkn7kHZRGP?s zp&mWvzv0pTl`Y!n&KpEm*J1XO%o^i3t_Oy9Cgr-s|nlW)>L+BZ71Qvcm372)KeyB|AuDoCKL2^ z<2JZ;pFI#FW1T9g{jbmZpHTq!whLU{`mXBX(Q4!mN{x2TU;!&$po@Nud4?=-hYjlMrT6ZFDI-}<$EWu3lOvp#r!f53KX-QdiP z^V{YA@cg^Qn@1kXSo>mLN`ldHb$@U(9VGk@1PX}@?YZ&8%1YP2az1~>fH_&;P3Tm* zYk5~|PS#h}S5cX8#yCe09&j4kJ7O{&)5W{}T#OJ@(Cd-r-TRRn;4R#+(9M ziN!g`RM{tnv5bVcywhJyv>ctB0ss|$I3|7#F)Bl|anZg(55F%&bXdWBYkpvtNRhoL ze>6S1qj&Cx#cvj^AGsQmzs<%vmDI=F2Qg%n>3vfD~Tl`%=^iArnxtJdYj72?`ccs(apJAK7Kg!(>5<;eARh% z#+KJpA!P|#dS2n*3JG%Q)=BwSKI?Tb?c+9cGgeIKU9|bjH*MBpAEzcAmIn5k^u7BN zGdg<58o5C8dAV_*H2-|vjgjd>M_-f?bymM>tv^t(ps&7}dM!Glkb;5*Mwb!iK_~>`v{n%>CE3ND^2Kb$y6{kD&ac}30Ij^-2n>q87 z=qWSiMNFMFzxLFrvulkWJtZ(ECPwAaZC-W1=8sKst=D;t&b?X#T6k%y`Or6=^S_z* zzWMmFG;HTVaBHv|_aNX2SLu#PJJF>ZRDO7CU#c=(atVLr16700OTC}l(A%}uTl~e? z^@d-cvA}=+_FaP)?>hMEx4V`OTfXKfkqt{pty?gc^*RyBu@$bB29RKdS z#Tx8HvE9lYKhKmMKfUVrt?*G7#p`d;tMJxbgpRCl|L%*KWs000mGNkl+!s~(GBa(Y7*Og{-jBhYTnR4p`f79H72Iv%+6gp{@AU1mmj)y@AhL{ zpYE%k9q`PWL4yaZe{RU&O)n39e(TT|1|C(j| zf*?p5jmkr-6+N^%l?SH1G&+^HTC4KK7W_qxR83H80-T+k!#a0;Z1Vg4-Mv%4eP?jl z>OL!Sw!V-J3IBtFk4*YQA;D-Vj30C&^Ycz`799HFNf*7QG_Y0MzQMt~b0DevXnh#hGcrgS53IQRgR?TPXc8qBSfEA7}<=^1glakJUlb4&nnSsa{ zM+Jg~2$-fffWinUh@kiMtlpwsm$B179pjC3elvu29OT`8%4h9b|KIFKf@8b8A@V)< zN3o5&6^L8+fo@I4&VHo%m}xD%x(;^!9l}b{#tFyL)-E2AzIVmk{%^k$(WK3z?+Y4( zHw6?CK|sy|rU(!MfWZO4FU-II8~|=A0ehL`NGU*hxjF63ne$T? zE?k)BD7eQr;U3fHNS;A6XY?;d3`nR6(`6$bNhj!+30DEKTh26n7(qX05f zfJvaO9bNC0xnF(X5y0_*8QgdU#>MHPdOZDFk$?3jd3I4Kva19+pk}Oh<0hSM#Cwp_ zo{b{nWdG`q6_<;oP*$nr@cJFXyLEdJA|rqE7h{o;aq9Zbx;*FZAJAQ(oZ|w{7IOe4 z6u6ZpeBcZ)jS1u}LBQ1C3JwxDb=le3hqr9m{@IKfGw!+TbFIU|wZy%S)6>&44jw!@ z+hVd7@&Pk+g%}DXRCYXnLuVNFkOM)pBZ`75yiUk~ZrvW~g!>CDaUd$&ww?MhH7)mR zN)qGgNEcw$0SZ3%W%*DBN(P77I?bpaw$F zu|l8>lXfOBdi!xIJeU_1h?_B##WrRmE;Vp_HyBS;!=WEGkvF8CZc&#;yPfVzbI1F&PM4Ik_RfR)Gi z%mp4Qxj3!cvjrf80K-Wk1Y^pqmy$0p89eyeUl5mT2u6P`{MlN6rPHEBMkYuB#Vh4+-j`=*}??wLLQ)T!^5Jyp7YZ{LE0 zd!I>M{^PJ;K750}BS6##KkWNp*xA!7zkA+teE(CH!~32*ye59orKM9+@6_|q(2klq z;q_itxp_2^QDQm2FhWiN3Mn}F$a#u#4xE3KPX|tmz%lrQ2n0kRAn;0nbr32KSP54W zUdDz0TAW`{bmYj%(_iBARSKB8Pk|5RJ~dU*%;Zle7al%xVusml&LD(17+g_ur#oj_ zMHwLk2q7SflB#xO`14P`FuVr<@*Zy(Xuq?kHXcqqHdB@r6G}Xv9*ioim}BA)iJu5j zAefI6C8@oln#6qY=ES*;vFOIY_Rle<{W!4Qx>fxi+i+ygxLho}?~{XV{?)*a%pH^Q z^Wb(HHx7Ax%f4sszX6|gOza%X(H#blp+Aw?XqRp&YiOd z_v>@kk#V1I_gw+__%>`n}2@{C$-IpJ4^@2su0;A`+Y%}Z`>HyyF5Uv&yLO@Xz`-KY^znC^{>MF#>R`7nG!#|<` zc*bj5wQ9pW^!v7;kItB5eZAAj2^Mg`2n87&0BDN{c)7X6#MFy=F&2LP0mz6KU(DLM z=irpmlF}5;Yn(R#oEeIf$I~1re@0;FxY`vU26vCvb)xGH!4@Qh|4isHY@$a{SkxPe z-o2I?`NKB|Oc8-Oc!Pq^PytY)agHz#@KAu+&Kx~4|KJbX)@LLpno?3yETOe)!&A>Z zH8h|`P5J3Qqq*2!l4emE!@!6+3Ezf|JVU#Q}g5iy$NL$)!Z4_pMcP$jDiXZ=}O%{m(*NT$~sjRqsiI zmrrLqkpzMxr&tNDBu83o6&w8(eDHj(}g_@D?f4C0>1=j({O}$>@-l#XTC*=%Kf) zDy@MZ6c8o?P!0s&m!Oa$2RLu6cvNkrGMEcWPM$e;?){?)tBS61WO`8T;ASnFk7R1e zmGcr=>L}tdvel7x+>jQJdBlL>N@ADO&Rtx(b?w%b@kh!efL~W|j(0ynxSx$(Ybz%F ziN;M|dVkT^sZwD4w<|tNPR-oS_(A_Qgg+1q$jFK+jJSEY)oz)ArmgIj21!yGbjfRqIyW0s^u}K|h~?9sPfW5>x<&$D0K60Tf(4@%@T?=4j%~Z3{k1ynzQo zt;o6qoju%Ja|6Pah@pgY;5af;iTKMIofwgMBpooG-L6;Qu2C)I>k5t5fX@qM5 z$pd;uV6s~B&YrzEb9+fi;lq!-@^nscqnEAqo4;58t#9jJ!@ZyJbz!+5jk>oTPuGQ;Cj*00rtQ`_S zOuYZ^1fkB8-Q)EBH3nKh)N*UD;Ob~+1Z*HURzd|Cq2M!B&=3Km<$1Zk>|Vd>-E(Wc zD80spu^-O~YuTawhbn{Km(K$*yfa>kbAlY>{G`a|3Z-z+;e`l{6f}?1A<}&f_fG+0jZ&?)u}=xXkwto*4hP03oHE?>0ob*MYE4?Up75OU^ICW8z`w76 zbQ!gvL0HR2r`aTf7e%49qFJ^fAMNP>bN7cT$QR@R=LZ*RS+?dTCtaBKX9 zxIo{sZQEf^-kve&_Hd)_C_-}AW3B+mVsxSS9P$+4d;%1fmS!(szjE3u<6g->eijM} zbFw$!ELd%dTBQWm>>b{|&xrf|7q0J{0z|hAZ%k@MzgkYUDiNqc^DghmNceeF;g%_m zA3cn7etA{k?iK}3fdEBC;(}mBVQ^SQ zy8u=v_j+}kHyhr*|C9y;xz^n#0TVMMW~oGhKyD)gYhz? zZL-)(689W^_pMjoIN>0cV3c!@9$hS^C$A*9`!ES=m0QzxZ#H~tKuA<-UxBH?1 zuB~2j*VnH1uEpRMu5hQ*QhYh@;)(ZCmW;iA1ZD&y-LP%-hQ$3R7s~iXQ3MM3QWB5T zZs!7HtYVU|h>I}8m?EPYYKN#+JJ+ZcGJN2Ocj{rbBN&ZFy5#$>wjSMcaJI;p)sDH` z=U4EkPv#SaQXn%1_!<+q|BLc~v7pgc59${Z6VnCJ3BtcQ2(C54`pNDA9qbArGV)4B zmxtnds8B%hV+a@{{}g-=pb%gg8A;o>E{~tRcHz|{PaOS#F_R-|H;R6bsMX#A*263S zTm!HgiaJ)pJF*jGoMVfq0I4Vdrie5xD{J%a1IJeY;KbsMhl}%H%DK2>_1mhVv||!K zY0?_pox|&oh-gwfgqPnBxaSHG7&k%}64&!Ji(id)477rdFj>e-S|aXG*njH)=ggU7 z{psh8Gjp?Y_Yx*iyU4(yFgGA_;b-{FV?GDhz>$Yyio#1ISJ%*IUU+ueE5<3+5Y-V9 zmMpO>p7_zctkm@NR8btOJf#F(AOy6C3WAJ8><(ZcqaavBgGWU3Hj@V$7uQE3NFDG0 zx?mJqj9=EurDok%t%BBIBNQkyO+h(SxYG0SqB7Vyp!8Z%DJ*3rNoS9rcz?s-#a3&^iQ}gi8jY`B z-$!sX4mn?py;Po>G*M*MY&Ev6xcWBIht(Nb?TI1RPxLt6y@GqK0K~mPn^-BR!E-i2 zk_6GpNNUoyw1c}oOG4kgvO#^jYh&@*6X*(=Z25#LXhm>_Zb9V2&vO|gXmbE4#uPIg zfVe2g#4k9w&10QA4H+?F`t^;~{{0(DlFpr(X2%JpNL$9*3Qm@c0)chFA^iAkLwa^3 zM)B3AVsNh!(z5wmaiiw>!oTo}d80;{S9I$S&1$!5GLw;66i_aKp%(B}PrCP>f;#@@Pw5DQIOXPV~C67Fs2Rwz{ruu>&Zj}8^KjY zk(J{okAJyf-ePX>uqH3P87#S1HmizKS5l3gnM9COK_Pv8nm^tbVq#P`W8VFzd#V7{ zhAhyjf@{BQ)9C{w6fBh~^Ge2sMX%>B8J$(xP`qPbc5;jE|Ne+sOZT3;aCW_jlOv#I zt_+uArh@F|%;!_VIm`1H5a4xef*^U-3K~?cb?pXl!?j}SI|t4mKE6mLFvYGYV8==h z1yI1T8pznD72C9NYot&xgG40npf28Zqn^Hj%)cTT8D~^`)r}rT-29p;D3Epp1vk73 z9(CGrj1hU^yulHm#gFX>q*KXuCGZho5>m&@VLfRi@Fq3JMn)=5TX3 z{~4bHM5M@fdPACF9^h(o`EvUHG1HeVN~_uaCAaQI{?k%kauZyd@?vq$zF%fJm6hfL z`c_oXIJ?$+Xk_TaFNWQOcn==kkSh`9yGwg!2e|LOJt! zo}||YhSjb2ez)=Ct6!^-n3!nav1aoZS1w-sUX~Tvf|k&VprEkx<==)x6a*P7@J}f0 zsJK?5Hh6{AeY5ZM`1SzCd&e_u^R9(hqvTP)@j$gla6i;@70NpDPyjn205~Q)X2{4W z96IiI2=a}w@}hzxdw$+ECMDt5x4m7*jq@Ee@|BrtH`m&nw*&=M7@S?5zWQ~#}3qT{97SqTK@U`Ly2!`ZMG7bNKmeK ztLav+$pEgzx8mOT{CCs$YBEW5=l0E9BBDkrYK=}3M9`QDPMDGoeTM?Xc?7p!HET7A z(gxIc(UP6DLMSXb`OXI)TsnIA#1u=pB@a*_`H~F|_5z;*0A#ph0+87X=1`niPFTSb zJHZ>~%L)i?)vCpI>D+r{bpQSa%yop7UrowCxp%*@q@eJm8C@X@RzzH|;|$9P6eWW{ z+b~~239%tjS?ydcq*1F$PZ(?5bF1X&Qi0Ys1QXYMc&W3s|2AXspegd|jXEsy8$z!w5 zeLVd7sgDEk+6}G0s(QT_?RKRsck2%yWvq3aJh0=Zj%?1!&RI)Dfg*1?j~xt0dBlk$ zn1){gIgfhc@I$#<|csM-F~cR8*3I zbBFQ^$XalmSIfB0%1DV%$~9m(xi}9MsF>iBqM&fgqQ<>i?XcH+8m9(e6-U5{p}RM) zT~(Nz{4G+I?Kr7+O2Nis2EeVq9b-Gvv7rQ6DFYLT67dXt(ydm*?ns0nJb+<{N?)tq zkYX3_Rz#5rX9f-l7z!yx{wNqL7|RS59fcapm?&z-tI4MI|Adq_wLs`#I;WJTToJTxa36Q&phu2V5d)?KC*G+mJe}t zuyKY{lNJWT2v;_wji+rdjimkvIHhgms@zE?l*E z=?A9VwBrO_A(=@i_zZA6;8+DJgdZF(0#^_#mB9vjZ?C$ICp|R8*btk4;6nJz%^#Nn z!-g|~=w&p=xOO^(k|IMW^24D7*y{@8!GM$%r=Q=od-S$>Z(hc1M+ingy;YAVMjEOG zwxhT;Rw(Bw1;pm^jr1G=pLxsx?E@$TKw$vbo|2xDws!914_6^Eif}y?#=o9w$p$c;CaUD>#0o~pPg2fGht8d2{SS?}3eLm&0L0qw3O@3sPv+QVkH z)c6H-r2;xF6h){of3sk>9I3R&==%89ZP`~6)gI-^d*>Ce8+-jz+iUpTQh)Q!mtUo) zXa0oltD@i}D#&OG#4#C+$B4`@pJ7~)k0}g50S_V=Fq|QU3R2C+4Tki1@1tI^vA=%k zwtM;1jLeJYjk3j@VV9960Io31F_~Ps7}A#+<{^E`1hC-JY}Wb&1U>rngqT+sR62=B z;-3g4{G}x^ZVh9n*d%usNs&-M1yBTnY~XNJSaB>U&p1W^MX{C@U%5ETs!lzAy~9SM z5cf*o&fazF4X`MpXhQ?SM1r&!P^{=sBt&LN2ZJLYOB^xa>QY`_o|K%DIzJH)8xZZb zAg5=o7X?keYwND>dbJ$wd>aC0WG~%y#+sV+1q0b8qft`yUQG>kYCnuccRk!y1#oXW z#Kp78Bg5=YPTm4CLrWF2^-9u@=cYb)eQCXM1c5;h1rb-@9;L~bR%CAc;g09TYuBzd zoj!f$6H|G48X(uX`(p=W4-!)t1u(59x7%DIag~vDs0+f}fr>wuUZ|7GDMx%^K zj__!)q&7ADdsXt9Q7S(e5MS5r+LijQRFd_1A$Wc)TuLzemK1Q#&-x< zQ4)b=ryfk*xrcvCf-J+K-V}_2D#-OIn`l?(ok^SzNgJ#;72oo( zcJ0bv&L^dONg3mE4tP?4P%#mF5)^E~k%yCuJOhf8g0hP-Lu<}};cQV{r>T=`j9XCk z!LhM7tO8TVlpa|9!)!c(IA8~04qU2WJq7HHfs6t`6#@9^5~JXF6J!UC!PT$U@aX41 zX$63d!9RG##fgTnh^LvGUoQnzBEwP3C^;1SO0n;D5CIQX_`nckV1zNTDF58yjX%D- zXa1<`d#=Fdak}uP&0p8Ld9|Qu_8Bl77~`^yydaL4GC=AG7&8ut!HtcC#o3orx6PmP z@xmM5A>785_;@9G@AlPFd0vudU|>J5!BZ+dP_U+)KMw`D8_@ltfbN9O$LG;n%{xAV z^eRyp%>9c&_>1*!s}?$Zwpv%aR%er>b)%vPYS~m;a%}G>#p@>D=GFjS)%xjbYrI3A zu@>j9&KJrqVb*Vkg$ozjfBbI4g0%FE9k~Cc3@4UP1{ZuT=p6X-HQ@OaC(!YXw~FPP zfQbkiL#-NvgL@6Zjn%Jb`U#&K(@*W(^_s1$B-z3gu%qx`gsy@DRziVM0n-fZ4AV%Q z$|96%JiP)R={PI;)z9l<=kMyoAiX~r;>23saqS?a>Dy+(NzYIq0j)p7+6>baLBVGm z&NOpae+sgtIJfZfh5t+b;+^w|<_Iw{LsT7K8rs{xLE|A7_&vc3000mGNklPuzl%oo)K_%# zY7d|mK?Ek`WF5}k`TfsW5!r?J8w0*1^R5^3q(hg2I7sj8;kFho;r0*=Ds}# zJ}{S=G8vy(1}K!j0=Gn*Sty^tW0ZTeTovV90JtxYuP}kC48Gy5Vn2Ms=y~IrKKp@Q zI#`%?;ZrNMo64C8T*v{J1n&OWu`P-&kjw-y3n)a`vJF=hi;G{hM?}*%YQ{~zXGe8+ z;s?+7d8SPbDWu6bi`vJZqM!p8at0{4aMfZ{6l4YceGzQfcMv3I$-KPcV&a~kus&kq z9Ye%3k4O5~tv|}9R=e1d4(A_c1H*qfOi<7rQV^RjzdV+)P{Fn+mJ7h_>8Y2OAG>&J zA7=lNz>3q-woz)ns1NY(5Af@1d_!fHzJLEA$Vl2t@wL57Rd}9V>k*$u58u`I0>TXq z{+%Szcn7oxgL|lij8a>zW?NzA%7XnHN-85-E4D+BE+njrr8sR@`h^3(ZouGoFLvd^ ziTycQ*~=MKWQyoqIQeAow1P^(g`V;l%M_e2o>s1=xiur0N2m&zyGNZmv9ZHjj=te9 z!x@eA(uuvxXkqqd5pBJU6U@-^^GSEKgVvCtD`Z1@Hne*{QLq?@Hm~YE4N*;>1h_Xx zb=X|x0S$?vX3S8V&bz6ID--Z>Q*a1B!@g7g%m7_D1qg2N0dQT*zj7#J=iV9Tz8F&q zSFg~HeO9-~PR0Dyx*YW@=gSsr{d8?PcZY*MVKF@zjUbYzISz z+_i6n?v4U9>+9?mRI8_~((4FNkgVp+qWtV#l?{sLIoAkoCfTTe`N;!IVAIDYp7%!q zPle3;5)Xe-P*CJpzNsKwoe02|0n-@cp(@3K1lV)?dK74CyHjVMiPsE3y$V+d-Q-lmYpG zMP{=(f7|Ab?@fMbP%1wD@nAI4;>#&JL{ODF*Q?hJLOW_Ism!txH|}7CStkK^^vHHe za(8_s+_U9fTWy6(8vWB*Va-}ZOCGga2*@!eQefrzM+?uLzHkRZ0`c&A!c>%ZI&JM| zci14`p=L!kd$nJmGn-cb^p;|^6f>L_f|G?2@JW|3EhCw}pl$Du*qM;{f4HW>aXy+-$03)=00xE$3 zybY_)JJ>s_&7^AGKB)99=QZMYDJCx6KW!}3Xfa(O?w)ou0(`8D3pw_Pa7LiC098On zrLbaWCA-CJOHY}5^uxh>u@5)^yaSM~eMYwOiE1{^20CYjFOP^%QP_}mfaG{UXHNl& zscXgqAHe329A?iud-3a!UKq3yfal`-aF^K~QopH4f5@uzFuSOJ$|-+B@4WUa;pMFez;qS!BA++45> zDn0u2?EiKhl~&WRv@m-mWF-D6>wiPD?5o)yZA?nKw1g>&mA5Mslu5K$d}b*kIshNI z@N;=(IHL^naUM}{9VuP`G@c&8^`7oEuDS7Z4_(xypdfLDD+N;nlWl}L`!;rM(sl^ohVmMndl7rb&GXepwjO0w`}hH+72XZXpM;E{ zXs!8al|stba(>pv!V?F-!TwwwJV3kAbNmCEGL5pJb1>6k`GJNO_l z0wzHqYQGwf2h|M24ZNeoaZ8vvqB!gDp4m{6l>|T-?uAj-7@*8MgoC2MP^`~SiWpj3 z8@fYgrqVI5S}z3EZF$#^>)`rj6h!wr&nkw%j^#v66i|VPouDWkjEXpJ2^8Kh%#*QC z3b2V& z9+SN8g#Tyq|F!~nhSaUW^lqU7T0%97hczc{$K~ByfAukM=#6iWH$B~JhILh}w$p{h z1%J+Gyn)WO`1@Ct)#EBk#YPOSoBHv`p$v_A}=LUO40VtJlk3#VoK*VQ(s=81VrD^Iv~Jvt#cB%t}j^jmx5y$Z{ z`kt{G%-a)NKY^x6Q(CEGv0U{Ew~3oyomj4MbKrUI8sGq4#5VLb&30tNCS`} zL*SGdK2t2DgdnGwIrDPbXZZ)Voq@Y_2{!vhwOX6z8eFs29exJMQcoW_Aec(CCG4XN z3NiQwHVJ6l@Nd5q!{PspQ3MBTna&WU2$CQo8O3Burjn3_$=gEBu*VJ5%cqf2bmbCF z+H>(XgujtdQY$by?@IdTqHH&zfdUyVnt~%E6sHkqk1Hov1WW>Ep^!3+8BQ<52}PyB zwh2zK3`}$niyRU=@tYf8kim(W8!ne#JUmI1O?eb8EM){L{+a}Uf)Yeg@Cho04e2nX z%$FI9;N~oO*B;~3>ysP)P!}Tnr4T2&de!Y=cM0taOd|od!B80OL=7SiilER^+=yfU zL9h#8NB2ivo|jgBc;o9C@o!zZp-G{|m<1iR!L|A`qEd4j90X(*bLiAoVmCLxrRsj{@vzLO#V6v*QnP1Y8OKo6L2d?X~ z>D!an94V*_=db3)_vxb?*}eNaTYm07t%@*|>;&W}IVR9&s*6ef9k+9d%;f^A~YD%!%~VmDC#upbmx1O-%f zTbU&%bLQFkn|5+E1V?B(a$#u5BTr1V>0Gcs4B3Rh97UL}U<5@;=X?R4gIYik1l;^e zm@k;iv-fS-H0cZD@XU%@cj>;wXtfn)9MXAu2dP79)T)%~@lEE^yu7^vQ}}@&fFycq zoSkb_iu)%rg+GCN8>)LqWF6{c@F9fYqK}ecD?6Jsr@($2B4*e{gTF zW7b^_Ge*9YzGcBb_!`H zMz-k-F$+``t^K*X;jx)M>Y5LYD%bmlP(dPGvlyxX7t9J^z*q%M8AM=&GIhz7t;(5S zmI3@~rJD^mx>Re@>~*udUpS!xsZe~Zh(z%2Ab_$C9I)#^(0DLxhp(P?G!!DpmW)$p zKKp#c3pXj1qvGGcv68~VV|IZEnt%ZQAD&bum$bYv_c*azEDSrTh{Q?KNjI(3f2A9h zHS|a62yWGCMl-cegYpkrlz&>1dx`)2tug|{MIUUl+pR^HF7w|8u*z`$Zr=1ovv#MQ zKmWNCFpG*$B}EU`(UJh%STmFq&O87V8f*;b6}a&8*a0}_Ou|ao`v#s$enTgM!K-iwbD9D$6ky000mGNkl7a4d=`^_ejziBJd4%UUJk$FM=S*z(t)grgiqgH3X;#juj6G7IJWK1rxl#SPKJi+6+0OMO+^V z>}f|&efmk-MKo|&=N^QzG#wr%MA>Xm4lnIYnh%`}LxKQFMzy%WJA1J2nNL*n^-8J|j zr{+CggIJ>zQu*EB{P?0UO<0?WC6cEvb{<_431lK--?)c~L{V6AIM@bqANwHLO*U&z z>Jp`R&juuZZ72}=+;ornJ)e4yxCKO@IUtIt0+Ejo$Lkmr-mW3@7_(9M(LP{8Lhx3J za>l9C@oSeYUk64bHjLEoMMy}nnsamU1X1u-`TJI?02)DWQtWa%c8d`v5K(8SZt(W5 z^xeT9?V|8U5pTsa1Oz)VgL`!umtzJDN^E7h`Gw`zzc9QBKgQc2sWr7lt2q@Cw%?N_ z^jdrTbYjzz_?215Pk-x!FG?kWq8$SVaH|F=ID8g)ngZ`Rpc_Q+2$29mfn`{Z*}yNm z-qojiqt;Uz4*&QjR|papnoP+TrwgWnQ~34)C}W_YG@|%! znC>A1e5=Q_;k17fVvSl=K;7p{wKW@hIaU4(AoSEd}R2e0ksMwL;IaIJCw-ulojkAl7_uqQg z@|P7rAL zWTi!?d~^aM)DAKVl8ly*BI^J_!Rc0TvN4ImRG|o52zW;XN`d20z-89GR)qgU9p0=t zWU?zSy9Ozr#GkNUJU&Oo@D+f<0Qecaf)TUhO+=amm5$TJ@jBYpK{@g9SDb2%gs?X% zJ?gtko46Pv9=Wr3;fB1nQpPYj+neZy5*z2C}1>HV$ZJC})0DuYb} zYO{)>^#l+KE!nUa-#k`QMd$DB%v2f`v)j3g#416#>shN8FHXx!PMzy1C?y^m0t9DP zK>?x|1BxcaG($09INc0ezY!E7;HrR@7P*5;OVoZrU8>b>&=t`L!qpJ3TsoK#Z%;q5 zR8$n1p)lGJ80roM1-Q>H;IoMBNSH~m9h;~ovQzbzo-MompL@)hn-uCQQDS)flPDpu z=|q`$cr)zZ)%@!brAP_sF;oI8_LEUtnUZm8dd{kEw_QiVMA*|tub@YIerR|1ji89f zEk6-(Kzsxo5a-swFoWPqqZ1SeaaDsUCoAFXzQom-eP04C$jlcMYG#6}QU!p*E!3`< zN^vEi<&q4t3M7q_v*GV_4mtAIs_Ti~$w}6!P?o^1vMXkL8E$S9(FWd5Po;BprHUxY zWw!F$OYd0@`(^vaA5B@=8*8|#m>y417-hhPfxACk2^b0jpL75QJP+@f;!gx93X6ow zLPQyuM(gETJz}hH+}pu7^>+8v()`4Pca*X#`zW1ptQ11Qb+6 z1_1?&snjas7c)QzYu)|UAJ90*8a*{Z&EGcbt2Y!uK>I8Mb_{?wiXFx7;4^V3Gebqd zGNvt0-zKD;Tm+DS$Q%(Nw4jdLeC|&C3L4gJ35D z2E~-UYr~c)Ge^8w>5I)`Z1%aH^DEd|gIt_EIK`42T43LWpD_f9ZJn z8hznf;?KrPSzd`cKV^ecaq>p5vh;)6;*85kgCX1=6sBVqrYPl>8(+!aj(3-H=8YSd zzww7PABklp$^Hfc0$OG?(7-RkMV(RLf`2WqBA1OREm)vJOYzhed#;T>sH@K6a*T}#Xt4YIdo-B_q=nWhSc&FK4K# zIcxl>_3w=yy#2k``W&CPu!n8S!JAGWZmg~T(lzC`T;ISbE1yVpEzdG-jg8?51;Wq%>Gyp+SW%wwd@NfyR6CkRPu+AZkAM1Y8 z3o=BPFDGqO@-Ho8f|W`Y((4d@qzXhJsCIzV2nrYh1)oKvE^EE(OJ0$qpym+n3K8en znJpC8TCdB**+nD@D1?B38&LtJo?#y-5s(G|!8~9JsBOgsa`M43g+H#oNk{`bjPOv0 zhL5)CTx;SE2FC(`%^_5*Z+t9V=^4Ym5WqfR5e1-FpcNIU=c#6v{QTYNXD)w!)2agZ z;nKNVrJT%5I#X%s9a>{qTYlbre(vbL2PX`FcKf*3U%dGFWd2_14(Pw1{pS?GXcSyq zz2siI-}~+AkN))arak+NZQQ#1i@3*%x+0co@R+Ppdg))iyZ`W%8U521?7C;?$afrS zLV|qu;>mApMFl&<-POz)ExU-w48;k}ET(P9 zusXgE2i;H$^45$g&DpVZicp+ z1w=pgy!xTH!(Hk$pKDin*8*&v;}8ZwQRuOC0AdA#Zk0#@WB{;JyPXv!FU`rDx8laP zz5ItbH6D5FHPNry<3J=)LsdXU0#sl~6$xTpz?35*NDL^Bw4zKx`n8<}a2J)b(}z#Y zGrrpIj_-6F_3ygig%+& zOn)k%wi@ zd`+WK6Lz)<>-EI5Dq!aQfik{9MmKnpSo6hTp_ zWcb(Qp;NJ}i_>FIewjp+AH9zjvEN~6`FORrXJWuhV} zRB+N-+yWw$TH(f8U3x977Wdvw7Scg6ummT?k-Gmkqmgc3v~t^-W2Y7c>qNV^Rse?9 z85~v+yTec}IiNt`69!h1;(4qhO&I|qh@gl}GSsN`Oh{Cdeh?cgA@cQ5a4uzskau|r zzWtT?IXZVWD3@jwUrvS7kP+KP2&mBFa#yQVat}1?Lt^bjBdQn$N<Kye3ilHL23t{)lzQL;>za!<{pLD2PVb}ft2Nv%xOfvP0Jr*zWCaz{5V3t6q2rEC zV-En+0=6Ik#XEoN6ppW7ZAAsgHZJ>q;)Z3*O5mTn92~pWJdYc^JwMd9Rf|vTf!wvL z7Di;P8dpOLv6mH5R$`Xbib{5I4N=vs_qtQV7PAB6#^3nECQjmx@Vg2S7&l!P*}vbb zraJX|TLq25SyqbFY02@KKQ4Ou*u=LUNss^RX~;PCy#z{$4Yd05pz2*}#r1kW`1Kh# zzM&&`?7@91h{qR1pDp@yx+ybfPo#@P4aA1Ww+fdFKxyCsu3sql*V2R#AcONR*dvc(Jac z2%n|1NZ$L`de73C#@L{I^+ zYbd1vDCFR{P(X+yanp@}f}&|hYzW<&r5eRV6kJp4N!4YdOxzKnSkwSwWQK!`%s<(Jpn zbIvXRxZ%hX;=~3WpX{WmRqs`sAZZxVz}B!nVB1=tf&i#P0N}_42K*xU#DL(6Q(eQL zt~+66S=pP;9y-boGC0Bm0}*Xv9@2PK>jg|FX=GMxK6m(?lpntQs1yJ7MgRa107*na zRB`)9gWHXH=jn(x-RfT1@WTwtu|16&3a9s z3aysDwDf=_>FjqAU7mPO-=g(m2&whHYm2s@g>~uk+UX77FD)-hTW@CyQ$)QNxcan3 z+63W&3TwWM-(Hw{WmU9`iUsHd6htc!w9pC)p+G1QA_MSPppF>uA`H-4A}$IdCV*fW zA%a@t7u2t2=ia?I3c|I(N;bW6fMlJTEh%MXj7y(FP<KPx8dMOtks4G_T42$Y4>)pKo zolRR|>Y=nBzu44b*sCAto3vV}2@W0S@lf-5E&2``mG<+`YfP6ftV9=;npJL2Vy%dl zx4Nj64Gm|avg}{;h*}8JQk9MfBBQeDe97sZTK5_?x|b5c2}OsLibSIct#R-Lr3nn3y&jkP~15@jCp)t)rs5jy({+G=V39entlzAmyFlGLX!plU$ zEjn6zq$M%{!ZGoNO#r_L;6D^dR0#mYL74@H{o>D9A2dp7iJWoho$L+E4#ACA%n+4x zXzL+%C%0%O3P1=4L?8f|1RNOxfC}5Rqq51EDKQ)$HXz~NBHTp)Ux}Je9!Q)%=Z!BD z0RS=a{-A_lkVIFHAS%d25)@|2$vGR`>LCvnQvIq2oR6r%8XlmY7@JaA#^m=WiW?LF{+-po?iz*CKVl~MR9aDSN*0sTgCkQ((Hw^h7D23iEY zmZ5+Xp`xFtJK!LVARlgz`50R1_lIRjfEG>z9k?PU4w=B5El-SeHJB zQdubj0i87hM6Gx7D#|Uji)JX6Kmb9(OaVY5wo*o{7D5Dffr^;Tz)EFnl2aD@y#Wco zhoG`rFEDI?0HDoxYv$YhagWqPi65)Xc_*04QsiVRJ7YP1)aY8j8KGX@?MwodaFS(W zvGP+21^)7NPb<=6$>-MRXJ)Rh?@p93XBj9Eup?8saNt<+NdSTg;wV8rq9B3e8F&PQ z5Ks``B8UR>@bBvFAKeiE5Cg7VEbphmN0hXK?+J>%P?ROW`9d{7T30c+BJd=yL~sQF zK*d0)cm@#gg_lmwKW5E7GaL5a@RcV334VG`9ruQ@AKTSVUc9P6CygkMG@)RLBk44A@B6ZW$S*p=_}8mXC}G1Hf%k@>RP=H!AlY;h(rPOf%g9J{`A*}wyyo>&it`&zZ2NyBfEc=it|oOj51kks221{ zhY40Hn74m0_URL!ebi~oJEOW5mO^fDk6yE^o_-AlP?#zs^-%uaqj*w=*6Vi~5Pqi| z_8ZeP@(-Vwr?HvKh+Qj|dDeK$rCrx=0y+-(SmW;hlz-bnGYoCwzRmRu>}&&-TC0e% z{oIj7W!u-@?63Y_L-)U&eLM4`#Dlwb&+}1%wT=r)jY5GC0SF2TL#XHy!DoU32?zv$ zV2MC62Gj$FO2NQRBrv=9M*1{sGd4K(^_yIwyfx32TCN(Qp5oa zX;K0}F=i;ai~&f3UAE;XeV)7TyVbY8K-5=@?npcX`Y@svsYU{o0H7gi;Pi1p0wjSz zfB*m?1p5tmDIkLaE$TzI1+$0OiG2iHha! z0d4#`_4y`p;FwR{qq@Et@tkpqYx_>vnWDoVSuee)a1i{4EABZETL{T`Z; zCXO+#E8e^A1+_W*sES(cilFth1%!35N4I|7;#=!slc@91DH3%um0U8P*!yLN`>Vl|ner|trF^t;;mpjdRUYJsr5)SxExCAdg27UjECE$YMXg)8 ze@IIuy#BL_U(MELLE}ZJUD1_gpRk=h`o?+Z+&wrThVZ-Lrir>UcA|a%sI%YY9^2KI zo!R}im~nEwRG5*hE-cJZ z`0$vMZ^!L{g$sYa0`s`Y}|CBSIfaS|JAa+@n)8JYL3p7en0`N#E>$T zfKmY%t}YZ^7_J!T!`ey4f%zrhe1QULq}Xyrz*R;6Q0wkxzBL|~1+^du1O=afgrsmA z4&3+0lWIqd-2xDJRmQsv6x(tZ2{iB$K{lK7Hmytebdhmn0X$e2fod^c05^YLa=nZ3 z@wPp$_d2+9;6r2f^m;OO-^;yX_P)}u(au-8HQF2Za@V~tH2dh_yS-0Af>FL+=MN-= zKY&viic*wvw8(U1b55XVO&ZYg39rZjlOvlwZwy3af^b_142;wHHZ;U(BYNKcozQLA z_cvq7k|maHzij&~D=X_jq^rn$)K(N6D=2&1RzDWx9%%`=8qT;PVflr8Q|p_@Dh0EXz$dknEvktwRrur*r0B)!Fo4e5u~hK zKsmhSc=%4$E6o=w&HaO!HG91p(s1kt%fnwEyUBat3+r6kJU%35$PlTr>UIyUK-_D! z0JpFXSWXZgs4#iNh|3#(+V+-&?=B{47k7xA~^cthy?)dngMo>5P}gwEC45! z4AK57U=~Y8()mmC*P=gto%jQi@M<~Qp!Ta7Yt=dJgp?FZW!-X%9q6L+4{cYdGI*O+ z&LL$wr=WbD;Z8rCsfkL9t8n zX}w>q25!ME{?s?y*C^cUI6gjJNjY(T5i2P@S+AN7ymbl)z=a9#426yXpuxu+1`cHq z00;`ZKm;Hl0+VFNTNqIg07OYNcm+M_6V>4vfLr|9{c}o4)`e+WTYd^fx{_>F)VZgA zv?uTT`c@xSXcpaA6HxmFfvF|bG;9w^^EO2ad;=_?&Iw#O9RNTGIQl4JpG3?Ha~Hr@ zi-)imlfFB+Wydaf5HDxXYQ*3Zq}VJ8cj}%;o#;@tyKgjA(5u5$O=YoWDVfTXLI_Y1bwsd&itj}Lz*AD7uA2rd={e`W`eM=a_)m-v2yzkS5CnlC04e~FF_Va3chUvJh3oo5}cWtbz?Diof^FO{AjgTjSfVV@ExQb^aMa95@0F<0xFy+ z0Pr>mHqMnm;#~wR02Sy6x<0;Y5N)QMQ^!w_PxyRJ8a$9!jEcBGa`Kvsig)QbTlw+|bP+i~=D92=NC&70<|E6Bq);F%de-tW=MAcM|HS;%nk3A6&+rOc@FW#me(aE=eT*e^4Md8Cm<~k~R9z1=E#u0n zlc!H@ip4s z;g2HT2`}ly@mwJ{cb^6=585WMJG*$g)Nk4rZuz<3wfber%MRj>tiaje+6wbgFR{~TF5mETFick;{fe0#~ zdab)xWb}Kr2hQOC6Cz?bNH}f-I?lmHM zF%gd&3NlVtjsqYWTx0O4xf(w%21TJInU}ZcT;6=;PWXQ&U-&b~mEvxgV=KILZmU+Y zmkUI}ccO&o18cOc72esSQvAJp&5Egfi`vt@BZNO&IZmY&?{8*&ywSGrmwn4h)3XoM zbQZx^uQ*O?2p4&@#spmqASnLmmkTJ3qCh}I;o~5oP>K=-0ZleT0p=TJ$;~6A`orx; zg$|nS1;2I03{k0qLkCk=--lJ``bZK1l?tZ`K|&u#!1g3;iwiut8jH9>5CT9^Q5Y&m z1is93C3f@SLr15aU;pj#-)iokEc1BEJ3#Uc>0NFr+FzV^=_VKOdcPtg)sl-xdqq?^ zG4wG6yQR#Yo3jqko4AhiHxkI%zfrrQD!aI8*8!m*^NfJAASo(f2B*3%p*6!Rif_NO z%#3Z|=2^q1?IW?bmp(W-v)_6#b<3Kc$7t==!YK5o4T{;Z3P_H-2;B7$1p!2XfN%{^ z_$3h>d0ZJ#Zb1|UkR?J?etuni8bm)1cfLqu^Mh%^bd34o;WnE+rOcY$ge2!yz)SizOFjVne^UCh6Cf(P<43L5W_hZRArZcRPA z@|MrNulLxmZnsd;)4dH430aKpkEJXb?4`J0xQ_C-62jlAeYJAgp80vD>6hZsKeGx7 z0joysB|2Ao6pIPMZ6PH!`JCAz9}{am^qlh(#;X?bHnayK1tI`bsqs`u=c2C>JThePlsZt! z75>)Z8on(%j58bD+$A+Z`UoNcQD6u>20-#a2tmNMLBVGRL=Zs$054I2rrr`zb9r)V za?-4%qzzWgejtNKM-L~vvrkuBY5v}_ef#%U+R4Z`wQrNy{&t>Mm9pYgI|_vzG-~kjf5H$u(6=&VSZ6IZryO4?I(sz`Bbq+Y zdjae}y>#;QQn9q;Bwqz;I5XfsDgl832*^GjP~asViKhgOaN7_0UvPt)FX9tY_bJ)cuepHcUM&((VP)>~I}{0@MFatXyHpr~h`c6*U{@&U zzyc8-5_oGE%}74C{Mh#W2jBs|6gQ{FMAFnZ=cRuR84FF7bv3X*}-vbU_LMHyW` zjbb;MvoCK=Sz^3vijC7&S<`<$uS`;sh0=m;6l5wWB8VP7QNbJ~zZ|^vx;TD7k>T%qL_;cq@9-rqz6?3$=0ItLa5?Wuzg%8~l$7u{IghMDr zaOj1IWg-f`h@L=?3(Bf5rk>eLs|-@iIg67|yThh2PwUXvu1UV}8W zL;z6&PzeAPn_vdl+96m8NrQ+t0o&0qI|OQM5auDV!rbiRyH>57`yjsY#co%G$d{cw z{ledrC{32i)A^rvtjNFd9v3Hi)~NruRqas&@Q6`hxY`w@oiuIR%2x}tJ~tx&^|bKU ztKM8Q#W={Sq^GRcSd~&#Ru_sM6^FRiWzIoeG?Cx|!%QiVq^{PYXu5QxC@2yjcS!n6tq5D`mNxItAj zVCd6}5^m*GDwTVk=oe#qw670%H6Hy*Sk3lbrcqZ{UyVvZfmeYbF%U%sM4TZBX48|wvrg6`V zMK|vNV63zqmXVbpE4B-o@R)JXVBmxLV$8uH{>!O7+xJbh=M@}n>Mw$y-VSOMK`IF- zj4b;$y_PooNzstOQbQ?U# zSC6?KR-bwU&8G6y^3#cHA;BnD)?K@oZxgG|wHesdgvt!8Iq65Q>|FOFK)g~J{$I@# z{%Xa_>Se`G%F8{z_fw6{UPjO|+L)x$1P1r1@w$Jddx7+?@(N9vDc^`bo>4X0_w5I` z>8XtFgOZoJe`8wO<a z80k(xE-gW(3fS&$>gN#IUod-Ad43$`8Fa_RwN*-hPXj(x*R?NR+DFq!uj z>|XT~7BYle1M!LO+Rf}+tBsYZaDAg7naj?~Il1@bZMJZ0>wovTVE?j`@}lI=KsFWe z(-K)yxjKc^e%-6xEB=+yE?sNPE8n|ijKu67qHndn0F}E-mDT+x^5z>y<*fg4)i{f( zI4#Os1#Y4hxQoIB0YpIr4H3{a5>QY%kP6`!8J1N5qJWBszP?tT<6iz zRMLi+^RCQ?w0Lu69r747FOUW`e#s1aJw*f^P-;(0{yuH@j!IVxMEP4m_*=E_P}zL( z;%;qm?hX;p%th1!=2bnide=VBg?1dSsjN!=597{Tb5iE1Jbin445;1~aR|Z#8|I9A z_3WiH7iM}&w6tY)4S3+G5O-}vK|tXpphn?Uzh3puH7|agomYJB$P$T~O+=BPoS=gcQu|qTqlfC>p%yJUb9%XKp_kP49-i#d zbyBT6;5{hW_-^3ba%)b}?m8}ng}De|z+*Z!a?@d@B^g8!mu`F(9l{G0Ld?@5rX>b? zCg3Uopb`~Kiw?n7Ndy&ugYYXpDuN^eNEnN_3aBvcjB&J=2<|FiSr=1Q9NM?B@}op} zFfLseUw_%T_8W3Z>E)8M2WLWpvC_}7wVlQXsaykw$V7C)1rAhZYiYsRW0SJuE8i>J zjnN5rgUIbPjP&%jHCx0>=e`q}U8d9ysxbO{wkjT>Jzt|mkTR0@hNmIBqC7=-8qW=hXJ zk+5#_g7_ITDs?B|LAY?$clNCFDu|le){6;mnl_KgxUpN;(!TBAGz2tkH{NXUsi#l{ zclAJp{LGEQ#iaF!Q`uetv;Te&{yvF2P}sDzJn!hC$+W!i450)-79_zpxK~Ky7G1GM zW$m*3-79`!mru^pyZiT4MMw8WJgkWK2Q#o;E0-snI(BBhk3{Wt@etP;WYD3os!>=~ z=&oo{fHesGS%Z0MOsf#oSmv-%M6sw2#!OKgGGrM-Nqs_kd(BS+d0P^|X1DOR}tb~AvZu393f1Ps);5;);1(EvBz0fOD0 zn{s*S(ak?>0)TsF9g+6m3Od)Iro^}Y1iRUKF8{*LxsWu+S{Xrahz(($wMSZI7lTZ- zAP`FJSB}J|t@v&`;@{Kp3E05B3q~U?II?MtD(A`$d^g5`F~B!~-pUzi^#A}607*na zRQ|2Hz7;xXws&O>bB#BrotRFUnB~%>+f?7aUq@Aj_n_phTD7D&l_TqM&Ofz%l>_F5>Z3KrI12D-I>7 zX<$%8hdeARIdk#!xv%5#4fTVn)7o3qnJbP*K0 zNT_FEcU5S3AH=H6#bE_WNr&ub4vv;ost|QRfL^jPjFBLeskD@5XE z+eucer;ePSy(;HMW1K7RY-Zxf70`9WlcZ~Ko7K25rgw0hKiO3BZeUwGlmR6lXrk; z%l1=iy%~7hUrgW?5SWyC;d@hF+FT{D$xyG_Er(Xa^5K6^=Zc17w_9Ujr*klaDLj0d3n1xPS%%YT_pJGR7Q2D&i;*^YSkO<)pfLU zWlYLjGp00u|M%17M*UbnXJ_uEzjc0UR4+Jz9D_@1*(9$EI&DC z|JuPhD_*@=S)F^8C)_K-mC;T8Y~<;J-M*4S4SofFI;4{r==o+?Rgv!^P^hUR;3df{BQ<^3wk=z~UHBk=?tsUgZr#W9 zBY}??t=9bQB^moC!5w~$<{f8rQa?U;M6q9FFPlIm1$iSXrW_&j><88jqwlNmb9uY3 z3V;o=^RrX7v-Gnch)|kmQ4z38l3rIUYJ_iW=NI4(FUcT#X}K!xs1eF@Hj(NN8QlU~ zJ$J*8Ns#OV6IkN$#Dlx`?wu+svMC6UeZ27K(uoT;t^$q?FFy)Ju4`@u#BnHy1fY== za28|;#BE`9odEXYveeD%e;PY+{D{g=QvT85$B8=UusG%&_AV*OO<tg<;4O*Y-W86YoKMj#aJaojuI|Y2f z0vzsCeh>1EMx*@RJ8vzzoRYrToe&y~7F>sxTq}rZ{TcAn9)7Z;Lq*Ub_Z=Vtt`aB= z=oaz4f)4S$5Ne?UsbtxF;e5(xV_tpvuKp70_l6#ae2W<}M1^?ROT1SWLWgTyIy~`= zHlY4I#h!b_mb7t%Wy^q6M8#bm-fs*@&m->h4#YovqD)+T1*!sPYPJj6Czq!ExO8gX z?lGk|qTjFdodd$4w)DQDmIkCe>hFGZ$UWjyAy=nQ^_x=p6kGdAjdN9&$6r^K3i zbhO1@@`Eb$;mIydTfYn~r`)!Gh>VO=$1VKkk(XaFzBBCQ_l*5MjgO6ti~DV5xr^gX zOiVN-UAQ#YT4qZ1#M2y4T(YpJ{I4(7n6;hnJ)|`C&-8=mzm{+~m z@Xsg!jw=1DarxzEkBnF6r>~_Fp$tSY>0N{L(M{*p>F`*OJ6Z0sO)uq;Gh5%5GmkG( z`_&xd85T7Ls>SG$kfWj@T@lh z$}+aHQ)`BlY#w?6t5>R|p0yr&MD}YiwNz8BI^%yuLu5={mVVT7ZvXiFpI*wqdjD7u z{;`&^;fo(Xo0D@OVZ3uedV)w5YA0GKQoDIOMLjYpEaKU&5PQpCRmM6z6mEH|xN!F; z@7uGIW`Sp&0UjM@E_UzwO*BB97&FAEb&UvroKjaWt)dnMq83bQ_dwTLb$Sk2ut4JV z?+2hOWcmJwZ|0|GXB}}Sgav3+s00jOl7U0`HK>Z*9n#~bxz%NO0X3dWN8J$2xEAt$iM)EqU9}3OstgB zJ8&xT4pM@6lLsLE({o zhmTI(v}sfMJ?mg4giXaIX#!J91p)hou8IbkXfDe;o0XeZ>f7Ao<-c7G>x+d#>_UUd_&Z@+f#$WoJ%hsP*M)QTE6j(2jV#QA6Ee6 z6uUU%`J|Hl8((9l%-w=$2Ss9}*vTc(sbPz$;hmm;9%79W;@uuLjVdo+-uavI{VTeQ zN}0_ys>>2h!(M~7OrH65>9PGQ^`fOzty3&znJHV3ul?!M#Dy=~Zzpn3bJ&%Xq)i#= znX6IG6*o};0}47SBUJo+l7I?lfIn*l3NDy-LL8vfeBn~^=Y?69@B6XfrK4MS7M(mc z+u3T(aRO?Vu3Xr;ZO*)x%QanEKNFX}9(rT=*E7~k z+%|hb`y*d0?eN8zQBQ6DXf*dxZ>f3jA4iTHX+C)&>9fMp(qt_*=OT%q!*xkZ2>Sm} z0cdIUXmMSL2wEzz)U=Fk`}gcveLr0v?3yE-j*qu}`OZsIH&373I$`F5cHd0-{>?ns zLA}&IQIo-3vd46OOV5&ZX&V5HmAYlFttPqqM|}7y)akvzCU|-hML{LED;i7s9_yKP zPZe!=^(Z#P5FUsiJP^I8=mbldIOtf(p#uYjg0z+B9>_omSVSimTdjI;_%wcOrq45z zLMl*iyR*FYL(bc;?0(&P`RH4sTJx|jcIY=}a{?mP$FDwAl(4FDOLZHWdy_He@ctuv zcJBFDmZ^!mK>Qb7dcr`5Zjc65T8FdX%42N4tf(Y??aH72Z`7z!x%l|cgwv;O$39z~ za`Ljq&+gZ2wn$u_v*w(iYQ1puGfrFVDk~W%Ie&Y zyac0Bp78$LOD`r}iWeE!b!hz!9MJL`umk+qQ-jY`QB3E~U6}voo5TJ&LE&fnUA}AT z{^aa0H34lt0h1}a^w82yx$zypC`uS~2SZ{MJmS8N3~2uH=O*u%m&~FXPjCqcV72HA z&u_5qUe>qx$NqQtA{747>p@ch2QxAjzkMZV-H)$|$)_f3ZKfPX1h5E_VD_%jLTcJ> zX?Q@*fq{4090Rbj?ITZ_w=RC(oPBW&GkDbzLR-b#8upps(enT50>ny=M(*>CzZ*zS zPM%R#TymOguZ9aht^!U1fI~CUE*2IP>`O^W{TjPQ5$Pgeb*-(6XfeyR^N^37 zn?CD#d(DcR+|!?wWiM|3ZT9*FU9DMX)__~!^O~lEw|e&;KH52a*d6Ot)V??OY11a3 zI&=2?Hw@3G@NfkL#?VSqR9VXZ-v{gN-3R9M?c0mLNxe56xD!>cuFkHVdymjW^;vKC zs5R7HoU+k&?uX8$KXzDDwrA9xPI&K&!%evnBlI;CjM(rXpxJ=aOSVWtl!7mzD zM7+DY9YjW|9r%^q&d$p(Jh^5ZJ-e+3(4uWnqtQ@ZhoNhHhy47!U-wUg0pi5Us@;pc zgoFfn{rb(zQZ8Rf0D{LpxETfnMWNQii6=k(^2>#r0M!BEK7?4wz>{07*na zRN+~*U7p-K+@;gB9io5B5r*=d1KOmu-AWFB|3>-#iP?AT1il6K>iSh<*EX*$C<}UG zYytBzSOtRqK4ThN?n%fwHZC7VyMp@TS#1J&-(%25g_hyz;^qguU-_gjt&y#k_^c! zd(^}>S5jDd1xjV9QOh=I$O~N!j~c@rGfW;J1E?82Pf3Tg>30a_FPW zt%i^%6(Z;XogYb9Gzohu`*z8~%03@MTRyJI>bJslB}2Q%kd#_1K!Z@q>P4`@W51 z<@xDiK!edPEnnH<{?w`oo}Isn@aj6n8ISnxC12RiotqA(Wu$+pD2ml$u@_ywoVsA* z#5;UPbEm=lxqQLB?POPd+s_+1cl~~fs!`ufieHnVlDQy5PFXXc==hAM%2z+Rr6^&< z9X7exSe#Mq-ud%-9?koIX7zt~N}1qQOBPfDAp+CW(gI!H!5PZ#W&Mj+^g0X)Mj31T zE5f~;=)2E=w0QHW4L{A5&mVr4<>#zZ+wEoo3Y0S@m3!4}D@3;Wp0#Q^p?d#M>tW+} z9vgp)ylw2Z-2F@Xv9r5+GP7wp^9pTCYRCK}20gmSZ$RT0-P?ay?_T{DIX*sKId<&S z(!9Ll#4D-k>$Ys!y9N7;b`ot9x9vv@)wpl5=MLfxa)c-x6kiYt?zN&LO-gCB<531H#*ueZaELahe~@dBPlkH7e|e3rUhj=6 z@2JVLZ1R$?>@(VqZ*H5Px8v=ipZh1k@uk20nFXG-`Sx5i2v^9T%RFPomWe^3R?rgw z8JwWRrpwqho1IwIFMmbPHT;K5zsc(dwD7J@>U|s|E7)KxIk|nxjPk@SPZ>Zz zVd{LlUo}@%i|!MB22R>t?d?OWea0q?^m%Picy&vJK*SX36`QQZyZVcWak8WbnTPm%IP?B zUdkk@*a`)m-;4TyT1(XpI;`?|;?-|L#?P1-^77JW{kx271mQhAuPOuz<}K9k&Z7Xn z?G0`%o~u!_`-hL!dTHe={$swFt!eY}a#fw?tJEGfzG4Qy{#F_Ct$C>vAno{*roBJL z<$ty4-O{ZicS5$~qq^S~)Zl?`zC9K`=@k9=BFUrPmo|M!cZKQ|{koCpT zW~IM;-PfLcY7Mo@u4=!qzS@SJ<{G-by0!L;llIp(&RAc2)XEt_!xs0iHe_Ba|L12! z1P=W)Anc8`UJZ=f-9nA)UFwWp?Hv8)R|XC-#L{<5hj| zqH5mHO%DxxZg$h^FD>aB@n-xxQSWVD8aevoU;Lh(a6r@b7q$0pKYW#~ zR^O$?+K4C2;Nd~h(Gh@ACz@NL&pWcjzVE9}Wh=TYtx z(`q$#=%SnKbZON(!J}EH&4%Wke$X|1_#;-U!Q*y!e~rzq>@Cm9m{W58=y21)wH?#e z&x*-jKd58gx6k}v*`5!7flFJ8aR`4zFbVkfH+Z(6+04^<$S8ZY#y`>E&OeqoMLtrl zXeEV;AP9D zZ|$YJynC)e&d=8}8A}x~Not+N&HrH~puq&G@slfqdyM=#;OV)2Tq5H<5aEx9)A2Uk zhoq%08n`=s;-gtqV&wZ4~kCid8z2wj;D$a zZSGilY+L)%lY6@6@BV&Z(vC0Qxbp6lN$Hc@e3|jZbGu;Y%uG0a+V;mgjhLa$TwEUi z;wkseZ!EXh?X}Y6+W7r)UHHRgf|o(Ya~=Nw`sn5S0&T|5x%9$M-Ez--{buH-=YP4= zUwJ@^|LX9+rvO){<8-{ymbP%viHpX^M&@t(vbB(TVy4zyd`?XjGZWR!B7oXLRDmXs zy4{tggT8itdeScc*EdZJc>cRb1A5L5gy4Z%Bt;PZV2D>>!yIeg7tfVuOnW9Tb6Vfa z>2sbtmO5>~uH=uOS(`ki?^mf4KK7HWU?0GNl&z}F%$;^4rUrwJlAU`+WSjOo?g-gT!V5bQGL6JxMY1LhO zfBTqg|E-gp9$kFM7S`*_VyCb!Ws0xAOtosD4AhFr;%rMj?^3+`Q`?zu+7>KdGO}#b zODF%Wr#pX;Km1kXA4UDw;?evSW6mV)UHX>w)P|ly*0E8#!lWHqrkDjm0+}jc1(mAY zsd|JpsKr~hnz7&6>p$^>*Ha^A_zhk;!0F-95fIp1hok=!%7EDaWWdd`N6UBWdiPl| z$UXY)S>~{~?`7YI<1HRdN0;lvYTJlGB`^Xavx8bLx9CgG?bGEP7*A5S#pNF#^_mF} z0j??<{N3w8um3;00^G)Uw9csu2A{t2e=X)+S=8lm`}#@kv?+VPcc#U~0#Ou-!e9p= zWg2%+lP;jC%_VH8y>{m>oZ5{&7|?s>_G(XmHOkQX&1m3%qcrY25x~fKN8q2muzl=D ztWkny!(H?(-f7~|#m>Zud=+wPILO;2c2cOv6N?{m>$ASQ z+kk}OF3)wG}ZQ5o8hH*-}s`rFN|~CskLT zzD`|mY^;2KRg2P-!#Y^E;G5vIz2^UoiT(4V5dM6X|DhTQ33A?gcd);9cm(cchef1g&@z5~E01{P!R-vE=6R72^ zJgMO5T9&$FxNv1_SJnA-{fd`8+kET{|&Kb86)Px2%I-I$P6^XlQAMs94H?*%doFK>PYo9vNLyyW13VgJ-`cEnZzGv>Cfc=wv+M+I7k~*Pb&k`S+Ng;@9`{6yLs| zC;RoEpX}RvZi=qsgk-7f$LCa!jXPp*K73P2!)KQl)#)?0tXjACNbk z|HOy7qO&V>rKyQpb5@py=2-=)9ACI8U=t<4lO?bc02^*HEwV%`ib^yyy<{OSl1Xq< zm8(27CXKhjr1o((t9@KdYA+{~%3Eg>ebiRssj`B*Xpx-+n_VZ^6$xKrFt9TbWKiMT zSOOxkftFc7Yd2do=E59pd1|7e#+w+$VI+(ZMv2P3J{QQ2&m2-Vdc7M`Z+4OO=b@!(& z#Zy1N^8)J6p5M+)6H9cF#Gu&pCC=BGtKX2D8H-w=^A|7FBlS zlh(ya>z*lD+o4$1TYCtjn~_h3zM2 zebRbD_PmeZ&H41>@j0JP9iKh#qjz%V&v-xg^M@zrE^0G1|I5yE3cih7T=4y%__9r} z|5BDdM`Lor2zMWt5r1rH5{l?fPc+YRdw`UaG**7 z?gdw?X#Q(BP^AF>nyLDCboAfW%PIxsubX^va^cVzl{S`3h-~6v8w*w zRSr}sz+Gi$6|sLC2dWg{-!@}a{k^LkxQhyKSNl~(tcnBog#%Rza9`M5)yRX&fhq-f zP-mv9U-yLrRSIxl*j&}fgUW#_1$aF((Xf3GHwgGGjggoK2ns34<>goOO~6B!BP`Qz7>*YrIS z(n};o8R-vR&yEbyO+|2Cx9b)?stCN%#vCp0<}VI-ZkPzRNT|30}kBquep>V$-f z^_&#r^?#dzDaLEuj#oE9h+uMlfglK@t;=VhB}tszK)b0{ykRkzv6JeY#Jaa&3_ei%BMd&xg*Ez zXg%l7{J&?PJ}WR#U!bo=+$KjUlKrFLKE@wU_;-{uBbi9+f2o7?qzY zlI#gt1~4*r`4^I!|EYHxi%7qJAzwcsBLN2Hw*N+oKOs%NL=yZ9N&JNT0{CQZ_HU%% z6O!94lJ{Roq9>#ZK-c`!zmbwpNGHEY&3_>Yo{;PSZS(&>ZjV;7PJ0?69NOIF|BX7Y z%;TtYcH_+?$Ng*67j_+mk*xa%icJ4U%mvyryYiU0jGFsQ>aByb(cK%2UdhxEU~2eDBGxn?}c$)+hM z@h^=q{$o!`6?4{q>Aw4YEK1WW%d7|fn->*KIe+c$SPst%D4*FVdw&nCc z)8&z$Do^|z-ulX4@Q>NaV(rnQn+9zQ%nMPL#)!)As?_iWy$z{556oe~hVLezRr}3yzC_juKBmL8Id|`NrDGrG#0WPlwEimxJ5< zLWmw~SDf%;z={?vOR=#);rQt9fiK2LpM{Z;Ix!yg;6kR(;(Ije?K~+54k{-y>d?_n z9;t|i$W*(48MHj+-cl8jLza-We@02Q=!gl~pG6)qbSPauJD5Izz)&?B6}fLR^h6dI4-|E#1-(TpkML(TiNgKjlFbJb5DY&6~O>l;H0 zM(;93B&gJoev|NWJ~B6G81>mcZ%QZ+4oVOkdQcvzb_5wfl->Tqvz-1%pPOC|EE;d< zi&Q-UJz+7YP>O^@jWgbzk{Z^pd+(R-7ca|Iu{V!D37`J$D%Qbn^zy>^gO;X9r$)v? z(ev7yLC(KK#xR0QE12-zyGdq4LT;BUPn%ngVkA-r)DyXD;Q8;=lArY#f-Fc5)c?4#C<*f znwpY4sFKZJ+*aC|RjXpKJf3JLe zh)1z{mX$@dcy)l6#s>B(L;P(CX#jogrz_)Z)N_w7V9Dc2u;8P>V$vuK}UK>@C#rSdORmA6CB**akgz@dyEqYIWG)|am=78VV?qxDX zR$~7y&W!lC9<^_SJ{8*TFZ(yy?fxkgD}mp+AOAgt$CMx((F7Wf=m|PFw#9yEtFLzG3+e5P#YaTysfn5wNqhY;?ev_ zqGu81m!g$>gQ80LFb8XJ-^^)my=j}3QvJ;;JC0i)siJmyoh8`^sQFT(u5!l^kN8HQ z^q1g`@L#!l?C6^h9Kd?J-4>GDa9G-i(l}BIe}yR)K_53ycsi$=zXhZIRS_y8Z^VX( z5I@L_{%Mu>v%>JZ2zuOL;>|x_J+AEQ_+gp$_2@AQ@o&wh&__E#Uv(o>7T%(wOLZBo zMCSqz?CnoQn(pdv+DeUbgN6jzp&spdTNa4h^aW5c;pxq2I-DLnodUU!O1;x+-zp7Q z%ldFGn}wgt_QtA@`=Ac*W@gNIrOk5`P?u@mYOmrv%tYudOkbM^-?Q&BUc`wKL?S%6%OW)(HruQ0lx1KZY$9(qS_V`4a6sS#Y=mL)AY&2OZ-0R zF7_;;$Vc7Tny8%c`>H4qxqrmFqFSx$ban%?+5vS!LwHUmUK0c9NX?znF+W>a&90eF zxOk1c$@v}iC{AW9Xe?QM`ZI<#95{dzFPT{28 zxQ6Uw{>+OHF{dlpb(D+h!b=bc`77&~;if?@%Oeh=wD_e%Lb7FgeFk)oOWgSIYh@5| zFTf)i92Q*tJ6Fl!iaJwU#?#)%}%j<l6RkM|RPJE~l`GZlG=!S7wi{+u3i77aZSoUt>GDQ8`W_ zYBSabgNVe0dYB#5+`PKV6}x#Im2s3?9bV^~)B3lz3R>0Z9vSdH45`GAF2AeUVN#?R zv`c^8uMwELOXQyUnK9x6^c@VA_p=I_iXd~3;fIXwnSH8^V8}ou|GQKk%pWZ(umRVl zuWwaoC-iQzO?f`Nr_r#M$2$bfI9v!X$LXG7{s7734ZUDVd9BBovQWkVzeUObVPTEX zrs(v)U}I&A!pIQhtmAL_%e70s|IEf%wI+X=*irqDNc6_8oW@A~Zz7|0`46V_>+C-} zf-SDP#%LI#owCChw0-)Owa;UXZ>u}pCu zWw)am>~f+Qm-xm=VONETi{$-b&O}H&STe^peUeRZbcduw7iJ;L8$U!!Y_AxzqQGJm zURCq;Ll-R)ix;DmAhlR+s(*2}F_UMEvODDFP3AKp{M{N0x+vwm&tWMc{DX2-s%CjC z$;_e*X3~_-Ama9Kyx`<6$EA3t6}Fi4Gs457aKO(gCjX^O(aXcxx)fu~vE)11_Bxiv zdn*IisPR2gE&C9mXufS#j=Va@LX9EAbEj`PEH1XfA-_;xVxmiX;(qU=+2noP1JCH3 zKqqgT$8?P40FTC^L;g$4{$T=5l8BFGno2@o7Pz&nA-UgO3yp9c_Ma*o!Bxn(z000< z_CzaG0f}+jYzVP`nejt?=ZE}l~NSFK%f%s@^$_nny_G}%o*UTjzP z!A6G1*U-NK(M1GfBZv1KhBT_bxT=myds@Z%-$^CM#>`EAwxn^gq(jQ+q$4uMm%(%m zP2&TlS`MWdFyXZav`E;DmCr_!pI!_$-Ppldbb!Om&Ig`f==*?k#C-SqiOD&YsiE6` z8o1+4;cw#$ZKcC|ZPx}=Vk886w+Y22ZGMDPam%CO4y;Q$5WiMnYR#BbH!Yi@+5BTX z+0!!I%#>)zWUe!&D9&xg%k#q#Ne`vkmGkG|Z;`s7Af|ZVs=2pCBbFCVwU)(_Q|(1T$ot6`Z200tkG^CO8(Pq%korE<-SWzU#z~K^U?Np{88Dhm`xG$U-Xy|Wb0r1qm^5_%6;)h$wa!8M2j+0u@@81y|?1_pV#)_7a zEHb>zW~p)p&ao+C2FnXzc?Yx;l;7V59B7@^tLIfBEG*S(cu4e;LoJ#pdIY#f*8-CV zddvA0K>QuZx&Un6>(s6<{)q!pq4v7B*~Wfu#!^aejTN*T=*1oX5Pb9!=uKRui+SxE zYO^)pYOnYTe50BLg{{@?gRzye&dak$SUhk0x74p$Zk4F=4TXYxtci?G>5;jcNIM?` z{`k!SinH|$+jlhi}>4&OhNmpI3cB0qQ<1jz;kJM9v2k+Eot#n;E@)@2OQ@SbySvu-pzVXlPbt!sFqawT%y+ ze`i(tR+3mK$>2Dn;-*_a-B2}6bjeqY#jkROK$2DOB1$c;IcsJsQ6aciDi0sMGEPv+ zN(YiXJvV_HV`dU2t4QuPe6q<=u-YflaDw6vl0Z*|qLZoLi$r_eiN)aE79U4YpLUXd zLvg+NspvNJdKpE|fo9#x$|da!|C?@+pZ*Lzf}uwwYjvohEl05$4(;>nCxNjkM2Xs+ zITsZTJqchd<@8$|@UPMUi}B=#+U#_(lk?HL3mx|GTF2}--+rwN9Zi<|MD7TVuY4iT zzP}bQLkUu*2)Y~uJtkDt`J+Ib0;sQFf5#*Bj0I-18x-Dufxc5@xTmZhKmcTi%|V;)9Nk=1OBP zb>mh_S*VRCc3OOsd&Q<&+U~FZzE%m3)zZcMXW7C795wNqk>8T@x@)8ftq9pH$9&Z+kfcZ!dRXt+&;vsh(|kkg&ocKDr@1UN z=Icy}L}rrqjb>Z$e&pnI7JOicD>gWLgQq;);5 zGsJV{(Aa4yx8drLDkoN}Jy$kirQ~^`>NJ$FHshvg9i_lj8pghSViH8m+&JvOe#&Y} z%OuBC5NmkzvvNz@{?DALYsOIn9)Ct1+5L--M5 zQ=S0v{?s6`_hseoOv>)MQY?BJT3Q}33>0hebRZReH5sigPf<-zr)F;`5xq+Iz%ahX zQ(NF=(Kpb2E*Xel>?BN4Gq^z*|DHILXZusc&rrhh?KZL0GzxjVKL_G1n=IFReb#re zQNRN8gv!b4a>Tm4Agptu>0|-ky@WWG8U7t5(Q15<--&N}gP*UZqCu)9A&I~K^&1Id zV+-jNmZHx{J)@#6>x$>rFw3@5h>I`KjOHpT!0w!}xZ;^tU+=Rrn4t_l5N(2Qk9CtH z7X3{QPko|4N}h`TImXb0CZffO%43Vx;`ugHj%mPTA#3DRz z6BXh55T&B?R&%&6>}Y{V>%vlbV~cu;w=!U!8Ig#7WZ4KE5VG6RDPvTedUKaZ1e+th z#|*mdeJ&~EPuDjpwPq%_2EBM5CE89&)<%k9@C`$1?A$@v#rB(H*YXSF%O1>5(ppLC zOwUosJKh4=GFSeFq@CYgV_q0kf9B^1=2!T>&C1QMWGXF#>>t6ZRHIDZANT~jB45u9 z^sHE{f3?_^NUfaRxpJmHtih$S74V#)G%K{V{k3DSyxiY_Sar`k(C{2?crfT^1DfI=*haJ*FS3z#UETK#`3kr3J~%8!t^v ztkeZ4L*P*eC&7;rVqTvQH#6xIVoIaPjrPQAZrfKXEPabXjz0-1ajv7-lXpmT{MsnE z#XA{IO?#t_W5x5rjVV9Nz{!}43lBdSFU6{!z(M9FDkvHF9efneM4SBr$#$>*!hvpo ze}gk}496RrJS3d|YSq`vEkG~it_N~novc*0Z7(*iJC32)1#H_cLd$%S+<&ANl+t$jIYKFu z`eQxblxl}fBp=E9J#IaY?)MN87{SI&)rfe+P|A9iuCuSn!8ht})@m?smGyc6?r_FE z4!FsAPE+$OK2Ey>1KLMa{B{1Y7uJE1hY?ap-_IkG3wZ|F@Sd?p>0aepebd^o-*<6X zXK4SmZ_JZ#;9DuOe~_ikp25ybKhE*6z>fn*H{$tR zgLb+vqWA2Z;ju@vy5NyhJ=MI5A=|@P-{QWF|}O;_t-K{Q6kLN%-%?GJcVVDC{=ds@vMqGM!zRHnv&DAYmX^kAWF-?yMk9i!wX#TF1nU zmO9b1O`>?i0bEuJqn>W~`a|>W^oVN0)ANrzT5h5+OtOCNh zdE=72zvUya_NRi6P^hSFI_P7AJy&==T0M4{fb6%=rgQI_(;obu<5Kdu&m38S}N{4dz$0lE+S_ZWM{~& zV5U>X6@cowLD(@>*D&ty2TAPQ@jo0rxxvNmRz~_<1yWEJJaA1ZO1snh^*3)TJF++n zZ@l^7A?S|pR?cjOozkU^1 zBGKadSFkec0KUw^ef8nA%spedX>s8XWhHL|LeYNljIDn?N?nvpP=epd3Dym}w#y_J zu3LwU6{uc1xzwyKYv}9>Ic-@~&F+dy=EhQ>3Ivlgra84_Cb0gn<$%B3~^qDG7K3zb77B%IpnA> zeuKV94zYRDp;-}#!KTG7wwKc!s-m0j(04Q%CBIO+509%j^MRD`Ep=L9n#w*~VaX0L zGmcWR98?L4SpB#YTkqlqm53KqB;({jwn~&2aZJw63@3?$h7}T&hhc0S2dvj7&y1%k(L-9G)GmcE>W)C}AcVG;RtY~deQVMD> zF0DS`D2GWUj5@pg9m~*7;h$s(C;It4s`cwba_ceuh8J|61sV6{v9`+q-y049KeHN01A9#2@+qF3>G@#w7RaPob9uz(bCkVL#n*Oz2VQT zL0h!cF1FCL>!E*g0UkS=M@%8eUs7546|N~WrA$dT+3A_b>a9m$4eFi8kl_$dC&V-sCiOt;Z)$u;KjJpF&2V*s^wxm+kUMRAExnj!*N`11zkRTkK27 zxRo@Fy4Sg&d&G0OQ|sQjAvzNtbF2og?U%aSS}Sd7h!bIudA0fYC^}`d;o{TM;6CFB|KVmf4u82?j+*)^uG-q#i;_l}mxW9N&^XlQ5(W-* z_ev*=iw%wcnG(CecY>vsc5xi|i^cd_J%x9UNJnrCKQ%Tu!|8KU|D5<*PfMTWMyg7W zszsb7R)ejDmKuwMsu=MNMa7*^hVVqBcYu;>ufi!R50e#B)pxD;LgT6%Zu#CuBm&UZ z-nPQsz^VE#!&2rm&`d&o1ix3#!TQPl4B)s#-x=r$i!i>SGJq6Jg9>M7r=}^h-7icQ zWZ`jdt^V--6?bsySlHLFY*xmqy3q|q!+FlY__-TP$xkjSjXafaGjkxvjw*(=`6S46 ze=eYx>+-3o#Oem=y2Q@p{H#oHHLfk0ujeEoh6PN8 zm&hIe-9Vh7RDw4}&K61P`$CM}DGaW)JcrkfTV@Ix#nD?E#BkdtRosVL6#mpQ{b?^i z7w|)d^3&eGczX;$Uq&xU^2IIlPo^$kbvSf%|1_XVu~?P~ho_SMNGoerye^8H>K(yN z>Q&c3>9WxJOvHyS(kp-N4tSV?OBTW$-9$?fPAUuDeo4SP59rDK7qu?E{Yq*ny6q*3{;YaFjO~F` zzA7q?3LYT(fT2;%vE36q*7n2RA|B%a)~c)2){$^eqCH^XfYWoyGZbE|F+60F9FqOF zZnjr8G)`3bKUwk^0?jIwYVvxGUd0LR!i%Ow+QUbZVPD=aUY#z4#-wb#7ziV+in=<^ z=XPy3OG?KwPc8TvZa`#mG8e2`Xy9ROPU1dIp|L3T zPSwGI89k-xE5kSvPcM#VhYZ0bZNfvGR(*|hZ;wIA$OkK0*|^wog^waOC2|DC7UozX zy8KvXC=un2#r|i1XMvET)!VZE!hl`brrRlW1ByEuzkrPglE*+L=N(WoZyNQZC>x}0 zTEBh!_bTOO`)b4CsAJu!G5o#pX3Ly7b17tDnIi*a8@iMv(u7keLtup6oRV-Im*GAv z?UKaOHES7;3aIYrxx-CA&tXrK5<(YeZjNHjN^W}tTdX4Lz!mmU*~#R+J0%X3KB|ROn)|s zl*o>kaz2^H$7g_yjl)YWVnKZ|0NRQ@66X4;(EUM#*e~uwoGR-9n}rb0=b(dXBhiN6 z1?CTj?I-iqw`k+5Uj^!j`%kidfyWypmU<{mX zydDQnvF=JRpBlCec$guKfI6ov)ZxveOnf}T$YgVC?9FR*%{Ee6x}g@aV!<2VMKt@O zcoLRxuYWp&{pjkB$kp$x$L_Ftm-;&J!$b(LTPhsjlZ=Ov~{7Yc+GwE zi4p7PM=A!fX{qC$K+ClbX-N2xWg89~aH-mJ=Bs_H&dMBE^G^BtZ$-%Toi^pQ<7fI$ zhp3^tL{9BZC{CR_=~XEZg0_dQYKZAnCg?yYz~AByKxJF0cSY@C=4qI{`$0W>GWYoq zN-99@c^OlPitb*DmjI3T05VC3+}CAwvaR2V&p1?0-uq?XQ2r@zIoPVW1KKUM-Bx$r zj6R0BeXtHCZ%DEzSCg(kH3?Hn344Z$vBh#O%^FbBR1=O7HdsH zCeO0KVhynEpw1z{Dp=>ba(4xN?$4OoG1#1HZ?D0Qv$v#p`AB1MM|-ehFfYY^+U{JS z{y|3ms-K8B<-(z9#q)}U`eM9oJ0Pp$LVr|*+2sucTe?skZQhz2U_PMyItaVB<*|6` zjYU+z`1e4WbK@$FMV%Z!!|hE~XG`!4r4+cr=baJiTgIp~#*l)->oj^4v1LiktfjZO zy)p!Rv6UejfeYpL#m8Sg`q$&j%ps4tRXg}Xz2n_xhHs+8U!BG+Qb>h;t2s+ z?UXeVO3QayZvTpqA&_-pFg5yf6<=-!zn!nK(tOmERQ#4SV&W!OzlwT}(sVy8QWlun zc%sWNK;L|^Sk&sC`T+!pbDTDs;?tjAP=`?{elUFtJjD?n{p|7nGUB=X=uk+%5Qo?L zZK4phsL|b`zrENFV7|=`9^dAU4V=+$+=8sMk{}xFccCPro}4}<{D zJdabu8~wS8A%W?Z{nx~B=@;2StK^zi=n9+UZs)>8FFmUtPv*F_8;GBeB~Z~PZE&Se(tE4Mhh zX73!V2-)Q)uEDA^!K&C!;oS=g=Mp-Kz8!Dh6|qEivSrYgP(~X3;jDP*4iASy_fqW6 z;#jmjh`vAg7p^=F^|asMJI*%M+UwxJ^Vnj z#xW7Bu#>Q4MX)-Vq=0}BE0g&})z7e{oE-Xg!q?(Qvq`@pzGUkA7}l00N%3P*S6zdOBXUx+n;&OFcOkM$R>r^_t=GFKg~4cLgT?JTpEDbE z7TSEvUAw6fV(%{x9ML_X>ms0IJawE8h&xh9LlSVmL?0^eZa2eL=ep!#>*Y_9u^g#G zuL}+P+mC)z*}Uv8pHXolz&TnS9q;yY@J8~7$X~Pi?>!5!&~5Y=6ip_u* z${c>;!fktvv?-QAT%}=nyt>&zB}_g~{E&p_z}fEVEGtw#5-RsuYErec+9v*OAtT9c z%w2%y{Jd`{+An{WZ#9mW`FW(eZ`?!WpUWegODhDhO4HjqX+RboL@%;@7SCt9f+!Jw z6|RTI0kf@#_11N{Cix0u&d8mtwqsH1zilj6U6FiY+PMh}^m!vOVO9n@= zr#UERUC|?^!_`v=u>#15NO{<*)-q9*?hTMIy=m|HcV+wBSsu@;ykOk#T-N0Td_a>g zI~>}(XOt3@S@56YaLZ4P(bu@fNegrWufV+^gq&B_(5%3)(73RZ8VPgitxvYzOSxeuSJWbzyDcTjrzIM??wO1dN+kCA%eZH{rZW*&)nnmP1mCFoPk&mG{HyIAjCyT< z7+5>4Ue|*bs(4kHqmC=mw}I0}OE4>zK0d*Eb?NI@S9+NLiOWT9Lh$9dgfO-eRv)pJyw$pvbB52aIk+J2mtti2o z_zZa$1r<IzRLHsfenAYZIE1B;v z8L`H1_S{S|Eb>2fQ{3NsH)^}DvR^fwBZ zN8Vv+QD~OUtT)6SObm>Cybxd`GI1&KD0h`27j~JRYOsrc*vkR>k{Nl=e}r7%RcpaG zW+V({IUL>mBCsW|P=Bb3rziiKfNwlt1?e^Rq5n$S`ko(|LX?mJwEr-cEJio={-=QS zKe+&9WV<6yXH2^~ONW=2(GH+A_M)(&@tGkVpOn7aRI)gVr>xQd3!M8x^Io3q)u z>%TZS?KD+}T1B>Uy>TCjr)9}kzb#CJiwoDE*#+sP2tBtXR>vU|D`$VhMN9wYbXFL# zweWitu|tAO8m^VB{)~Lxi7H@U0sP$%`?2B==5*NtT$yUO+vmzll&D;4jd5ti^QfEu z6%-)0OGU0$r4T<5KBp^D66LN($Btr3N?+eIF_$vckC^AGUfW&ou04Gb8BT4d4C`__ zHK6(>8KU?4odGh2fdVlOZR^iHqiX+dFVpo#tLOa>43QZoq4VHW4hz z8)xcahttUHD^w{?L+ZS)@fpvXvS#;hJR3byeQ{^m`Wv~(KkFhw$NYa#9~Aj-4z3bb zw#lI*nq$;BsgcUE`jFpfXvQT}wKg)ZygJtZnZ83}s7od8a_|v!x9NC3ng&hCE;|Rj z7)&{<4Lhm^M5}V$`4}jjsCIvkNqtE`5PM`^KX@Po>Fm5o{CF&XU~E@b4mCfX{WyNS z*aSUKt;eP+Gn6>3-Z8|6J2mYjB&BM9@hY#^T;O%`no+b}-N@dt3JthYVer^aK4B!~ zPyf&q&Ye_{u@a3^s(+8ixj3hN4Z$f#Z$LZ@G%$`+8{93vyDmjMT*AnSC8n$Fk89;U z9APWP-xrg7qXpPC9z;DBRBPzp2#fQIJ6Nd6n9W9p)opNnw~B0L<}QZ@AnKeU_jxf7 z6^zbTNh-N=VHr_ACBU~K&!TeS_mR%c^^|VDW6A zoiyQ{{+k{i&%2nCWD{i@>h+B7!mYnQoejgE(l80P#l}q{%4QHVRk5FYS-c)`i~(1M zJGa%~q|LsS{E%1LFBUg)TfMXSJ5=Xi+E@sR401w#QrC+eSL_hGs>8I8Z=(@SFBIbxl#DLw*b zb+_M?q`VbB2!gPOiSo|6a80fPWNBzLhA4o_vpR9GsXjFx=E#Q@iZq13tJ_J2IDh`K zO?dQy7Hky8iTxroe8dR}O1c}6xhky>uBO-Q2f5o0M+2^@3=kvX8N)`O!EGn6`h$QU zvlU>;*TXcTc&As8|RKmk#AsjY?5Z7!wp9^hZ_pNZgjN6UY<^WdP&n*J4 zGl~pX8+V-&94VY6Pf=oHP_;{ z9X?uWY*TD-7HXcB1iu(aWE`g|)w_P{3%db$QmJRqRs!cT4Q~APhrXT8yIA`z2>Bm;dB{r%`E^|%%kQUsW@Ek9wVsDi+!!qs zf7m@fT5i9sCln)Yp9k6PyGHj#0qg2!I5A%fyU@rSzs6YmYGKC8qEaAfRYEeCpH z3+^#A%6$C3kOG|;ZgY0Km@s`C^Zek`0tyw^^tlkdXxm=lD#amuF_rK7=&t4Y6dTfJStN}K(} zl;I)b!9Zubw4HqU8jNU4ovpl@7W~rBSrz+9+kLP9?pyC@YwK=uJpNcT5`|=XSX~3I zCY~B583|RcgoJOgFI=wvqJHjSuI(zc(;jixyB6K6esin`Q89)!fJI`C{Ab(`_N>%_ zU`*Kt-MqEE*u>;37hkhZ_kh7|&%45Ccz~44oqA4#dfNtx&d_m z_3=W1;95y?RvMiAnJR;CHuHUewUp+a#P4GB(<`nYZ0G73L|9e~Kk+M&P&u!NaHL!Q zVi;$_h8ZHQZ&pYfVqeYO<*B#GN3h*h6KO$31Q=QeEJ>-3rja=uX5Nj2rs%4DGOgkeOfC_bQL%D~?5XpEMNIqm-i~ zR=hvYRmRMHlyENdSlMK@)rRG?S?wFQ;5q6Y&ClqoqLT=iR-dAZgv~~*NDxatq z+nFUY8$VPbfXI(_B)YVHDm$(Mnq z;?ygz{S9a_1~vdY)fV7H;yBUmma`*FaAOqveXJn6qeCU4sLseW-MD?j+QpaMqKn}3 zCY3|sv!sqG=L*DbtNLmZAL8Zr1 zM}5Ky^%v}!!c6S$7g46g<{;9z4}O*EeiITm>vx_t1Chm=0|WdQm^WG}t#dO#KOk@^ z^CJq!5?pe=Zl84b#1c=$gWbQzv7fx%mHHEu*xtV(;sD{T3tks$gH62~xe<4Dbc0A^ zV2C_hb*lSB@?!G0klMr;nEHd@(dvAo zX)e2V)bwIAb8WqvU)(iPg!WW0D=(P(InyhcxOgtKHMUm^K+XNdB}8C%k%5-)v6!8^ zLu!{V&{LQ%>e5HNHK4k-b>~{g_kcuV*Tw*n?&H_5Tz1&ukv17H#3Zs(Q?^kSIYHA{ zO(imYgr)MsvN~Vun0~mOGE)F9Pn$C3Q1xp$^S9WBg)s8&<+~QI`oH?XyKfsNx~tSUqw@GVrESXheAQfto2 zN-MG1Q|~_dTJ_?UE9Qgi`*wk=#7R7>WMpX;)ep%knQ*~be~ZdpuVdE!>I}r5nC5lq z$=8JOhQ~8HL;2A-Az#lwy4%Z;U3xb+4U&CqIGV_Bn$7z>3=>m({U!BQ_{3!E`M^!| z!FFZiOc~UD7vw(fHs=VJRfi=4uBaK|>an~Hx6VWDB5sgbONVWaAFWD?~b*0Iw+E@L(#LW09N+j8yI66CY zqV^q1ZG3I+MWF#7yYInV@RS^I&f2R}$iBN4VEsca%>;`yv#abG$l%MZriBo%0BUBl=geF-3uIEx`3 z-zgV}wnrGwx7&4Q)k~BbIn9*AwmX9CfyaP9Kxg1mxNU#nLz5M*iRM7qdSY_AGaNHN z>&E~UB+3+x5JVa)u&oVV4>4zPRznVnxxp_} z>>mo3s~u}syrE58u1)1}FW<@GI^;{cCdUw@rdlbow@b2nUNmm@8C;K6K`%<*>=&Ts zV3FVQcUcB@6!L^%)BeqR4(@xM^&EMFtKt=t)r0jo%s}d~Tw-1>aXBZ1;T29QJ^gcj zz(T(6<8>501=_S(Wo<~cV6h#l51yrkWq210= zt``)`w|;YD*TBc4`12^ZeW+kF?x(XNz&)9q>*HwXY3*sqK#Gi_GjThZT0Lmrnt5XC>N}NwH{Ab z-~?6d5C&PrSn;NPeyJwK1xX_Em8l|5{AI7k)xO$j(Xln-`A;t3Ug+(k%|EhorOWW} znT2DG?50TPwhq61x|sF?Fn!6*7*62$<4loSf|0)*x)czeZ@gn_^9onr%^<1Yf!xV< zB+nVEqk=)|nDN2HE@^iwb7pLZ5+UT&bP*0hNeci!vb(vo`r&0bq|S{tdX!Ctf1|}T z$a`Va{D+l451r#A9*TT|-zY_fpgeZOsPn@&87~#>(j5v^$NmN!iq*?WDgW!s3YdPT z>#@Nlx((t$D4pDRK`9h5lTCd(ML^=ziiC^hBhV!qELATLm=U?1#J3zKU!r^<=5n6l zKs>C$6S#1Xj3LUIc8fw70o^lnXU) zCH~xD>bTCpVEwjm;rW^`QKhu^Ri6DZhNE{GO?e3Sx;!xgj{Nu?)K|+_D88#vkjoxL zPdn!jEeTrs_!TR=?45(@x-oy%iX9H@=V^j%e|_EhbNxeYjm7oa_oEty7E3a}w^N^p zv=pTk4PxH(EU?ni8%SfU@m0G1n4;>>)cMpRbh5exGKU?U!1UpgPF{yvZRl*&$EDy4 za{0}h?aXNN@|rJLRWeLgOIm$~l<)Z=V$y^s_ufu}_TXyuWG8`qf74%_@ouZ_%-LAh zz4g0*(4`v(y`{GH15XrmA@Ku|rX9zfopLd#D8%g+Lg~Ihc}x}GkLGE>o8k|pN6t0F zrkAr^CP>P>+^*{B>6-d~0R2D$zu#fFf<9VfsviXb!vXjxXkFHI=gRiPsWEXm`M0EG zmOK(WJmt&2e&PAVO~H&**(NF2@w>R6+UYcPA8dCWty<|gy6pkS(H-~pG_CowGPrmf z?fPA-{&Ocf-$(t}X$6#p*yC?53LaVT#mKBF4~Az=c+6*b{+$$&T*d>UhkInZd9c5$ zv;TN~Wna_w-#MDL-|IZK?IG9U^?&MWT)3uhm$iYK=XKIMJALDb|FV|nbDkVdeejw9 zuc!vA|8Syb+2-2L1B(~;AKLJT-hJyH>)EsUv9^6x|Li(;beGeqxh4O|IKScP6_IJB zUy041bboZwzKyaf;^L`NEO*rup-G>Q_G9U%%m}{rflk zv}gau#|HLq{cUgU#{YKj*|M~G=hn9l@2&ak@#Z7{9_a1b>rq^0l4RRCBVkm$Xb||c z7%?1xPYdabeVq6u-Lb|In`IyG|UOKd`28Pk-${PkFz+ zf4-fPi~R#N`1=?Lz$t_?P`i9!aKj%?^tP?o*?qL~_1?XezZlrP{(=6TD_$7fw{e+r zyrG4dW;I6*Pqn9)&-O36>U+VXzi_Wl;k93-w9;`DQV~NGf4&!9PIYVh`?mk3;nd;E zb;tLteC5=h%HI#xZvDl;{>lgX4psi7bAQc!tvjlpZfj}$Wk>U|zp35Fc9PWW_!u}C zO|B3G3e1c zN9IkmgvJeLR=Y3v^g2B42X{M~w!PZ9ch!@9hc-OoX{!A5KugtnXZ5d|srnCtpW^=( z_)#Zl)W7%<@cxP7%76FLmcT|=!@9M7dsh6tch~BtPVQRsY|H+w|Lr{4w8yO}E>loM zZ1AYUDKUk!zB+Q^+@C~@yZT#}+)2|ZqCD{eI07m)EOAl&{64DvU7NG!xns2H(Sx-7 z!8%&|-~p<9x}|@~6Kw-ke>>TKXmdL?HMuT+s0|L^jlie(WHSf87#WFi{GQi()2|Rd%&G*vXysu7*|f2KFp@(s6L(GlNHW%p2TX zUDIFt&oGBPbKZA5xP`tSr$Vq#`oQc`woa&k_Lpp=xn=rbuUE+u-zh_qot6d#`+ zHF9KTWMX1=#1M&RL845Ms4L{7e$!8poTyy%=!sn${@mAcpj!2~+{_*jX&aWBAC@)greWpR z|1`AthVN2l@l*<*8TE1hL!Xe4q=1OHq{Q&V^rY~_#H4W8s+feFU`Rj1ifoY4KTQsqt9_siOWUJSXLq zq^G0oe<*Kkx+u>?on+L{0*Ukx<)K{;+7%R(WeFQvR8*c@S~@nrq+~+D=+PC0<>ix# z#*d#=Gu43AxITL2hx^BX>X>%q_ zoH%3RRaf0G>Bbvxn|Z?xx6hnB`P$?HDmc%!^Zbe1r`gjL?EnlL<`ekU@7#UuFP?kq zx!=6_-2XlE)RWIY_SjRuc>M7PpL^`F2cCQM(Z`>C_@T$2x&Qu0pZVFt4?g|S0}nm< zz(?_x|v{`+ok@`|kVMPab&SfqNgg z|NfsoDB_?0{3rMS{N5kk_tPKWf8URPbl-jV+;i{GfAph!e|FCg5dZLpKYQrj`|o@D z;YS|)!QDT&eeSfm*jbS9X3t4x;^Ql9GiJ;kKYRA)uBxb*KBlyEOo^bfva!WOB%TEo zl$Mqh7LF|zl%GGLpfG1#o>1~a7?;e<{It~6oMhoBrKaY_C&3{SPD@NoYG^`2L11`z zx?gN;nH|oH)w}a4Fhk+Y-ZXakMDO;#Bd7YB5+~jmG4}SSeDdagvo9=vT%S2AMwU%B zYwt1cdu;PQ+WF@1dbYmyv+hI7o^l+oneVEff57`o1APZX#$_PzDIx$zbDsV!edqpH zj<`GaEp_aE;}@Ol|NU_1)&+mnTK4ZVxg1=x1qSn&^jv%Hl-nZ5-*UfC>FjS&dSE$u z|ESP8vl|_q95(&->pyq*!;d`owMQQO#g`v=?AdSJ|KM}qdho$#zx~h?&wS_cN1p!f z6OTOg&4-_U`Wp{D{?xY~dGzV;JoVT!-+TPYXTSHvqtAc$i3fl6!^iIX^$#C?=*4@V zc;r_lg`eRW z^os|ceDD`PfAWE6A9>=jXYYIRiDw^r>XBz2dHUgJ1wDkk$DVrVxkn#=>=#cw^T-QN zJ@fQ0pM3hsUq1WHW50az$tQmK%rlSt@`)!z`te^r{q)1XeEhM;e)-f>PrUHt6Hn^p zk3IFouO5H;(O;pCpckKc=FwlF&5O@I`}m8f|Ldood-BDno_Z9|kNxV2XC8d<$!8z> z)w9n&272OG&p!Rcubz7H@n1dt)Z@Q;=BdYDL|ai0bsh#i`r=d1J^JFKk3N9BCw~3> zbI<(xiN_!L%`?wD^}_eR`<<_Zh6cx1Q_mH>_6-T&6%9g1$FZ)Xhnt!c5)z^+CX63@ z?e%k}&z*bitQ&5)ZWiLJZoKh^**D&F-PJeWeBHIT-a7aC&);^#+}m!y<)%CC_}nd^ zTW`Pp*3aK|$LDUl{f^Jye*5jW-Z4bC-SN3E+fAx!Z-tm$b1m@ui#Zy7}{S@3`TX8}6QQ&5Y?41r@|G+~(dj6iD-1WjYzI*TU&;RP{&;R0uuRQy?r@!#j zV~^eO$dB%w@#D{b>AP3QCg;R}U$66GH~CBU(9yC_SQgoWL(Nv3NmF{ACmJeuo!GtN ziNhOT`_i%6bq@_5_{%aJ#Ws6?X+SW-=)njE0-r4coSN1;>A=Dkb;oZOcdh@=15K;` z@%85IOJC?ew!5A?do05DQuX{SEVAl62`KBBq{TBlt&V6*WPwvDi z6L0>~m%n%Y=jYCva?RB;;B<6&73x6!mMeNCrqC_ zdE$&IlO_n7IuY@ti4~|Lo+nP5G-cY%sZ*!Snm%pXtZCDy&zv%S`ix1_r_Go$Z8~V` z)Jan(Pnn2+6%!{;7&m_0xbiV$$CQ^#l;0hNEa3s<_Ri5oS&DM1Io=qoST!Aos*fFmXnp0o}H1A zo}HPQk@XIxWo2fkXXWH(WM$`MWM$=~XJut&W@Tk%W@e*yb~Y+!rKRIABt11XISu8h z85yag{Cxcb_w3nIzjyDpJwy%e4+s9UD*bfFy`mj}rluz6@Bj4D!X--=|D~&|^BACK znx@H|bDTPpNyJ`4nn2u3s3(q(u%o535@TeRq<4rRJw(_Cn?+j0?@CSt_MjFf4aWx3h$@$u*MjpL@Koz6XbcCT-5KiQa?nivHwODicUN-rwP z&nPI!OD`)cOf4%fN+};*oHAx~N$S{frD@~Fmt}ymr%oTAH}k3~#aGRqKIZCcuBy29 z+N-Btd)?KuuD|hytLNT4_lCQ^bo;G$ed+VJfAPz=-}$Al+;P{Jzxu_meEF_BzxL&? z-1&{WzxJhXfBk!3{oXge_vIh|;K$#&|C?X`>d(G-^XF&cl}0ELX64h=No_4F{CZmt z1@zSSYDYHgXy5hbV_m!6{9^Zktxr2z=53*_l{n@%cKc*p7c&AH^=#~-{r_Ayu;GoT zy4L^YTkf5Ue=oQ0skLj)Zc{*@%^IIx5|Tghd(mYx9@2q)4{#oljTa%x;k z+LSpn=8jB?8^%d8DNa@9ZZbIrxXG=MNr6q$G}7&rsv=gItZGbB6eg)E`=3}t8RtwI zA`NLGSQ-!)bjC9=;nb4IcxF$5+t)Ego^NM~L{`H0^Yh=>t=Frg20 zE(Ul%Vkq;{JDqYQ3B(xYhrT5y%O>$mPM521dv(>)fBySVe}xm!Ok`{zfB{M3b|q7L zdwu^u{_&sXyJ~l@?dk6CktCT*l0%oJK zdrc+=e*zUzL+|$toe*OJ29jkW6Wkr~jGB57>7jg4CWz1nlZei2W5K9q3nR(QNRw5v z*kuX`uv${n6Vs%-gSRDwQJe$dUr0lSJ}1o*VORW z8fu^4N5*9!aH%2Cx2nUr`yZ=M?s)6TqZ|J7lan>ee&5r$YcqFrp9lyEwnwLAP90e= z?w+W^F<-D`MvkKN|2Ykiq7#dvCto#ZWk3Dw{}ka#GxGQZ!Ee4iC9J zD!JVroje{z|4+FT<(*ihRaGTLIg>O}Js{+(s))}dP9jfHG`%ks?K~b2dC;e~59A|H z(aS|zBL#hET!RJSgiVu9XRfhBd1uCqF=Ff;`Y0dqnKskgr>c+XO>@{SS$}5eRPm_p z!;MFFzx?ul{<~qrhQr8$)y4fH44*bjFxj8>kQd!}eAA}AjsN}cn+s2#JXxnGid)l& zyrd!ak}g<+bx4%AY^ct=<97?@yURp7y&qH(F$r}MO7j7P(+FLNMO~fH0oPP;!Lb$A zSa5J)cvgD)*ph7|I~1Q0l4ktM;+vTqL=hu`DBQ=?*x1;=b7#$l6)RRQ z?CR<{u0d;|Ac7T)g}HKtG_Ha~S|t@@3gUuCF)Cs-IbAO52qIE3CqWuwG$HIvNN}ow zBNghVszM>n1e-$^i^(T7Eum=ow25=3jm=61yJknn!q)b~Rex;Xz3vIuz76ZBYhEw% z(Gqtf7zkXN2xxR{MXR!F<=U>TFa5T6^GlBn>|Xl2!KT`c*n&HvQuFg-iYI?AGNqux zuQN0dQ-rqQPQ(I-4-YJzKA~d5RnuqLLjt1)+-}Kiv5-}Q1K?K4X0{T8W6ex5FH9S+r$nBjW$*1NnO1={AImL;nRK346j% z6AY@zI14fM&e)==21D{e#9@ctAu$e2*y*u3V$qIBB1Pf6x3~Y)isj4ZzyA8mo6xWE zcM$->P>_ZaS9aX&T)1%Iwv8J$F7IgXIS#2+A=|ow2mxn|y$ug!3kpLYO5V1F_FfXr zhlt*DF~-o>2h*9=8Dk_fnHUi<#>gx&%czkFsl|DP%5<^TN#E=j%AI69f2#0Gr5ecOh zM7TukC9z_|C4g(AkqT!;#SVjrku00Bs~}>iz)|WK;2V;ipD}6twDEWgIXQ|5mD<+! zQ}^0#<3Hme*USBncygs!pd$5_A_yJun6h75as8u?P;4 zSPTV;XAuvP&`pk0grVp6#;}7V^7!e6ShUv(&w7k;#K0I5RiV`)AusRt*dj_)>iM^w0ZMe`}XbMtErj??MOq%Vh0Zu#4z4@Vnh<;&GXJ*@U9_K5HT$L zg3tk`2DgCgBi?J5gdUd%TBnC*Q{&X`uZ;qEcx?&N7udbbkDvGYX?pp>pMMfIW9FeY3l5m*Q8`- zlyS4oZ@}qfSaV67)Jc+we0$=v>Hqs4lrF%<^e!7Rqop!sUzrKI6Hv{-5MzPxYmO0w40q-KX{WbMY&dzWs|EPHoz}uw~tf z`JHtO_7k=0N7LyQGsBCgOqiLOpFiE|=O6A-Gzp4MCK-nSvP>F2nL(FEZrCQPiD9uL z68b4@l+afcV{-uI6p8oJ`(-0fwBuaU+i@th=t~fXu8Ls5A+iD4Yhy z7<62(hGPC6BK=wPc_w*lfAC%O`$5E*7>}LNSfm+v5G0WY_zVmT_N`dH;`KM*{LgAs z)HgYZFWT@~FeZflvl#cH9J8~tv-iz67p`8la`i%oW8ehz4U$YGgjNVV5l33AqtF_p z#q&oa(goDpMyT>T#B~LH=b51DLwVkq>q>;XKC*(lBI?MDREc~>rKgmYjmf{Eq-4aX zf`S4wo&DmA7td?kwQKjnJ$v^rbqqTDp!?{a5m+Id-ea!lL|@z)638bI7a}7F3p>)@ zMISZ_>n9g=Mczyt7>TgX>%Nm!RU3^_`@z@bWFwPk5 z0t80!@wV8BbE7kF&dV(wJA2BwX_M!c-*D}WzEQzjNo8b7Oe^bOOpimok9xb_=KLAe!y7f}A*J3T0Som)Q@ zApPqyJTiN#PeEa6MZuWS*9Ap{4fm*;tSB1E%%tn2u4@u>4McGMu|A`Wh(W&ymsd-X zI2}0h5%ebp#bYAH#m!5M={dw0dtXAPUXihP%JqyhZh{A4FV4t9l7R@#*@qIH74-&)22a?T< zeElsUc?G#sbMmsT8W9l@DT+a73+ndmn-A~aRrh8?Lu0k7YA*50o}o`7Mg$TbI75tK zNhhSaSm+UpauOGw-#G<9H8Dk$b3q)+%ZN1QjR}TJ7&46{oCYuwUkVHf4GGD~&6$y% zl|OmXBv%-^#Kdqve}RQ0mH6k5xh_9<;B*dN^gu z)}+;~&M?EKu*f2ajqpFakSo<36q7(P?K5hF^oMva+v)5!4??@OLC{r(Z-radrX z;?xI6jGz2qeEInAjvO~*cJy@rB#N&%r=QiH*BK=xSqlp?bIQg~ydfq&KHWo-#e;X) z3>wcgh$1Hvik z!-R>dEiES-UVeGrD_gcS9l-M?5I!3g&$prdY-VwOM^)?UcJ6=uzpwx2$dTrKCX=iX zlurnk_|lAsKiP0zfhAovKT4W#ff2aevZj&+Ov$hUcnwCXM#S(*#>U1*j~O#=R(5Vy zaYcHC51qrcWy==F`t=)jR8`f?KXJV65DbU{y&{GVCG0eWVi9@yrMV(Hk32nKkL!3lC(OyFyY@7b9!lL20j*S>GJfW~Ce@S=#BY{H!WV`mv~D601yC4L_t)v^!1*e?h``D z#P47wUEn@Lg%XUw0TAB;Hepc}4uB3Z48-YUI4L4d6cu@~hc_7Wr5 zG=0}EVz3O`#z7jn#W4VJYkGQeLD|^RvkMB+l9Q5>Ea>Jugmg#bwv{#3dzmYc^A-OQs%|iMpLK^>VA^2?z@eOiIm8EGeHmJip+&u$Wl9 zjuI>I1)qQvmp3J%XiVAU^!(hZK0yKD9^uhLzlBc0Zx%r(LY{X~CoK9zgaS6`jq+c#JbYH{84kb) zAm7rmzw^JZ%$vVq{iZc;w|jtN6_aI|G%Ua$(BuMVLtSA2NT@#Ev+JuVgkF*uyk62R z73=|-EmptWf})D@v16x4_@_n?i3W6*tJ<@C`R2o$H&-sMKX_n^!{O*9Lg#2D`X_WD z6pl_`A}vaXVv((sF7;6ae48!nYdQVC8wITeN31N=gAi;E`| zl$TG9k54_<*BBV>0|WEPiwR38C>$T0oKoIxvxS^+YpfqU;LQ$kI02dmJb{gVFx82p zR!?YHKx{$&*!aA{aTKKmePGW{PlNlAVs6=RCh^7Chf#zZG-#LN<2 zk4eyR6^=2JWE}ZRqzOi#R169w;ejE|g^n^&;HCFn=-)2KoW0eciyRtFI?*M2F~TcL zoqI_FKEOm`l6v%5bHnl_OW)eLr*RJo6_61=1Oe$o%C7VxzNuq&!W^9@WN73~lZd&v6C409 z=_Tl!<6M)I3a3CLti9w=NDhe#A6`&aK0Cd5OnFJk3~>yPn)*;5=O%{?kBtjX9GS}k z0wa4BRaTh^cuC~(s3e&P#7GrR9cQFqgkG1z-Au$=l6X`leU>17B1i=X)IM5s=9ND7M z(Bdy11z~z38?6`!NwmZL?I7w4dOPD1OEAX3F(a57#3ZK6J3G6@N#@dZ8#k}%>}V1y>!QVrUpsZGqZv}hCH6@n^9nBMYI*Kyj{2I!NI6Yl zgh*!SMkOLF{!AeWOPHiv2xg8O8J9WZs;M`ON{`A$g>yMh=i9ce>RPpG%?2EyEj-oM z(Wq)%(V$_%(2$rsIzmM7G)P=r+>pUBCKoZtTkmv<-WF+;>s7%nra=Vd<${R8DPW|c z3dv@2Vn^;&$vSe>$n4Q$$K4p0mYVa4UIip2$pI0=LYS{_xJQyK3{_@Jv}ikv%(q>5b9Pm zyxoHY>WjZbk|dML8FYk5=$F{_ixrQZW`{#sQ59uFIiemRmw^y7M*4+5^!R;m+}r4k zGN{BEPam8_ON{-&HbD3nwES|_DGaLxueU#HZC}|2_5UhP$Z0Y=6EHQg(Xz}=p zinQFkS;1iuBNPvb|ImjBa;Y(fb1@=a>!8bwU~&-a&q!;S2N%i$60ypNRJ74BFD_#6 zDVP@a3Dr@X>GKq6L86T)6VAO@>>29oF&gPHp3e-(CgP|iNEBcULa%~E*4sp=Hbkh7 zNoe*9jt-Tz#Bs%acayM!vZD*m`H*kYRJ@3fk@|giDJaxGBqJ|-c4^7jtJ2fUg3;<@ga)O(vE_Jw%ZWqM;9##6qYz$` zz#8g(Vbe$05R!;B>;xH8$yX-s>FVt0JaS|ox%5$*OXF>5}llbC5<7NpJuxoRdxSkRMkx*57}s|3uq+Yu!6So7YYcPdiCNg!Q+1cQuJp^Lg+GUAw_ z=!c`JAVfqc!;Og00n%I$c`xK3m+6EXF~$ft1jOXM01p!HJmcZ*Ff@jU1=0Igd%ONS z3Dg$K2af4oM8p_-n+TV1Sk5F3HW00KyW8E<(^XluZNbi+yEkmwv}pj{p(((wLQ1tOYEgpZPf ze9dHc4-Pcf?%dkEW9KG18fv^pq)YnJ+>IT_>#Me}>pR@EFH$nOLQITgID2mHAt&Tu zfGOl;9uj|5FWgMr+SlFH)zq-H<nHC3%p2h@^ad({6vF9*o~P>zLGO@{z=RT^T;I8CNFazTA}0I^y`CoY5>FZyTNM@2 z1!)+H!)d@F7|`HwyFsX@qOo2FF}!$jrwe)se%~GdOo8vAN5&Xf;5vys#zZ+0V~ivQ zdqhNTx9Z$mSGRe`u3ZZb9<0@W!G!EfD15f8dQtprdAJlt=aqX_byQVVt=v|%eXYac zaxf-@lXPKZ5JsV#c%o0k5ukTnUZoIOVr<43sW=nUa2g@FU~DJ6HDf_I2o^pl?mpppc>mF%HrwkWJV&!*~qovKI?NJt!}# zY6Pqhql#`&-YG|&(`6|31}4F1aT;`ZNH&?J#H5i~GiJ}cIj>|`5-MOc+|NC5YFydZ zxMlO!gPS+L*0F!@E_;8EBNU6izlD+AMq~l`*ce6n$YdSpa~#~dWz*g@YhUizSG$kM z`+p~pab3CybXE7C+Oc!vzBOz9)8BA#xBuXPJIXGRA3lGJNhO<=$QS8AN#(xXo!#xb zcdk9Ky>edj-tGAO>pbUq;w-&lZg@s{(d6{p?5REhfuSy!%7ji4F0cMD=nWo3fWmln z1$rb_ZRCk(K}ez=T3{uYu<#4Q+D=⋙MEyChBO&R0JVMEbbaI^%$C@ihPjgG>K<) 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 z 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

%gPwDU1s0=m6N?HIGwSsK9`>4zxW0ji2H| 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 U@=HG7^q?K4wx*%_1>fTR2Ok4r<^TWy literal 0 HcmV?d00001 diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/resolve-invoice-nft-policy-id.mjs b/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/resolve-invoice-nft-policy-id.mjs new file mode 100644 index 00000000..c1b301ee --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/resolve-invoice-nft-policy-id.mjs @@ -0,0 +1,26 @@ +import fs from "fs"; +import path from "path"; +import { resolveScriptHash } from "@meshsdk/core"; + +const blueprintPath = path.resolve( + process.cwd(), + "..", + "safequote-app-aiken", + "plutus.json", +); +const blueprint = JSON.parse(fs.readFileSync(blueprintPath, "utf8")); + +const validator = blueprint.validators.find( + (item) => + item.title.endsWith(".mint") && item.title.includes("mint_invoice_nft"), +); + +if (!validator) { + const availableTitles = blueprint.validators.map((item) => item.title); + throw new Error( + `Mint validator was not found in plutus.json. Available titles: ${availableTitles.join(", ")}`, + ); +} + +const policyId = resolveScriptHash(validator.compiledCode, "V3"); +console.log(policyId); diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/seed.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/seed.ts new file mode 100644 index 00000000..1ab77327 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/seed.ts @@ -0,0 +1,21 @@ +type SeedStatus = "created" | "updated" | "unchanged" | "skipped"; + +function logSeed(entity: string, status: SeedStatus, detail: string) { + console.log( + JSON.stringify({ + scope: "seed", + entity, + status, + detail, + timestamp: new Date().toISOString(), + }), + ); +} + +logSeed("seller-demo", "created", "demo seller initialized"); +logSeed("user-demo", "created", "demo user initialized"); +logSeed( + "invoice-categories", + "unchanged", + "default categories already present", +); diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/test-pyth.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/test-pyth.ts new file mode 100644 index 00000000..639dcdc6 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/test-pyth.ts @@ -0,0 +1,43 @@ +import { config as loadEnv } from "dotenv"; +import { PythLazerClient } from "@pythnetwork/pyth-lazer-sdk"; + +loadEnv({ path: ".env.local" }); + +async function main() { + const token = process.env.PYTH_ACCESS_TOKEN; + const feedId = Number(process.env.PYTH_LAZER_ADA_USD_FEED_ID ?? "16"); + + if (!token) { + throw new Error("Missing PYTH_ACCESS_TOKEN in .env.local"); + } + + const client = await PythLazerClient.create({ + token, + webSocketPoolConfig: { + urls: [ + "wss://pyth-lazer-0.dourolabs.app/v1/stream", + "wss://pyth-lazer-1.dourolabs.app/v1/stream", + "wss://pyth-lazer-2.dourolabs.app/v1/stream", + ], + }, + }); + + try { + const latestPrice = await client.getLatestPrice({ + channel: "fixed_rate@200ms", + formats: ["solana"], + jsonBinaryEncoding: "hex", + priceFeedIds: [feedId], + properties: ["price", "exponent"], + }); + + console.log(JSON.stringify(latestPrice, null, 2)); + } finally { + client.shutdown(); + } +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/login/route.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/login/route.ts new file mode 100644 index 00000000..58dc5934 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/login/route.ts @@ -0,0 +1,69 @@ +import { NextResponse } from "next/server"; +import type { SessionUser } from "@/types/auth"; + +function requireEnv(name: string) { + const value = process.env[name]; + + if (!value) { + throw new Error(`Missing environment variable: ${name}`); + } + + return value; +} + +const USERS = [ + { + id: "seller-demo", + role: "seller", + email: requireEnv("DEMO_SELLER_EMAIL"), + password: requireEnv("DEMO_SELLER_PASSWORD"), + displayName: "Demo Seller", + }, + { + id: "user-demo", + role: "user", + email: requireEnv("DEMO_USER_EMAIL"), + password: requireEnv("DEMO_USER_PASSWORD"), + displayName: "Demo User", + }, +] as const; + +export async function POST(request: Request) { + const body = (await request.json()) as { + email?: string; + password?: string; + }; + + const user = USERS.find( + (item) => item.email === body.email && item.password === body.password, + ); + + if (!user) { + return NextResponse.json( + { message: "Invalid credentials" }, + { status: 401 }, + ); + } + + const response = NextResponse.json( + { + accessToken: `demo-token-${user.id}`, + user: { + id: user.id, + role: user.role, + email: user.email, + displayName: user.displayName, + } satisfies SessionUser, + }, + { status: 200 }, + ); + + response.cookies.set("safequote_session", `demo-token-${user.id}`, { + httpOnly: true, + sameSite: "lax", + secure: false, + path: "/", + }); + + return response; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/wallet/route.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/wallet/route.ts new file mode 100644 index 00000000..6656c52c --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/wallet/route.ts @@ -0,0 +1,44 @@ +import { NextResponse } from "next/server"; + +export async function POST(request: Request) { + const body = (await request.json()) as { + walletName?: string; + address?: string; + }; + + if (!body.walletName || !body.address) { + return NextResponse.json( + { message: "Wallet name and address are required" }, + { status: 400 }, + ); + } + + const user = { + id: `wallet-${body.walletName.toLowerCase()}`, + walletName: body.walletName, + walletAddress: body.address, + }; + + const response = NextResponse.json({ user }, { status: 200 }); + response.cookies.set("safequote_session", body.address, { + httpOnly: false, + sameSite: "lax", + secure: false, + path: "/", + }); + + return response; +} + +export async function DELETE() { + const response = NextResponse.json({ ok: true }, { status: 200 }); + response.cookies.set("safequote_session", "", { + httpOnly: false, + sameSite: "lax", + secure: false, + path: "/", + maxAge: 0, + }); + + return response; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/[id]/route.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/[id]/route.ts new file mode 100644 index 00000000..e673f7f6 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/[id]/route.ts @@ -0,0 +1,33 @@ +import { NextResponse } from "next/server"; +import { findInvoiceById } from "@/features/invoices/lib/invoice-store"; + +export async function PATCH( + request: Request, + context: { params: Promise<{ id: string }> }, +) { + const { id } = await context.params; + const invoice = findInvoiceById(id); + + if (!invoice) { + return NextResponse.json({ message: "Invoice not found" }, { status: 404 }); + } + + const body = (await request.json()) as { + buyerAddress?: string; + adaQuoteSnapshot?: number; + feedId?: number; + txHash?: string; + status?: "open" | "paid" | "expired"; + }; + + Object.assign(invoice, { + buyerAddress: body.buyerAddress ?? invoice.buyerAddress, + adaQuoteSnapshot: body.adaQuoteSnapshot ?? invoice.adaQuoteSnapshot, + feedId: body.feedId ?? invoice.feedId, + txHash: body.txHash ?? invoice.txHash, + status: body.status ?? invoice.status, + updatedAt: new Date().toISOString(), + }); + + return NextResponse.json({ item: invoice }, { status: 200 }); +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/route.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/route.ts new file mode 100644 index 00000000..fb2f9dc9 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/route.ts @@ -0,0 +1,40 @@ +import { NextResponse } from "next/server"; +import { invoices } from "@/features/invoices/lib/invoice-store"; +import type { Invoice } from "@/types/invoice"; + +export async function GET() { + return NextResponse.json({ items: invoices }, { status: 200 }); +} + +export async function POST(request: Request) { + const body = (await request.json()) as { + sellerAddress: string; + clientName: string; + concept: string; + amountUsd: number; + pinHash: string; + invoiceNftPolicyId: string; + invoiceNftName: string; + deadline: string; + }; + + const now = new Date().toISOString(); + + const invoice: Invoice = { + id: crypto.randomUUID(), + sellerAddress: body.sellerAddress, + clientName: body.clientName, + concept: body.concept, + amountUsd: Number(body.amountUsd), + pinHash: body.pinHash, + invoiceNftPolicyId: body.invoiceNftPolicyId, + invoiceNftName: body.invoiceNftName, + status: "open", + deadline: body.deadline, + createdAt: now, + updatedAt: now, + }; + + invoices.unshift(invoice); + return NextResponse.json({ item: invoice }, { status: 201 }); +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/oracle/ada-usd/route.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/oracle/ada-usd/route.ts new file mode 100644 index 00000000..74b1a92b --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/oracle/ada-usd/route.ts @@ -0,0 +1,61 @@ +import { NextResponse } from "next/server"; +import { PythLazerClient } from "@pythnetwork/pyth-lazer-sdk"; + +export async function POST() { + const token = process.env.PYTH_ACCESS_TOKEN; + const feedId = Number(process.env.PYTH_LAZER_ADA_USD_FEED_ID ?? "16"); + + if (!token) { + return NextResponse.json( + { message: "Missing PYTH_ACCESS_TOKEN configuration" }, + { status: 500 }, + ); + } + + const client = await PythLazerClient.create({ + token, + webSocketPoolConfig: { + urls: [ + "wss://pyth-lazer-0.dourolabs.app/v1/stream", + "wss://pyth-lazer-1.dourolabs.app/v1/stream", + "wss://pyth-lazer-2.dourolabs.app/v1/stream", + ], + }, + }); + + try { + const update = await client.getLatestPrice({ + channel: "fixed_rate@200ms", + formats: ["solana"], + jsonBinaryEncoding: "hex", + priceFeedIds: [feedId], + properties: ["price", "exponent"], + }); + + const parsed = update.parsed; + const priceFeed = parsed?.priceFeeds?.[0]; + const binary = update.solana?.data; + + if (!parsed || !priceFeed || !binary) { + return NextResponse.json( + { message: "Incomplete response from Pyth Lazer" }, + { status: 502 }, + ); + } + + return NextResponse.json( + { + item: { + feedId: priceFeed.priceFeedId, + price: priceFeed.price, + exponent: priceFeed.exponent, + timestampUs: parsed.timestampUs, + binary, + }, + }, + { status: 200 }, + ); + } finally { + client.shutdown(); + } +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/globals.scss b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/globals.scss new file mode 100644 index 00000000..1616edd5 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/globals.scss @@ -0,0 +1,27 @@ +html, +body { + margin: 0; + min-height: 100%; + font-family: "Segoe UI", sans-serif; + background: #081120; + color: #f2f6fb; +} + +main { + display: grid; + gap: 24px; +} + +section { + padding: 20px; + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 16px; + background: rgba(255, 255, 255, 0.03); +} + +input, +select, +button { + margin: 6px 6px 6px 0; + padding: 10px 12px; +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/layout.tsx b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/layout.tsx new file mode 100644 index 00000000..f5c2ad6a --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/layout.tsx @@ -0,0 +1,57 @@ +import type { Metadata } from "next"; +import "./globals.scss"; + +export const metadata: Metadata = { + metadataBase: new URL("https://safequote.local"), + title: { + default: "SafeQuote", + template: "%s | SafeQuote", + }, + description: + "USD invoicing with ADA payments and on-chain price verification powered by Pyth Network.", + applicationName: "SafeQuote", + keywords: ["Cardano", "Aiken", "Pyth", "ADA", "Invoices", "MeshJS"], + authors: [{ name: "Veltrix Team" }], + creator: "Veltrix Team", + publisher: "Veltrix Team", + appleWebApp: { + title: "SafeQuote", + }, + manifest: "/site.webmanifest", + icons: { + icon: [ + { url: "/favicon.ico" }, + { url: "/favicon.svg", type: "image/svg+xml" }, + { url: "/favicon-96x96.png", sizes: "96x96", type: "image/png" }, + ], + apple: [{ url: "/apple-touch-icon.png" }], + }, + openGraph: { + title: "SafeQuote", + description: + "Get paid in ADA while invoicing in USD with on-chain verified pricing from Pyth.", + url: "https://safequote.local", + siteName: "SafeQuote", + locale: "en_US", + type: "website", + }, + twitter: { + card: "summary_large_image", + title: "SafeQuote", + description: + "Get paid in ADA while invoicing in USD with on-chain verified pricing from Pyth.", + }, +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + {children} + + ); +} + diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.module.scss b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.module.scss new file mode 100644 index 00000000..b2b89198 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.module.scss @@ -0,0 +1,3 @@ +.page { + min-height: 100vh; +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.tsx b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.tsx new file mode 100644 index 00000000..fa9bc811 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.tsx @@ -0,0 +1,5 @@ +import { SafeQuoteApp } from "@/features/ui/safequote-app"; + +export default function Home() { + return ; +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-store.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-store.ts new file mode 100644 index 00000000..e2af803d --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-store.ts @@ -0,0 +1,7 @@ +import type { Invoice } from "@/types/invoice"; + +export const invoices: Invoice[] = []; + +export function findInvoiceById(id: string) { + return invoices.find((invoice) => invoice.id === id) ?? null; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice.ts new file mode 100644 index 00000000..48a5f5f2 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice.ts @@ -0,0 +1,54 @@ +import type { AdaUsdQuote } from "@/types/oracle"; +import type { Invoice } from "@/types/invoice"; + +export interface PayInvoiceArgs { + invoice: Invoice; + quote: AdaUsdQuote; + walletAddress: string; +} + +export interface PaymentPreview { + invoiceId: string; + walletAddress: string; + quoteFeedId: number; + quotePrice: string; + quoteBinarySize: number; + quoteRateUsd: number; + expectedAda: number; + expectedLovelace: number; + txHash: string; + nextSteps: string[]; +} + +function quoteToUsdRate(quote: AdaUsdQuote) { + return Number(quote.price) * 10 ** quote.exponent; +} + +export async function payInvoice({ + invoice, + quote, + walletAddress, +}: PayInvoiceArgs) { + const quoteRateUsd = quoteToUsdRate(quote); + const expectedAda = invoice.amountUsd / quoteRateUsd; + const expectedLovelace = Math.ceil(expectedAda * 1_000_000); + const txHash = `demo_${invoice.id}_${Date.now()}`; + + return { + invoiceId: invoice.id, + walletAddress, + quoteFeedId: quote.feedId, + quotePrice: quote.price, + quoteBinarySize: quote.binary.length, + quoteRateUsd, + expectedAda, + expectedLovelace, + txHash, + nextSteps: [ + "Load the invoice datum and expected lovelace amount.", + "Attach the latest signed Pyth ADA/USD update.", + "Reference the Pyth state UTxO in preprod.", + "Build the pay transaction and lock funds at the invoice script.", + ], + } satisfies PaymentPreview; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/ui/safequote-app.tsx b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/ui/safequote-app.tsx new file mode 100644 index 00000000..728e647d --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/ui/safequote-app.tsx @@ -0,0 +1,322 @@ +"use client"; + +import { startTransition, useEffect, useMemo, useState } from "react"; +import { + connectWallet, + getInstalledWallets, +} from "@/features/wallet/lib/wallet-adapter"; +import type { Invoice } from "@/types/invoice"; +import type { AdaUsdQuote } from "@/types/oracle"; + +function hashPin(pin: string) { + return pin.trim().toLowerCase(); +} + +function quoteRate(quote: AdaUsdQuote) { + return Number(quote.price) * 10 ** quote.exponent; +} + +export function SafeQuoteApp() { + const [wallets, setWallets] = useState<{ name: string }[]>([]); + const [walletName, setWalletName] = useState(""); + const [walletAddress, setWalletAddress] = useState(""); + const [quote, setQuote] = useState(null); + const [invoices, setInvoices] = useState([]); + const [createForm, setCreateForm] = useState({ + clientName: "", + concept: "", + amountUsd: "500", + pin: "", + deadline: "", + }); + + async function fetchInvoices() { + const response = await fetch("/api/invoices"); + const payload = (await response.json()) as { items: Invoice[] }; + return payload.items; + } + + async function fetchQuote() { + const response = await fetch("/api/oracle/ada-usd", { method: "POST" }); + const payload = (await response.json()) as { item: AdaUsdQuote }; + return payload.item; + } + + useEffect(() => { + let active = true; + + async function bootstrap() { + const [items, nextQuote, installedWallets] = await Promise.all([ + fetchInvoices(), + fetchQuote(), + getInstalledWallets(), + ]); + + if (!active) { + return; + } + + startTransition(() => { + setInvoices(items); + setQuote(nextQuote); + setWallets(installedWallets as { name: string }[]); + setWalletName((current) => current || installedWallets[0]?.name || ""); + }); + } + + void bootstrap(); + + return () => { + active = false; + }; + }, []); + + const myInvoices = useMemo( + () => invoices.filter((invoice) => invoice.sellerAddress === walletAddress), + [invoices, walletAddress], + ); + + const paidByMe = useMemo( + () => invoices.filter((invoice) => invoice.buyerAddress === walletAddress), + [invoices, walletAddress], + ); + + async function handleConnectWallet() { + const connection = await connectWallet(walletName); + setWalletAddress(connection.changeAddress); + + await fetch("/api/auth/wallet", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + walletName, + address: connection.changeAddress, + }), + }); + } + + async function handleLogout() { + await fetch("/api/auth/wallet", { method: "DELETE" }); + + startTransition(() => { + setWalletAddress(""); + }); + } + + async function handleCreateInvoice(event: React.FormEvent) { + event.preventDefault(); + + await fetch("/api/invoices", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + sellerAddress: walletAddress, + clientName: createForm.clientName, + concept: createForm.concept, + amountUsd: Number(createForm.amountUsd), + pinHash: hashPin(createForm.pin), + invoiceNftPolicyId: `${process.env.NEXT_PUBLIC_INVOICE_NFT_POLICY_ID}`, + invoiceNftName: `invoice-${Date.now()}`, + deadline: new Date(createForm.deadline).toISOString(), + }), + }); + + const items = await fetchInvoices(); + startTransition(() => { + setInvoices(items); + }); + } + + async function handlePayInvoice(invoice: Invoice, pin: string) { + if (!quote) { + return; + } + + const rate = quoteRate(quote); + const minAda = invoice.amountUsd / rate; + + await fetch(`/api/invoices/${invoice.id}`, { + method: "PATCH", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + buyerAddress: walletAddress, + adaQuoteSnapshot: minAda, + feedId: quote.feedId, + txHash: `demo_${invoice.id}_${Date.now()}`, + status: hashPin(pin) === invoice.pinHash ? "paid" : invoice.status, + }), + }); + + const items = await fetchInvoices(); + startTransition(() => { + setInvoices(items); + }); + } + + return ( +

+

SafeQuote

+

Quotes in USD. Settled in ADA.

+

Secure milestone escrow powered by Pyth.

+ +
+

Wallet

+ + {walletAddress ? ( + + ) : ( + + )} +

{walletAddress || "No wallet connected"}

+
+ + {walletAddress ? ( +
+

Create invoice

+
+ + setCreateForm((current) => ({ + ...current, + clientName: event.target.value, + })) + } + /> + + setCreateForm((current) => ({ + ...current, + concept: event.target.value, + })) + } + /> + + setCreateForm((current) => ({ + ...current, + amountUsd: event.target.value, + })) + } + /> + + setCreateForm((current) => ({ + ...current, + pin: event.target.value, + })) + } + /> + + setCreateForm((current) => ({ + ...current, + deadline: event.target.value, + })) + } + /> + +
+
+ ) : ( +
+

Create invoice

+

Connect a preprod wallet to create a new invoice NFT.

+
+ )} + +
+

My emitted invoices

+ {myInvoices.map((invoice) => ( +
+ {invoice.clientName} +

{invoice.concept}

+

{invoice.amountUsd} USD

+

{invoice.status}

+
+ ))} +
+ +
+

Open invoices

+ {invoices + .filter((invoice) => invoice.status === "open") + .map((invoice) => ( + + ))} +
+ +
+

Paid by my wallet

+ {paidByMe.map((invoice) => ( +
+ {invoice.clientName} +

{invoice.status}

+

+ {invoice.invoiceNftPolicyId}.{invoice.invoiceNftName} +

+
+ ))} +
+
+ ); +} + +function PayCard({ + invoice, + quote, + onPay, +}: { + invoice: Invoice; + quote: AdaUsdQuote | null; + onPay: (invoice: Invoice, pin: string) => Promise; +}) { + const [pin, setPin] = useState(""); + + const minAda = quote + ? invoice.amountUsd / (Number(quote.price) * 10 ** quote.exponent) + : 0; + + return ( +
+ {invoice.clientName} +

{invoice.amountUsd} USD

+

Min ADA: {quote ? minAda.toFixed(4) : "Loading..."}

+ setPin(event.target.value)} + placeholder="PIN" + /> + +
+ ); +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/wallet/lib/wallet-adapter.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/wallet/lib/wallet-adapter.ts new file mode 100644 index 00000000..7e994655 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/wallet/lib/wallet-adapter.ts @@ -0,0 +1,26 @@ +import { BrowserWallet } from "@meshsdk/core"; + +function assertBrowserEnvironment() { + if (typeof window === "undefined") { + throw new Error("Browser wallet APIs are only available on the client"); + } +} + +export async function getInstalledWallets() { + assertBrowserEnvironment(); + return BrowserWallet.getAvailableWallets(); +} + +export async function connectWallet(walletName: string) { + assertBrowserEnvironment(); + + const wallet = await BrowserWallet.enable(walletName); + const networkId = await wallet.getNetworkId(); + const changeAddress = await wallet.getChangeAddress(); + + if (networkId === 1) { + throw new Error("Mainnet wallet detected. Switch to preprod/testnet."); + } + + return { wallet, networkId, changeAddress }; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/proxy.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/proxy.ts new file mode 100644 index 00000000..d152fe38 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/proxy.ts @@ -0,0 +1,21 @@ +import { NextResponse } from "next/server"; +import type { NextRequest } from "next/server"; + +const PRIVATE_PREFIXES = ["/dashboard", "/invoices", "/create-invoice"]; + +export function proxy(request: NextRequest) { + const session = request.cookies.get("safequote_session"); + const isPrivateRoute = PRIVATE_PREFIXES.some((prefix) => + request.nextUrl.pathname.startsWith(prefix), + ); + + if (isPrivateRoute && !session) { + return NextResponse.redirect(new URL("/", request.url)); + } + + return NextResponse.next(); +} + +export const config = { + matcher: ["/dashboard/:path*", "/invoices/:path*", "/create-invoice/:path*"], +}; diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/auth.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/auth.ts new file mode 100644 index 00000000..a073b618 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/auth.ts @@ -0,0 +1,10 @@ +export interface SessionUser { + id: string; + walletName: string; + walletAddress: string; +} + +export interface SessionState { + isAuthenticated: boolean; + user: SessionUser | null; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/invoice.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/invoice.ts new file mode 100644 index 00000000..94ee232b --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/invoice.ts @@ -0,0 +1,20 @@ +export type InvoiceStatus = "open" | "paid" | "expired"; + +export interface Invoice { + id: string; + sellerAddress: string; + buyerAddress?: string; + clientName: string; + concept: string; + amountUsd: number; + pinHash: string; + invoiceNftPolicyId: string; + invoiceNftName: string; + adaQuoteSnapshot?: number; + feedId?: number; + txHash?: string; + status: InvoiceStatus; + deadline: string; + createdAt: string; + updatedAt: string; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/oracle.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/oracle.ts new file mode 100644 index 00000000..b271b8d8 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/oracle.ts @@ -0,0 +1,7 @@ +export interface AdaUsdQuote { + feedId: number; + price: string; + exponent: number; + timestampUs: string; + binary: string; +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/tsconfig.json b/lazer/cardano/safequote-veltrix/safequote-app-website/tsconfig.json new file mode 100644 index 00000000..cf9c65d3 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + "**/*.mts" + ], + "exclude": ["node_modules"] +} From 08c454d327d12a8785df0927154d51eafcae7be1 Mon Sep 17 00:00:00 2001 From: esis8 Date: Sun, 22 Mar 2026 20:53:50 -0300 Subject: [PATCH 2/2] Finish --- .../safequote-app-website/package.json | 1 + .../src/app/api/invoices/route.ts | 8 +- .../src/app/api/pyth/context/route.ts | 27 +++ .../src/contracts/plutus.json | 181 ++++++++++++++++++ .../src/features/contracts/lib/blueprint.ts | 64 +++++++ .../invoices/lib/create-invoice-on-chain.ts | 120 ++++++++++++ .../src/features/invoices/lib/encoding.ts | 5 + .../invoices/lib/invoice-plutus-data.ts | 63 ++++++ .../invoices/lib/pay-invoice-on-chain.ts | 149 ++++++++++++++ .../src/features/invoices/lib/pin.ts | 16 ++ .../src/features/invoices/lib/provider.ts | 11 ++ .../src/features/ui/safequote-app.tsx | 176 ++++++++--------- .../src/types/invoice.ts | 5 +- .../safequote-app-website/src/types/pyth.ts | 5 + 14 files changed, 743 insertions(+), 88 deletions(-) create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/pyth/context/route.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/contracts/plutus.json create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/features/contracts/lib/blueprint.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/create-invoice-on-chain.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/encoding.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-plutus-data.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice-on-chain.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pin.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/provider.ts create mode 100644 lazer/cardano/safequote-veltrix/safequote-app-website/src/types/pyth.ts diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/package.json b/lazer/cardano/safequote-veltrix/safequote-app-website/package.json index 12d5a1f9..d2804e77 100644 --- a/lazer/cardano/safequote-veltrix/safequote-app-website/package.json +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/package.json @@ -11,6 +11,7 @@ "dependencies": { "@hookform/resolvers": "^5.2.2", "@meshsdk/core": "1.9.0-beta.101", + "@noble/hashes": "^2.0.1", "@pythnetwork/pyth-lazer-sdk": "^6.2.1", "dotenv": "^17.3.1", "next": "16.2.1", diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/route.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/route.ts index fb2f9dc9..b61b738b 100644 --- a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/route.ts +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/route.ts @@ -15,6 +15,9 @@ export async function POST(request: Request) { pinHash: string; invoiceNftPolicyId: string; invoiceNftName: string; + invoiceScriptAddress?: string; + lockTxHash?: string; + lockTxIndex?: number; deadline: string; }; @@ -29,6 +32,9 @@ export async function POST(request: Request) { pinHash: body.pinHash, invoiceNftPolicyId: body.invoiceNftPolicyId, invoiceNftName: body.invoiceNftName, + invoiceScriptAddress: body.invoiceScriptAddress, + lockTxHash: body.lockTxHash, + lockTxIndex: body.lockTxIndex, status: "open", deadline: body.deadline, createdAt: now, @@ -37,4 +43,4 @@ export async function POST(request: Request) { invoices.unshift(invoice); return NextResponse.json({ item: invoice }, { status: 201 }); -} +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/pyth/context/route.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/pyth/context/route.ts new file mode 100644 index 00000000..a042a38c --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/pyth/context/route.ts @@ -0,0 +1,27 @@ +import { NextResponse } from "next/server"; + +export async function GET() { + const stateTxHash = process.env.NEXT_PUBLIC_PYTH_STATE_TX_HASH; + const stateOutputIndex = Number( + process.env.NEXT_PUBLIC_PYTH_STATE_OUTPUT_INDEX ?? "-1", + ); + const withdrawScriptHash = process.env.NEXT_PUBLIC_PYTH_WITHDRAW_SCRIPT_HASH; + + if (!stateTxHash || stateOutputIndex < 0 || !withdrawScriptHash) { + return NextResponse.json( + { message: "Missing Pyth context configuration" }, + { status: 500 }, + ); + } + + return NextResponse.json( + { + item: { + stateTxHash, + stateOutputIndex, + withdrawScriptHash, + }, + }, + { status: 200 }, + ); +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/contracts/plutus.json b/lazer/cardano/safequote-veltrix/safequote-app-website/src/contracts/plutus.json new file mode 100644 index 00000000..11f42ad9 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/contracts/plutus.json @@ -0,0 +1,181 @@ +{ + "preamble": { + "title": "esis8/safequote_app_aiken", + "description": "SafeQuote Aiken contracts", + "version": "0.0.0", + "plutusVersion": "v3", + "compiler": { + "name": "Aiken", + "version": "v1.1.19+e525483" + }, + "license": "Apache-2.0" + }, + "validators": [ + { + "title": "invoice.invoice.spend", + "datum": { + "title": "datum", + "schema": { + "$ref": "#/definitions/invoice~1InvoiceDatum" + } + }, + "redeemer": { + "title": "redeemer", + "schema": { + "$ref": "#/definitions/invoice~1InvoiceRedeemer" + } + }, + "compiledCode": "59181701010029800aba4aba2aba1aba0aab9faab9eaab9dab9a4888888896600264653001300800198041804800cdc3a400530080024888966002600460106ea800e2653001300d00198069807000cdc3a40009112cc004c004c030dd500444c8c8cc8966002602a007159800980298081baa0068cc004c050c044dd50034c044dd500648c054c058c0580064602a602c00323015301630163016301630160019180a980b180b180b000cdc024003374a900024444444464b30013371e6e50dd7180e980f0041bae3004301a375401319800918019980e98019980e9ba90014bd701980ea6103d87a80004bd70488c8cc00400400c896600200314a115980098019810800c528c4cc008008c08800501c203e91119199119801001000912cc00400600713233225980099b910070028acc004cdc78038014400600c810a26600a00a604e0088108dd718100009bad30210013023001408464646600200200c44b3001001801c4c8cc896600266e4402400a2b30013371e0120051001803204489980280298140022044375c60420026eacc088004c0900050220a5eb7bdb180520004889660026466446600a6eb0c034c080dd500c12cc004cdd7981218109baa001003899b8900298009bab300d30213754003488100a44100401514a080f8c010004cc88cdc1980499b803370466e08dd6980618101baa00f4820225ea60020054805266e052000375a6046604800e80100040048896600266e2000520008a4001159800980a800c520028992cc004c058cdc300124009198008024c00400e66e0c009200440111300198008024c00400e66e0cc02c009200440108100dc1001203e407c66e08dd69810802a4190026eb8c080c074dd500644ca60026008003375c6012603c6ea80366eb8c084c088c088c088c088c078dd5006a4446600c6eb0c038c084dd500c92cc004cdd7981298111baa0010048980dcc004dd5980718111baa001801400d006452820401bae302000b8a50406c8a5040613001370e90024dc4a400922325980099b8f48900375c603e60400031301f0018b20343002001911919800800801911980180098010014dd71803180c9baa008488888c8c8c966002604a00313259800980b18109baa001899192cc004c060c08cdd5000c4c966002603260486ea8006264b3001301a30253754003133028302930263754004660506052604c6ea80052f5c11640906020604a6ea800e2c8118c09cc090dd5000c59022180798119baa00130253022375400316408064660020026eb0c03cc088dd51812801112cc004006298103d87a80008992cc004cdc39bad302730243754002901044c030cc0980052f5c113300300330280024088604c00281222c8110c966002602a60406ea8006264b300130163021375400313233007001225980080144c8cc004004010896600200314bd7044cc0a660026e2520009b8c480126e0120039b89480226e3120009b8c480226e01200748888888cc88cc0548c8d6600266e3cdd7181a800a4410475d3c793008cc004888c8cc00cdd6981c8009bae3039303a00130030019b89480426e3120109b804803e600e90082444446600a464660766ea0cde5250375c6078002660766078607a00297ae05980098029b8d00189981d1ba930020013303a37526600860066e340040052f5c11640d84646600e4660786ea0cdc7000a4000660786ea4cc008c08cdc6800800a5eb808cc0208cc0f4dd419b8e00148000cc0f4dd49980198121b8d0010014bd70111919198201813198201ba800733040375000a66080608200297ae033040304130420014bd7018008012cc004c05400a2653001001a5eb820068008889660026066003123233043374e002660866ea40092f5c065300100180252f5c080088896600200510018cc00400e608e005330453046002001400c8222246530010059982198220008024c0a800e6eb8c110c1140050054c004c8cc10cdd419bca4a06eb8c110004cc10cc110c1140052f5c0b30013016371a00313304237526022002660846ea4cc050c04cdc6800800a5eb822c81f24466088004660886ea40052f5c1370e90034dc3a4010911119191919803194c0040066eb0c12c00a60606609460960106609498103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80004bd70200222259800801440063300100398270014c8c966002608000313230353304f30500013304f30353304f3050304d375400697ae030513051001304c37540071598009822800c4c8c8c0d8cc140c144008cc140c144004cc140c0d8cc140c144c138dd500225eb80c148c148004c144004c130dd5001c566002606600313232323037330513052003330513052002330513052001330513037330513052304f375400a97ae03053305300130520013051001304c37540071598009805000c4c8c8c8c8c0e0cc148c14c010cc148c14c00ccc148c14c008cc148c14c004cc148c0e0cc148c14cc140dd500325eb80c150c150004c14c004c148004c144004c130dd5001c56600260120031323232323230393305330540053305330540043305330540033305330540023305330540013305330393305330543051375400e97ae0305530550013054001305300130520013051001304c375400715980099b874802800626464646464646074660a860aa00c660a860aa00a660a860aa008660a860aa006660a860aa004660a860aa002660a86074660a860aa60a46ea80212f5c060ac60ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e9006000c4c8c8c8c8c8c8c8c0eccc154c15801ccc154c158018cc154c158014cc154c158010cc154c15800ccc154c158008cc154c158004cc154c0eccc154c158c14cdd5004a5eb80c15cc15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d200e00189919191919191919181e1982b182b8041982b182b8039982b182b8031982b182b8029982b182b8021982b182b8019982b182b8011982b182b8009982b181e1982b182b982a1baa00a4bd70182c182c000982b800982b000982a800982a00098298009829000982880098261baa0038acc004cdc3a40200031323232323232323232303d33057305800933057305800833057305800733057305800633057305800533057305800433057305800333057305800233057305800133057303d3305730583055375401697ae03059305900130580013057001305600130550013054001305300130520013051001304c375400715980099b8748048006264646464646464646464607c660b060b2014660b060b2012660b060b2010660b060b200e660b060b200c660b060b200a660b060b2008660b060b2006660b060b2004660b060b2002660b0607c660b060b260ac6ea80312f5c060b460b400260b200260b000260ae00260ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e900a000c4c8c8c8c8c8c8c8c8c8c8c8c0fccc164c16802ccc164c168028cc164c168024cc164c168020cc164c16801ccc164c168018cc164c168014cc164c168010cc164c16800ccc164c168008cc164c168004cc164c0fccc164c168c15cdd5006a5eb80c16cc16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d2016001899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d18201982d182d982c1baa00e4bd70182e182e000982d800982d000982c800982c000982b800982b000982a800982a00098298009829000982880098261baa003899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d182d982e0009982d18201982d182d982c1baa00e4bd7025eb80c16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001a0944128825104a20944128825104a20944128825104a18251baa001304d002400c8258dd718251825800991acc004c08000a2653001001a5eb82006800888966002607c00312323304e374e0026609c6ea40092f5c065300100180252f5c080088896600200510018cc00400e60a4005330503051002001400c827a246530010059982718278008024c0d400e6eb8c13cc1400050051802800a0908b208a375c60946096006530012232598009800a40211598009800a4001148002266e3922010801020408102040800000241211598009800a408113370490400219801801980a80144cdc124101010100406600600666e00009203f41208240dc4000c888c8cc134c00cdd698270009982698271827800a5eb80c00c006660926ea0cdc7000a4000660926ea4cc03cc0c0dc6800800a5eb8122232329800919802919198289ba833794940dd718290009982898291829800a5eb816600260366e340062660a06ea4c060004cc140dd49980d180c9b8d0010014bd7045904c1191801acc004c10c006298103d87a80008981b998289ba80014bd70209a30030019bad304f003911191acc006600260886eb4c14c00694294504e44cc02000c8c014c0e4cc14cdd4000a5eb822601e600898103d87a800041386eb8c14cc150004cc144dd419b8e00148000cc144dd49980b981c1b8d0010014bd7024446b30013043002898019181c19829000a5eb822b3001304800289801919ba548008cc1480052f5c1159800981b00144c00c8cdd2a4008660a400297ae08acc004c03400a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e95200633052375000297ae08acc004c03000a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e952008330523750b3001337100029040400244006266e04004c0192020413897ae08acc004cdc3a40140051300323374a900519829000a5eb822b30013370e900600144cc0048cdd2a4018660a400297ae0232330533750600c6eb4c150004cc14cc150c1540052f5c064660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874803800a266002466e95200e330520014bd70119198299ba833794940dd7182a00099829982a182a800a5eb8166002603a6e340062660a46ea4c068004cc148dd49980e180d9b8d0010014bd7045904e456600266e1d2010002899800919ba548040cc1480052f5c0464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874804800a246464660a866e9520123305430550014bd701982a182a982b000a5eb80c004008cc0208c8cc150dd419bca4a06eb8c154004cc150c154c1580052f5c0b30013037371a00313305337526046002660a66ea4cc0a4c0a0dc6800800a5eb822c8278966002608a00314c103d87980008acc004c128006298103d87a80008acc004c0e0006298103d87b80008acc004c03c006298103d87c80008acc004c038006298103d87d80008b209e413c827904f209e8acc004cdc3a40280051300323374a900a19829000a5eb822b30013370e900b00144c00c8cdd2a402c660a400297ae08acc004cdc3a403000513300123374a900c19829000a5eb808c8cc14cdd419bca4a06eb8c150004cc14cc150c1540052f5c0b3001301d371a00313305237526034002660a46ea4cc070c06cdc6800800a5eb822c82722c826904d209a4134826904d209a4134826904d209a41348268dd718291829803096600266e2000520808080808080808080028800c4cdc0800980124100028250c00c00c6eb4c120004c8cc11cdd419b8e00148000cc11cdd49980698171b8d0010014bd701bae30473048004207a8b20743718900122c8180dd7181a981b000acc004c01cdc6800c4cc0ccdd49801000998199ba9330053004371a00200297ae08b205e375c603a60606ea8cc0548c8d6600266e3cdd7181a800a44104b9011a82008919191919191919911981e98119981e981f0039981e9ba90013303d303e0024bd701981e981f181f80125eb80d660026024003125980099b89002371a00313303c37526601e004002660786ea66002005337026e3400400a002b8c25eb822c81c22c81b8dd7181e181e8011bae303c004375a607600264660746ea0cde5250375c6076002660746076607800297ae059800980e9b8d00189981c9ba930090013303937526601e601c6e340040052f5c11640d46eb8c0e4c0e8004d6600294624b30013371290201b8d00189981c1ba93300b48100004cc0e0dd4cc005204099b80371a002901fc0057184bd704590344590331bae30383039001300100259800a51892cc004cdc4a4100026e3400626606c6ea4cc0252080010013303637533001482000666e00dc6800a40ff0015c612f5c11640c91640c51640c06eb8c0d4c0d800566002600e6e340062660666ea4c008004cc0ccdd49980298021b8d0010014bd7045902f1bae303300a300348010c00d2008198010011815800a050899180118150019bae302800240986eb0c094c088dd5000c5902019199119801001000912cc004006298103d87a80008992cc004cdd78021812000c4c034cc09cc0940052f5c11330030033029002408c604e0028128dd5981298131813181318131813181318131813181318111baa01a3374a90021981199ba548008cc08cc02cc084dd5181218109baa0014bd7025eb822c80f8c8cc004004dd6180698109baa0192259800800c530103d87a80008992cc006600266ebc00530103d87a8000a50a514085100189980180198138012042325980099912cc00400a294226530013259800980d98131baa00189bad3027302a37566054604e6ea800629000204a30290019baf3029302a0019bab003488966002003159800980100344cc01400d20008a50409d1325980099baf30290014c010140008acc004cc018010dd6981518169bab302a001898019ba6302e0028a5040a11598009980300224001130030078a5040a08140c0b000502a0ca600200337566024604c6ea8c048c098dd5002488cc0a8008cc0a8dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044ca60026eb8c0a00066eacc0a4006605a0069112cc004cdc8a441000038acc004cdc7a44100003899802980a198171ba60024bd70000c4cc015300103d87a800000640a919800803c006446600e0046606066ec0dd48029ba6004001401c81506056004814a29422942294102a1ba633025337606ea4018dd31981299bb04c10b4a50797468205374617465004c010101004bd6f7b63025eb7bdb1808928c566002603860446ea8c098c08cdd5181318119baa300f3023375400313259800980598119baa0018992cc004c064c090dd5000c4c8c8c8c8cc8966002605e00713259800981018159baa0018991919194c004dd69819800cdd718198024dd69819801cdd7181980124444b3001303800589980c1bab303700e225980080144cc0680308966002005130203303a0144bd7044c8c8cc06cc0e40084c00cc0f8010dd7181c800981d8012072899191980c981c00109801981e0021bae3036001303900240dd1640d4303300130320013031001302c37540031640a8605c00d1640b06eb8c0b0004dd5981600118160009815800981500098129baa0018b2046302730243754003164088602060466ea8c03cc08cdd5000c590214530103d87a80004084604a00281188966002602a60406ea800a2646464b3001302800289980318138018998030008024590251813000981300098109baa0028b203e2259800980a180f9baa00289919192cc004c09c00a26464b300130190018acc004c094dd5001401a2c81322b3001301e001899192cc004c0ac00a0111640a06eb4c0a4004c094dd50014566002601800315980098129baa0028034590264590232046408c60466ea8004c09800e2c8120c966002604600315980098049811000c5a260386044002810a2c8120dd51812800981280098101baa0028b203c22c807a2c8090dd718090009bae30120023012001300d375401116402c3009375400716401c300800130033754013149a26cac80081", + "hash": "e17f2b34d9308785e63a6e1862209f764a0c772f5cd8ad7580038d69" + }, + { + "title": "invoice.invoice.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "59181701010029800aba4aba2aba1aba0aab9faab9eaab9dab9a4888888896600264653001300800198041804800cdc3a400530080024888966002600460106ea800e2653001300d00198069807000cdc3a40009112cc004c004c030dd500444c8c8cc8966002602a007159800980298081baa0068cc004c050c044dd50034c044dd500648c054c058c0580064602a602c00323015301630163016301630160019180a980b180b180b000cdc024003374a900024444444464b30013371e6e50dd7180e980f0041bae3004301a375401319800918019980e98019980e9ba90014bd701980ea6103d87a80004bd70488c8cc00400400c896600200314a115980098019810800c528c4cc008008c08800501c203e91119199119801001000912cc00400600713233225980099b910070028acc004cdc78038014400600c810a26600a00a604e0088108dd718100009bad30210013023001408464646600200200c44b3001001801c4c8cc896600266e4402400a2b30013371e0120051001803204489980280298140022044375c60420026eacc088004c0900050220a5eb7bdb180520004889660026466446600a6eb0c034c080dd500c12cc004cdd7981218109baa001003899b8900298009bab300d30213754003488100a44100401514a080f8c010004cc88cdc1980499b803370466e08dd6980618101baa00f4820225ea60020054805266e052000375a6046604800e80100040048896600266e2000520008a4001159800980a800c520028992cc004c058cdc300124009198008024c00400e66e0c009200440111300198008024c00400e66e0cc02c009200440108100dc1001203e407c66e08dd69810802a4190026eb8c080c074dd500644ca60026008003375c6012603c6ea80366eb8c084c088c088c088c088c078dd5006a4446600c6eb0c038c084dd500c92cc004cdd7981298111baa0010048980dcc004dd5980718111baa001801400d006452820401bae302000b8a50406c8a5040613001370e90024dc4a400922325980099b8f48900375c603e60400031301f0018b20343002001911919800800801911980180098010014dd71803180c9baa008488888c8c8c966002604a00313259800980b18109baa001899192cc004c060c08cdd5000c4c966002603260486ea8006264b3001301a30253754003133028302930263754004660506052604c6ea80052f5c11640906020604a6ea800e2c8118c09cc090dd5000c59022180798119baa00130253022375400316408064660020026eb0c03cc088dd51812801112cc004006298103d87a80008992cc004cdc39bad302730243754002901044c030cc0980052f5c113300300330280024088604c00281222c8110c966002602a60406ea8006264b300130163021375400313233007001225980080144c8cc004004010896600200314bd7044cc0a660026e2520009b8c480126e0120039b89480226e3120009b8c480226e01200748888888cc88cc0548c8d6600266e3cdd7181a800a4410475d3c793008cc004888c8cc00cdd6981c8009bae3039303a00130030019b89480426e3120109b804803e600e90082444446600a464660766ea0cde5250375c6078002660766078607a00297ae05980098029b8d00189981d1ba930020013303a37526600860066e340040052f5c11640d84646600e4660786ea0cdc7000a4000660786ea4cc008c08cdc6800800a5eb808cc0208cc0f4dd419b8e00148000cc0f4dd49980198121b8d0010014bd70111919198201813198201ba800733040375000a66080608200297ae033040304130420014bd7018008012cc004c05400a2653001001a5eb820068008889660026066003123233043374e002660866ea40092f5c065300100180252f5c080088896600200510018cc00400e608e005330453046002001400c8222246530010059982198220008024c0a800e6eb8c110c1140050054c004c8cc10cdd419bca4a06eb8c110004cc10cc110c1140052f5c0b30013016371a00313304237526022002660846ea4cc050c04cdc6800800a5eb822c81f24466088004660886ea40052f5c1370e90034dc3a4010911119191919803194c0040066eb0c12c00a60606609460960106609498103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80004bd70200222259800801440063300100398270014c8c966002608000313230353304f30500013304f30353304f3050304d375400697ae030513051001304c37540071598009822800c4c8c8c0d8cc140c144008cc140c144004cc140c0d8cc140c144c138dd500225eb80c148c148004c144004c130dd5001c566002606600313232323037330513052003330513052002330513052001330513037330513052304f375400a97ae03053305300130520013051001304c37540071598009805000c4c8c8c8c8c0e0cc148c14c010cc148c14c00ccc148c14c008cc148c14c004cc148c0e0cc148c14cc140dd500325eb80c150c150004c14c004c148004c144004c130dd5001c56600260120031323232323230393305330540053305330540043305330540033305330540023305330540013305330393305330543051375400e97ae0305530550013054001305300130520013051001304c375400715980099b874802800626464646464646074660a860aa00c660a860aa00a660a860aa008660a860aa006660a860aa004660a860aa002660a86074660a860aa60a46ea80212f5c060ac60ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e9006000c4c8c8c8c8c8c8c8c0eccc154c15801ccc154c158018cc154c158014cc154c158010cc154c15800ccc154c158008cc154c158004cc154c0eccc154c158c14cdd5004a5eb80c15cc15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d200e00189919191919191919181e1982b182b8041982b182b8039982b182b8031982b182b8029982b182b8021982b182b8019982b182b8011982b182b8009982b181e1982b182b982a1baa00a4bd70182c182c000982b800982b000982a800982a00098298009829000982880098261baa0038acc004cdc3a40200031323232323232323232303d33057305800933057305800833057305800733057305800633057305800533057305800433057305800333057305800233057305800133057303d3305730583055375401697ae03059305900130580013057001305600130550013054001305300130520013051001304c375400715980099b8748048006264646464646464646464607c660b060b2014660b060b2012660b060b2010660b060b200e660b060b200c660b060b200a660b060b2008660b060b2006660b060b2004660b060b2002660b0607c660b060b260ac6ea80312f5c060b460b400260b200260b000260ae00260ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e900a000c4c8c8c8c8c8c8c8c8c8c8c8c0fccc164c16802ccc164c168028cc164c168024cc164c168020cc164c16801ccc164c168018cc164c168014cc164c168010cc164c16800ccc164c168008cc164c168004cc164c0fccc164c168c15cdd5006a5eb80c16cc16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d2016001899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d18201982d182d982c1baa00e4bd70182e182e000982d800982d000982c800982c000982b800982b000982a800982a00098298009829000982880098261baa003899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d182d982e0009982d18201982d182d982c1baa00e4bd7025eb80c16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001a0944128825104a20944128825104a20944128825104a18251baa001304d002400c8258dd718251825800991acc004c08000a2653001001a5eb82006800888966002607c00312323304e374e0026609c6ea40092f5c065300100180252f5c080088896600200510018cc00400e60a4005330503051002001400c827a246530010059982718278008024c0d400e6eb8c13cc1400050051802800a0908b208a375c60946096006530012232598009800a40211598009800a4001148002266e3922010801020408102040800000241211598009800a408113370490400219801801980a80144cdc124101010100406600600666e00009203f41208240dc4000c888c8cc134c00cdd698270009982698271827800a5eb80c00c006660926ea0cdc7000a4000660926ea4cc03cc0c0dc6800800a5eb8122232329800919802919198289ba833794940dd718290009982898291829800a5eb816600260366e340062660a06ea4c060004cc140dd49980d180c9b8d0010014bd7045904c1191801acc004c10c006298103d87a80008981b998289ba80014bd70209a30030019bad304f003911191acc006600260886eb4c14c00694294504e44cc02000c8c014c0e4cc14cdd4000a5eb822601e600898103d87a800041386eb8c14cc150004cc144dd419b8e00148000cc144dd49980b981c1b8d0010014bd7024446b30013043002898019181c19829000a5eb822b3001304800289801919ba548008cc1480052f5c1159800981b00144c00c8cdd2a4008660a400297ae08acc004c03400a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e95200633052375000297ae08acc004c03000a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e952008330523750b3001337100029040400244006266e04004c0192020413897ae08acc004cdc3a40140051300323374a900519829000a5eb822b30013370e900600144cc0048cdd2a4018660a400297ae0232330533750600c6eb4c150004cc14cc150c1540052f5c064660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874803800a266002466e95200e330520014bd70119198299ba833794940dd7182a00099829982a182a800a5eb8166002603a6e340062660a46ea4c068004cc148dd49980e180d9b8d0010014bd7045904e456600266e1d2010002899800919ba548040cc1480052f5c0464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874804800a246464660a866e9520123305430550014bd701982a182a982b000a5eb80c004008cc0208c8cc150dd419bca4a06eb8c154004cc150c154c1580052f5c0b30013037371a00313305337526046002660a66ea4cc0a4c0a0dc6800800a5eb822c8278966002608a00314c103d87980008acc004c128006298103d87a80008acc004c0e0006298103d87b80008acc004c03c006298103d87c80008acc004c038006298103d87d80008b209e413c827904f209e8acc004cdc3a40280051300323374a900a19829000a5eb822b30013370e900b00144c00c8cdd2a402c660a400297ae08acc004cdc3a403000513300123374a900c19829000a5eb808c8cc14cdd419bca4a06eb8c150004cc14cc150c1540052f5c0b3001301d371a00313305237526034002660a46ea4cc070c06cdc6800800a5eb822c82722c826904d209a4134826904d209a4134826904d209a41348268dd718291829803096600266e2000520808080808080808080028800c4cdc0800980124100028250c00c00c6eb4c120004c8cc11cdd419b8e00148000cc11cdd49980698171b8d0010014bd701bae30473048004207a8b20743718900122c8180dd7181a981b000acc004c01cdc6800c4cc0ccdd49801000998199ba9330053004371a00200297ae08b205e375c603a60606ea8cc0548c8d6600266e3cdd7181a800a44104b9011a82008919191919191919911981e98119981e981f0039981e9ba90013303d303e0024bd701981e981f181f80125eb80d660026024003125980099b89002371a00313303c37526601e004002660786ea66002005337026e3400400a002b8c25eb822c81c22c81b8dd7181e181e8011bae303c004375a607600264660746ea0cde5250375c6076002660746076607800297ae059800980e9b8d00189981c9ba930090013303937526601e601c6e340040052f5c11640d46eb8c0e4c0e8004d6600294624b30013371290201b8d00189981c1ba93300b48100004cc0e0dd4cc005204099b80371a002901fc0057184bd704590344590331bae30383039001300100259800a51892cc004cdc4a4100026e3400626606c6ea4cc0252080010013303637533001482000666e00dc6800a40ff0015c612f5c11640c91640c51640c06eb8c0d4c0d800566002600e6e340062660666ea4c008004cc0ccdd49980298021b8d0010014bd7045902f1bae303300a300348010c00d2008198010011815800a050899180118150019bae302800240986eb0c094c088dd5000c5902019199119801001000912cc004006298103d87a80008992cc004cdd78021812000c4c034cc09cc0940052f5c11330030033029002408c604e0028128dd5981298131813181318131813181318131813181318111baa01a3374a90021981199ba548008cc08cc02cc084dd5181218109baa0014bd7025eb822c80f8c8cc004004dd6180698109baa0192259800800c530103d87a80008992cc006600266ebc00530103d87a8000a50a514085100189980180198138012042325980099912cc00400a294226530013259800980d98131baa00189bad3027302a37566054604e6ea800629000204a30290019baf3029302a0019bab003488966002003159800980100344cc01400d20008a50409d1325980099baf30290014c010140008acc004cc018010dd6981518169bab302a001898019ba6302e0028a5040a11598009980300224001130030078a5040a08140c0b000502a0ca600200337566024604c6ea8c048c098dd5002488cc0a8008cc0a8dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044ca60026eb8c0a00066eacc0a4006605a0069112cc004cdc8a441000038acc004cdc7a44100003899802980a198171ba60024bd70000c4cc015300103d87a800000640a919800803c006446600e0046606066ec0dd48029ba6004001401c81506056004814a29422942294102a1ba633025337606ea4018dd31981299bb04c10b4a50797468205374617465004c010101004bd6f7b63025eb7bdb1808928c566002603860446ea8c098c08cdd5181318119baa300f3023375400313259800980598119baa0018992cc004c064c090dd5000c4c8c8c8c8cc8966002605e00713259800981018159baa0018991919194c004dd69819800cdd718198024dd69819801cdd7181980124444b3001303800589980c1bab303700e225980080144cc0680308966002005130203303a0144bd7044c8c8cc06cc0e40084c00cc0f8010dd7181c800981d8012072899191980c981c00109801981e0021bae3036001303900240dd1640d4303300130320013031001302c37540031640a8605c00d1640b06eb8c0b0004dd5981600118160009815800981500098129baa0018b2046302730243754003164088602060466ea8c03cc08cdd5000c590214530103d87a80004084604a00281188966002602a60406ea800a2646464b3001302800289980318138018998030008024590251813000981300098109baa0028b203e2259800980a180f9baa00289919192cc004c09c00a26464b300130190018acc004c094dd5001401a2c81322b3001301e001899192cc004c0ac00a0111640a06eb4c0a4004c094dd50014566002601800315980098129baa0028034590264590232046408c60466ea8004c09800e2c8120c966002604600315980098049811000c5a260386044002810a2c8120dd51812800981280098101baa0028b203c22c807a2c8090dd718090009bae30120023012001300d375401116402c3009375400716401c300800130033754013149a26cac80081", + "hash": "e17f2b34d9308785e63a6e1862209f764a0c772f5cd8ad7580038d69" + }, + { + "title": "mint_invoice_nft.mint_invoice_nft.mint", + "redeemer": { + "title": "_redeemer", + "schema": { + "$ref": "#/definitions/mint_invoice_nft~1MintInvoiceRedeemer" + } + }, + "compiledCode": "58b601010029800aba2aba1aab9faab9eaab9dab9a48888896600264653001300700198039804000cdc3a400130070024888966002600460106ea800e264b300130033009375400b1323322598009808000c4c966002600e601a6ea8006264646644b300130150038a518b2026375a60240026eb8c048008c048004c038dd5000c5900c1807800c5900e1bae300d001300e001300a375400b1640206eb8c02cc024dd5001c590070c01c004c00cdd5003c52689b2b200201", + "hash": "8f7269679fe9ee9a63d4abbf9fb2b997797a78a186fd799569a1681a" + }, + { + "title": "mint_invoice_nft.mint_invoice_nft.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "58b601010029800aba2aba1aab9faab9eaab9dab9a48888896600264653001300700198039804000cdc3a400130070024888966002600460106ea800e264b300130033009375400b1323322598009808000c4c966002600e601a6ea8006264646644b300130150038a518b2026375a60240026eb8c048008c048004c038dd5000c5900c1807800c5900e1bae300d001300e001300a375400b1640206eb8c02cc024dd5001c590070c01c004c00cdd5003c52689b2b200201", + "hash": "8f7269679fe9ee9a63d4abbf9fb2b997797a78a186fd799569a1681a" + } + ], + "definitions": { + "ByteArray": { + "title": "ByteArray", + "dataType": "bytes" + }, + "Int": { + "dataType": "integer" + }, + "aiken/crypto/VerificationKeyHash": { + "title": "VerificationKeyHash", + "dataType": "bytes" + }, + "cardano/assets/AssetName": { + "title": "AssetName", + "dataType": "bytes" + }, + "cardano/assets/PolicyId": { + "title": "PolicyId", + "dataType": "bytes" + }, + "cardano/transaction/OutputReference": { + "title": "OutputReference", + "description": "An `OutputReference` is a unique reference to an output on-chain. The `output_index`\n corresponds to the position in the output list of the transaction (identified by its id)\n that produced that output", + "anyOf": [ + { + "title": "OutputReference", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "transaction_id", + "$ref": "#/definitions/ByteArray" + }, + { + "title": "output_index", + "$ref": "#/definitions/Int" + } + ] + } + ] + }, + "invoice/InvoiceDatum": { + "title": "InvoiceDatum", + "anyOf": [ + { + "title": "InvoiceDatum", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "seller", + "$ref": "#/definitions/aiken~1crypto~1VerificationKeyHash" + }, + { + "title": "usd_amount_cents", + "$ref": "#/definitions/Int" + }, + { + "title": "pyth_policy_id", + "$ref": "#/definitions/cardano~1assets~1PolicyId" + }, + { + "title": "pin_hash", + "$ref": "#/definitions/ByteArray" + }, + { + "title": "invoice_nft_policy_id", + "$ref": "#/definitions/cardano~1assets~1PolicyId" + }, + { + "title": "invoice_nft_name", + "$ref": "#/definitions/cardano~1assets~1AssetName" + }, + { + "title": "deadline", + "$ref": "#/definitions/Int" + } + ] + } + ] + }, + "invoice/InvoiceRedeemer": { + "title": "InvoiceRedeemer", + "anyOf": [ + { + "title": "Pay", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "buyer", + "$ref": "#/definitions/aiken~1crypto~1VerificationKeyHash" + }, + { + "title": "pin", + "$ref": "#/definitions/ByteArray" + } + ] + } + ] + }, + "mint_invoice_nft/MintInvoiceRedeemer": { + "title": "MintInvoiceRedeemer", + "anyOf": [ + { + "title": "MintInvoice", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "seller", + "$ref": "#/definitions/aiken~1crypto~1VerificationKeyHash" + }, + { + "title": "invoice_ref", + "$ref": "#/definitions/cardano~1transaction~1OutputReference" + } + ] + } + ] + } + } +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/contracts/lib/blueprint.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/contracts/lib/blueprint.ts new file mode 100644 index 00000000..bf8bdcb1 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/contracts/lib/blueprint.ts @@ -0,0 +1,64 @@ +import blueprint from "@/contracts/plutus.json"; +import { + applyCborEncoding, + resolveScriptHash, + serializePlutusScript, +} from "@meshsdk/core"; + +interface BlueprintValidator { + title: string; + compiledCode: string; +} + +interface BlueprintFile { + validators: BlueprintValidator[]; +} + +const networkId = Number(process.env.NEXT_PUBLIC_CARDANO_NETWORK_ID ?? "0") as + | 0 + | 1; +const validators = (blueprint as BlueprintFile).validators; + +function findCompiledCode(fragment: string, suffix: ".spend" | ".mint") { + const validator = validators.find( + (item) => item.title.includes(fragment) && item.title.endsWith(suffix), + ); + + if (!validator) { + throw new Error( + `Validator ${fragment}${suffix} was not found in plutus.json`, + ); + } + + return validator.compiledCode; +} + +export function getInvoiceValidatorBlueprint() { + const compiledCode = findCompiledCode("invoice", ".spend"); + const cbor = applyCborEncoding(compiledCode); + const hash = resolveScriptHash(cbor, "V3"); + const { address } = serializePlutusScript( + { code: cbor, version: "V3" }, + undefined, + networkId, + ); + + return { + compiledCode, + cbor, + hash, + address: String(address), + }; +} + +export function getInvoiceMintBlueprint() { + const compiledCode = findCompiledCode("mint_invoice_nft", ".mint"); + const cbor = applyCborEncoding(compiledCode); + const hash = resolveScriptHash(cbor, "V3"); + + return { + compiledCode, + cbor, + hash, + }; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/create-invoice-on-chain.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/create-invoice-on-chain.ts new file mode 100644 index 00000000..f68ac6cc --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/create-invoice-on-chain.ts @@ -0,0 +1,120 @@ +import { MeshTxBuilder } from "@meshsdk/core"; +import type { BrowserWallet } from "@meshsdk/core"; +import type { Invoice } from "@/types/invoice"; +import { + getInvoiceMintBlueprint, + getInvoiceValidatorBlueprint, +} from "@/features/contracts/lib/blueprint"; +import { + buildInvoiceDatum, + buildMintRedeemer, +} from "@/features/invoices/lib/invoice-plutus-data"; +import { textToHex } from "@/features/invoices/lib/encoding"; +import { createBlockfrostProvider } from "@/features/invoices/lib/provider"; +import { hashPin } from "@/features/invoices/lib/pin"; + +interface CreateInvoiceInput { + sellerAddress: string; + clientName: string; + concept: string; + amountUsd: number; + pin: string; + deadline: string; +} + +interface CreateInvoiceResult { + invoice: Invoice; + txHash: string; +} + +export async function createInvoiceOnChain( + wallet: BrowserWallet, + input: CreateInvoiceInput, +): Promise { + const provider = createBlockfrostProvider(); + const utxos = await wallet.getUtxos(); + const collateral = await wallet.getCollateral(); + const changeAddress = await wallet.getChangeAddress(); + + if (!collateral[0]) { + throw new Error("A collateral UTxO is required to use Plutus scripts"); + } + + if (!utxos[0]) { + throw new Error("Wallet has no spendable UTxOs"); + } + + const mintBlueprint = getInvoiceMintBlueprint(); + const invoiceBlueprint = getInvoiceValidatorBlueprint(); + const now = new Date().toISOString(); + const invoiceNftLabel = `invoice-${Date.now()}`; + const invoiceNftName = textToHex(invoiceNftLabel); + + const invoice: Invoice = { + id: crypto.randomUUID(), + sellerAddress: input.sellerAddress, + clientName: input.clientName, + concept: input.concept, + amountUsd: input.amountUsd, + pinHash: hashPin(input.pin), + invoiceNftPolicyId: mintBlueprint.hash, + invoiceNftName, + invoiceScriptAddress: invoiceBlueprint.address, + status: "open", + deadline: input.deadline, + createdAt: now, + updatedAt: now, + }; + + const datum = buildInvoiceDatum(invoice); + const mintRedeemer = buildMintRedeemer(input.sellerAddress, { + txHash: utxos[0].input.txHash, + outputIndex: utxos[0].input.outputIndex, + }); + + const unsignedTx = await new MeshTxBuilder({ + fetcher: provider, + verbose: true, + }) + .mintPlutusScriptV3() + .mint("1", mintBlueprint.hash, invoice.invoiceNftName) + .mintingScript(mintBlueprint.cbor) + .mintRedeemerValue(mintRedeemer, "JSON") + .metadataValue(721, { + [mintBlueprint.hash]: { + [invoiceNftLabel]: { + name: invoiceNftLabel, + client: input.clientName, + concept: input.concept, + amountUsd: input.amountUsd, + deadline: input.deadline, + }, + }, + }) + .txOut(invoiceBlueprint.address, [ + { unit: "lovelace", quantity: "2000000" }, + { unit: `${mintBlueprint.hash}${invoice.invoiceNftName}`, quantity: "1" }, + ]) + .txOutInlineDatumValue(datum, "JSON") + .changeAddress(changeAddress) + .selectUtxosFrom(utxos) + .txInCollateral( + collateral[0].input.txHash, + collateral[0].input.outputIndex, + collateral[0].output.amount, + collateral[0].output.address, + ) + .complete(); + + const signedTx = await wallet.signTx(unsignedTx, true); + const txHash = await wallet.submitTx(signedTx); + + return { + invoice: { + ...invoice, + lockTxHash: txHash, + lockTxIndex: 0, + }, + txHash, + }; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/encoding.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/encoding.ts new file mode 100644 index 00000000..ab6408a0 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/encoding.ts @@ -0,0 +1,5 @@ +export function textToHex(value: string) { + return Array.from(new TextEncoder().encode(value)) + .map((byte) => byte.toString(16).padStart(2, "0")) + .join(""); +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-plutus-data.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-plutus-data.ts new file mode 100644 index 00000000..487fad4d --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-plutus-data.ts @@ -0,0 +1,63 @@ +import { deserializeAddress } from "@meshsdk/core"; +import type { Invoice } from "@/types/invoice"; +import { pinToBytesHex } from "@/features/invoices/lib/pin"; + +function requiredPubKeyHash(address: string) { + const { pubKeyHash } = deserializeAddress(address); + + if (!pubKeyHash) { + throw new Error("Expected a payment key hash address"); + } + + return pubKeyHash; +} + +export function buildInvoiceDatum(invoice: Invoice) { + const pythPolicyId = process.env.NEXT_PUBLIC_PYTH_PREPROD_POLICY_ID; + + if (!pythPolicyId) { + throw new Error("Missing NEXT_PUBLIC_PYTH_PREPROD_POLICY_ID"); + } + + return { + alternative: 0, + fields: [ + { bytes: requiredPubKeyHash(invoice.sellerAddress) }, + { int: String(Math.round(invoice.amountUsd * 100)) }, + { bytes: pythPolicyId }, + { bytes: invoice.pinHash }, + { bytes: invoice.invoiceNftPolicyId }, + { bytes: invoice.invoiceNftName }, + { int: String(Date.parse(invoice.deadline)) }, + ], + }; +} + +export function buildPayRedeemer(buyerAddress: string, pin: string) { + return { + alternative: 0, + fields: [ + { bytes: requiredPubKeyHash(buyerAddress) }, + { bytes: pinToBytesHex(pin) }, + ], + }; +} + +export function buildMintRedeemer( + sellerAddress: string, + utxoRef: { txHash: string; outputIndex: number }, +) { + return { + alternative: 0, + fields: [ + { bytes: requiredPubKeyHash(sellerAddress) }, + { + alternative: 0, + fields: [ + { bytes: utxoRef.txHash }, + { int: String(utxoRef.outputIndex) }, + ], + }, + ], + }; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice-on-chain.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice-on-chain.ts new file mode 100644 index 00000000..b9ef99ed --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice-on-chain.ts @@ -0,0 +1,149 @@ +import { + MeshTxBuilder, + deserializeAddress, + serializeRewardAddress, +} from "@meshsdk/core"; +import type { Asset, BrowserWallet, UTxO } from "@meshsdk/core"; +import type { Invoice } from "@/types/invoice"; +import type { AdaUsdQuote } from "@/types/oracle"; +import type { PythContext } from "@/types/pyth"; +import { getInvoiceValidatorBlueprint } from "@/features/contracts/lib/blueprint"; +import { buildPayRedeemer } from "@/features/invoices/lib/invoice-plutus-data"; +import { createBlockfrostProvider } from "@/features/invoices/lib/provider"; + +function quoteRate(quote: AdaUsdQuote) { + return Number(quote.price) * 10 ** quote.exponent; +} + +function minimumLovelace(invoice: Invoice, quote: AdaUsdQuote) { + return Math.ceil((invoice.amountUsd / quoteRate(quote)) * 1_000_000); +} + +function assetQuantity(amount: Asset[], unit: string) { + return amount.find((item) => item.unit === unit)?.quantity ?? "0"; +} + +function requireBuyerPubKeyHash(address: string) { + const { pubKeyHash } = deserializeAddress(address); + + if (!pubKeyHash) { + throw new Error("Connected wallet must expose a payment key hash"); + } + + return pubKeyHash; +} + +async function getPythContext() { + const response = await fetch("/api/pyth/context"); + const payload = (await response.json()) as { item: PythContext }; + return payload.item; +} + +async function getOracleUpdate() { + const response = await fetch("/api/oracle/ada-usd", { method: "POST" }); + const payload = (await response.json()) as { item: AdaUsdQuote }; + return payload.item; +} + +async function findInvoiceScriptUtxo(invoice: Invoice): Promise { + if (!invoice.invoiceScriptAddress) { + throw new Error("Invoice is missing invoiceScriptAddress"); + } + + const provider = createBlockfrostProvider(); + const assetUnit = `${invoice.invoiceNftPolicyId}${invoice.invoiceNftName}`; + const utxos = await provider.fetchAddressUTxOs( + invoice.invoiceScriptAddress, + assetUnit, + ); + const scriptUtxo = utxos.find( + (item) => assetQuantity(item.output.amount, assetUnit) === "1", + ); + + if (!scriptUtxo) { + throw new Error("Invoice script UTxO was not found"); + } + + return scriptUtxo; +} + +export async function payInvoiceOnChain( + wallet: BrowserWallet, + invoice: Invoice, + pin: string, +) { + const provider = createBlockfrostProvider(); + const utxos = await wallet.getUtxos(); + const collateral = await wallet.getCollateral(); + const buyerAddress = await wallet.getChangeAddress(); + + if (!collateral[0]) { + throw new Error("A collateral UTxO is required to use Plutus scripts"); + } + + const [oracle, pythContext, scriptUtxo] = await Promise.all([ + getOracleUpdate(), + getPythContext(), + findInvoiceScriptUtxo(invoice), + ]); + + const minLovelace = minimumLovelace(invoice, oracle); + const invoiceBlueprint = getInvoiceValidatorBlueprint(); + const rewardAddress = serializeRewardAddress( + pythContext.withdrawScriptHash, + true, + Number(process.env.NEXT_PUBLIC_CARDANO_NETWORK_ID ?? "0") as 0 | 1, + ); + const invoiceRedeemer = buildPayRedeemer(buyerAddress, pin); + const buyerPubKeyHash = requireBuyerPubKeyHash(buyerAddress); + const invoiceUnit = `${invoice.invoiceNftPolicyId}${invoice.invoiceNftName}`; + + const unsignedTx = await new MeshTxBuilder({ + fetcher: provider, + verbose: true, + }) + .spendingPlutusScriptV3() + .txIn( + scriptUtxo.input.txHash, + scriptUtxo.input.outputIndex, + scriptUtxo.output.amount, + scriptUtxo.output.address, + ) + .txInInlineDatumPresent() + .txInRedeemerValue(invoiceRedeemer, "JSON") + .txInScript(invoiceBlueprint.cbor) + .readOnlyTxInReference( + pythContext.stateTxHash, + pythContext.stateOutputIndex, + ) + .withdrawalPlutusScriptV3() + .withdrawal(String(rewardAddress), "0") + .withdrawalRedeemerValue([{ bytes: oracle.binary }], "JSON") + .requiredSignerHash(buyerPubKeyHash) + .txOut(invoice.sellerAddress, [ + { unit: "lovelace", quantity: String(minLovelace) }, + ]) + .txOut(buyerAddress, [ + { unit: "lovelace", quantity: "2000000" }, + { unit: invoiceUnit, quantity: "1" }, + ]) + .changeAddress(buyerAddress) + .selectUtxosFrom(utxos) + .txInCollateral( + collateral[0].input.txHash, + collateral[0].input.outputIndex, + collateral[0].output.amount, + collateral[0].output.address, + ) + .complete(); + + const signedTx = await wallet.signTx(unsignedTx, true); + const txHash = await wallet.submitTx(signedTx); + + return { + txHash, + minLovelace, + quote: oracle, + buyerAddress, + }; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pin.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pin.ts new file mode 100644 index 00000000..3efc7df1 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pin.ts @@ -0,0 +1,16 @@ +import { blake2b } from "@noble/hashes/blake2.js"; +import { bytesToHex } from "@noble/hashes/utils.js"; +import { textToHex } from "@/features/invoices/lib/encoding"; + +export function normalizePin(pin: string) { + return pin.trim(); +} + +export function pinToBytesHex(pin: string) { + return textToHex(normalizePin(pin)); +} + +export function hashPin(pin: string) { + const bytes = new TextEncoder().encode(normalizePin(pin)); + return bytesToHex(blake2b(bytes, { dkLen: 32 })); +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/provider.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/provider.ts new file mode 100644 index 00000000..79f3949b --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/provider.ts @@ -0,0 +1,11 @@ +import { BlockfrostProvider } from "@meshsdk/core"; + +export function createBlockfrostProvider() { + const projectId = process.env.NEXT_PUBLIC_BLOCKFROST_PREPROD_PROJECT_ID; + + if (!projectId) { + throw new Error("Missing NEXT_PUBLIC_BLOCKFROST_PREPROD_PROJECT_ID"); + } + + return new BlockfrostProvider(projectId); +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/ui/safequote-app.tsx b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/ui/safequote-app.tsx index 728e647d..3937a876 100644 --- a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/ui/safequote-app.tsx +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/ui/safequote-app.tsx @@ -1,27 +1,21 @@ "use client"; import { startTransition, useEffect, useMemo, useState } from "react"; -import { - connectWallet, - getInstalledWallets, -} from "@/features/wallet/lib/wallet-adapter"; +import type { BrowserWallet } from "@meshsdk/core"; +import { createInvoiceOnChain } from "@/features/invoices/lib/create-invoice-on-chain"; +import { payInvoiceOnChain } from "@/features/invoices/lib/pay-invoice-on-chain"; +import { getInstalledWallets, connectWallet } from "@/features/wallet/lib/wallet-adapter"; import type { Invoice } from "@/types/invoice"; import type { AdaUsdQuote } from "@/types/oracle"; -function hashPin(pin: string) { - return pin.trim().toLowerCase(); -} - -function quoteRate(quote: AdaUsdQuote) { - return Number(quote.price) * 10 ** quote.exponent; -} - export function SafeQuoteApp() { const [wallets, setWallets] = useState<{ name: string }[]>([]); + const [connectedWallet, setConnectedWallet] = useState(null); const [walletName, setWalletName] = useState(""); const [walletAddress, setWalletAddress] = useState(""); const [quote, setQuote] = useState(null); const [invoices, setInvoices] = useState([]); + const [busy, setBusy] = useState(false); const [createForm, setCreateForm] = useState({ clientName: "", concept: "", @@ -83,7 +77,10 @@ export function SafeQuoteApp() { async function handleConnectWallet() { const connection = await connectWallet(walletName); - setWalletAddress(connection.changeAddress); + setConnectedWallet(connection.wallet); + startTransition(() => { + setWalletAddress(connection.changeAddress); + }); await fetch("/api/auth/wallet", { method: "POST", @@ -99,6 +96,7 @@ export function SafeQuoteApp() { await fetch("/api/auth/wallet", { method: "DELETE" }); startTransition(() => { + setConnectedWallet(null); setWalletAddress(""); }); } @@ -106,51 +104,78 @@ export function SafeQuoteApp() { async function handleCreateInvoice(event: React.FormEvent) { event.preventDefault(); - await fetch("/api/invoices", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ + if (!connectedWallet || !walletAddress) { + throw new Error("Connect a wallet before creating an invoice"); + } + + setBusy(true); + + try { + const result = await createInvoiceOnChain(connectedWallet, { sellerAddress: walletAddress, clientName: createForm.clientName, concept: createForm.concept, amountUsd: Number(createForm.amountUsd), - pinHash: hashPin(createForm.pin), - invoiceNftPolicyId: `${process.env.NEXT_PUBLIC_INVOICE_NFT_POLICY_ID}`, - invoiceNftName: `invoice-${Date.now()}`, + pin: createForm.pin, deadline: new Date(createForm.deadline).toISOString(), - }), - }); + }); - const items = await fetchInvoices(); - startTransition(() => { - setInvoices(items); - }); + await fetch("/api/invoices", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + sellerAddress: result.invoice.sellerAddress, + clientName: result.invoice.clientName, + concept: result.invoice.concept, + amountUsd: result.invoice.amountUsd, + pinHash: result.invoice.pinHash, + invoiceNftPolicyId: result.invoice.invoiceNftPolicyId, + invoiceNftName: result.invoice.invoiceNftName, + invoiceScriptAddress: result.invoice.invoiceScriptAddress, + lockTxHash: result.invoice.lockTxHash, + lockTxIndex: result.invoice.lockTxIndex, + deadline: result.invoice.deadline, + }), + }); + + const items = await fetchInvoices(); + startTransition(() => { + setInvoices(items); + }); + } finally { + setBusy(false); + } } async function handlePayInvoice(invoice: Invoice, pin: string) { - if (!quote) { - return; + if (!connectedWallet || !walletAddress) { + throw new Error("Connect a wallet before paying an invoice"); } - const rate = quoteRate(quote); - const minAda = invoice.amountUsd / rate; - - await fetch(`/api/invoices/${invoice.id}`, { - method: "PATCH", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - buyerAddress: walletAddress, - adaQuoteSnapshot: minAda, - feedId: quote.feedId, - txHash: `demo_${invoice.id}_${Date.now()}`, - status: hashPin(pin) === invoice.pinHash ? "paid" : invoice.status, - }), - }); + setBusy(true); + + try { + const payment = await payInvoiceOnChain(connectedWallet, invoice, pin); + + await fetch(`/api/invoices/${invoice.id}`, { + method: "PATCH", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + buyerAddress: payment.buyerAddress, + adaQuoteSnapshot: payment.minLovelace / 1_000_000, + feedId: payment.quote.feedId, + txHash: payment.txHash, + status: "paid", + }), + }); - const items = await fetchInvoices(); - startTransition(() => { - setInvoices(items); - }); + const items = await fetchInvoices(); + startTransition(() => { + setInvoices(items); + }); + } finally { + setBusy(false); + } } return ( @@ -161,10 +186,7 @@ export function SafeQuoteApp() {

Wallet

- setWalletName(event.target.value)}> {wallets.map((wallet) => (
) : ( @@ -269,6 +278,7 @@ export function SafeQuoteApp() { key={invoice.id} onPay={handlePayInvoice} quote={quote} + disabled={busy || !walletAddress} /> ))} @@ -279,9 +289,7 @@ export function SafeQuoteApp() {
{invoice.clientName}

{invoice.status}

-

- {invoice.invoiceNftPolicyId}.{invoice.invoiceNftName} -

+

{invoice.invoiceNftPolicyId}.{invoice.invoiceNftName}

))} @@ -293,30 +301,26 @@ function PayCard({ invoice, quote, onPay, + disabled, }: { invoice: Invoice; quote: AdaUsdQuote | null; onPay: (invoice: Invoice, pin: string) => Promise; + disabled: boolean; }) { const [pin, setPin] = useState(""); - const minAda = quote - ? invoice.amountUsd / (Number(quote.price) * 10 ** quote.exponent) - : 0; + const minAda = quote ? invoice.amountUsd / (Number(quote.price) * 10 ** quote.exponent) : 0; return (
{invoice.clientName}

{invoice.amountUsd} USD

Min ADA: {quote ? minAda.toFixed(4) : "Loading..."}

- setPin(event.target.value)} - placeholder="PIN" - /> -
); -} +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/invoice.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/invoice.ts index 94ee232b..cde18b41 100644 --- a/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/invoice.ts +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/invoice.ts @@ -10,6 +10,9 @@ export interface Invoice { pinHash: string; invoiceNftPolicyId: string; invoiceNftName: string; + invoiceScriptAddress?: string; + lockTxHash?: string; + lockTxIndex?: number; adaQuoteSnapshot?: number; feedId?: number; txHash?: string; @@ -17,4 +20,4 @@ export interface Invoice { deadline: string; createdAt: string; updatedAt: string; -} +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/pyth.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/pyth.ts new file mode 100644 index 00000000..a8cccf89 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/pyth.ts @@ -0,0 +1,5 @@ +export interface PythContext { + stateTxHash: string; + stateOutputIndex: number; + withdrawScriptHash: string; +} \ No newline at end of file