diff --git a/.deploy/mta.yaml b/.deploy/mta.yaml index 2ed0cd52d..b9fed98d1 100644 --- a/.deploy/mta.yaml +++ b/.deploy/mta.yaml @@ -10,7 +10,7 @@ ID: tutorials-ims # Bump this on each release you deploy — it's the version shown by `cf mtas` # and in the mtar filename (tutorials-ims_.mtar). Deploy is manual: # `cd .deploy && mbt build && cf deploy mta_archives/tutorials-ims_.mtar -e ../deploy/.mtaext -f`. -version: 1.41.8 +version: 1.42.0 # Top-level parameters (overridable per-env via deploy/.mtaext). parameters: diff --git a/CLAUDE.md b/CLAUDE.md index 24f83be8c..ab3678775 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -159,3 +159,4 @@ The load-bearing few. **Full detail for every relocated item → [tutorials-ims- - **External channels subsystem** — `Channels` entity (`db/channels.cds`) is the source of truth; re-ingest via `npm run seed-channels`; directory at `/channels` (baked by `fetch-channels` in `build:all`); verb-lane fill via `npm run promote-channels`; community items never land in `START_HERE`. → [channels.md](docs/developers/reference/channels.md). - **TechEd sessions subsystem (#2312)** — new `TechEd*` entities (`db/external/teched.cds`, NOT reused `CommunityEvents`), loaded via a **`using` side-effect** in `db/external-content.cds` (don't delete the import); RainFocus ingest (`POST https://events.rainfocus.com/api/sessions`, headers `rfapiprofileid`/`rfwidgetid` per venue from `RAINFOCUS_{TE26,TEV26}_PROFILE`/`_WIDGET` env — live-confirmed defaults baked in, IDs may rotate; speakers embedded in `participants[]`, tracks in `attributevalues[attribute=="Track"]`, offset-paginated); idempotent seed via `scripts/seed-teched.cjs`; public `/build/teched` feed; corrected fetcher + delta cron jobs shipped in #2332; `/teched/` page + island, KG projection, embeddings, and Devtoberfest cross-linking are later units. → [teched.md](docs/developers/reference/teched.md). - **Signed provenance envelope (#2245)** — `PROVENANCE_ENVELOPE_ENABLED` (DB config, default OFF, DEV-first); two anonymous Express endpoints (`/content/tutorials/:slug/provenance` and `/.well-known/tutorial-provenance/jwks.json`); signing key = `PROVENANCE_SIGNING_KEY` credstore secret (Ed25519 PKCS8 PEM); rotate via `/admin-ui/#secrets`. Fail-open. → gotchas.md "Signed provenance envelope". +- **Optimized draft deletion `draft_admin_integrity` ON (#2909, CAP 10.2)** — `cds.fiori.draft_admin_integrity: true` in package.json; draft discard cascade-deletes draft `CompletionPathItems`/`GroupPathItems` at the DB level, so rollup reconcile now fires via `after('DISCARD','Missions.drafts'/'Groups.drafts')` (the `.drafts` target is required), NOT the per-row child `after('DELETE')` hooks (those stay for direct programmatic deletes). Deleting an active entity right after `draftActivate` can 403 ("a draft exists") until the residual draft is discarded. Constraint migration deploys to HANA (`.hdbconstraint`, `NOT VALIDATED`) BEFORE the flag serves. → gotchas.md "Optimized draft deletion". diff --git a/docs/developers/reference/tutorials-ims-gotchas.md b/docs/developers/reference/tutorials-ims-gotchas.md index cfcae3bd0..edf6838c3 100644 --- a/docs/developers/reference/tutorials-ims-gotchas.md +++ b/docs/developers/reference/tutorials-ims-gotchas.md @@ -203,3 +203,19 @@ All default OFF and DEV-only unless noted. Toggles fail-open on every fault path - **`sourceCommit` plumbing** — `ContentCurrent.sourceCommit` (String(64)) is populated by the publish pipeline via the `source_commit` field in the publish payload; `scripts/fetch-tutorials.ts` threads the HEAD commit SHA through to the publish client. On older published content the column is NULL; the provenance JWS payload will carry `sourceCommit: null` in that case, which is valid. - **Quarantine + publisher are status-aware for DELETED/INACTIVE (#2585 follow-up)** — a tutorial with `Tutorials.status IN ('DELETED','INACTIVE')` is excluded from the whole publish/quarantine path, so a retired tutorial whose source `.md` still exists upstream no longer gets re-discovered, re-quarantined, or shown in the Admin active-quarantine facet. Mechanism: `GET /content/excluded-slugs` (public-read on prod srv, `hashesAuth` on srv-qa) returns those lowercased slugs; `scripts/fetch-tutorials.ts` (`applyExclusion` after discovery, both main and `--regenerate` paths) and `scripts/validate-tutorials.ts` (skip at the top of the file loop) fetch it and skip those slugs — **fail-open**, an unreachable endpoint means no filtering; and `quarantineIngestHandler` (`packages/content/content-store.js`) drops events for those slugs before persisting, so the slug-only Admin facet join never surfaces them. One-off cleanup of a live snapshot without a full rebuild: `scripts/clear-deleted-from-quarantine.cjs` (`cds bind --exec … -- node scripts/clear-deleted-from-quarantine.cjs --commit`; dry-run by default). Note: the pre-existing `/content/source-hashes` filter excludes only `INACTIVE` — the new `/content/excluded-slugs` query covers **both** statuses. + +## Optimized draft deletion — `draft_admin_integrity` (CAP 10.2, #2909) + +- **`cds.fiori.draft_admin_integrity: true` is ON in `package.json`** — CAP 10.2 optimized draft deletion. `cds build` generates `ON DELETE CASCADE` constraints on each draft table's `DraftAdministrativeData_DraftUUID` FK; draft activation and root cancellation then delete only the `DraftAdministrativeData` record and let the DB cascade the child draft rows, instead of the runtime issuing a per-table DELETE for each. All 19 draft-enabled entities live in `AdminService`. + +- **Draft DISCARD now reconciles rollups via root handlers, NOT child DELETE events** — because the cascade removes draft `CompletionPathItems`/`GroupPathItems` at the DB level, the per-row `before/after('DELETE')` hooks (`srv/admin-service.js:1197-1242`) do **not** fire on a draft discard. `srv/admin-service.js` registers `this.after('DISCARD', 'Missions.drafts', …)` and `…('Groups.drafts', …)` (the `.drafts` target is required — DISCARD on the active entity does not fire) which re-fire `reconcileEntityForUsers` for the active entity's `legacyId`. The existing child DELETE handlers stay — they still fire for **direct programmatic deletes** (e.g. `service.tx()` row deletes), which the cascade does not touch. Fail-open like the SAVE reconcile hooks. + +- **Delete-active-immediately-after-activate now 403s until the draft is cleared** — under the flag, `DELETE …(IsActiveEntity=true)` right after `draftActivate` can return `403 — Entity cannot be deleted because a draft exists` (observed on SQLite in tests). Any code or test that deletes an active entity shortly after activation must first discard the residual draft (`DELETE …(IsActiveEntity=false)`), then delete the active. This is the documented 10.2 behavior change, not a bug. + +- **Constraint-deploy migration ordering (HANA)** — constraints generate at `cds build` once the flag is on and deploy to HANA as `.hdbconstraint` with `NOT VALIDATED` (so existing orphaned draft rows don't block the deploy). Deploy the constraints to a target env and let them land **before** the flag serves there — once the runtime serves with the flag on, it stops issuing per-table draft deletes and relies on the cascade. Order DEV → test → PROD per the no-main-hotfix model; confirm scope with the maintainer before any PROD step. + +- **Startup preflight check (#2968)** — `srv/lib/draft-integrity-preflight.js` runs once at boot (inside `cds.on('served')`, HANA only, fail-open). Queries `SYS.REFERENTIAL_CONSTRAINTS` for `ON DELETE CASCADE` FKs on every draft table and emits `cds.log('draft-integrity-preflight').warn(…)` listing any missing tables. If that warn line appears in CF logs after a deploy, the HDI constraint deploy has not yet landed — wait for HDI to complete and restart the app. Absent = all 26 constraints present and verified. + +- **Optional orphan purge** — set `cds.fiori.draft_orphan_cleanup: true` to purge pre-existing orphaned draft rows as background cleanup during draft create/edit, then turn it back off once orphans are cleared. Independent of `draft_admin_integrity`; default OFF. Not enabled in `package.json`. + +- **Rollback** — the constraints are additive (`ON DELETE CASCADE` on draft tables only). To revert: flip `draft_admin_integrity` back off (the runtime resumes per-table draft deletes, and the DISCARD reconcile handlers become harmless no-ops relative to the restored child-DELETE path) and optionally drop the generated constraints on the next deploy. diff --git a/docs/superpowers/plans/2026-11-01-cap-10-2-upgrade.md b/docs/superpowers/plans/2026-11-01-cap-10-2-upgrade.md new file mode 100644 index 000000000..6bed1c1fe --- /dev/null +++ b/docs/superpowers/plans/2026-11-01-cap-10-2-upgrade.md @@ -0,0 +1,310 @@ +# CAP 10.2 Upgrade Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Upgrade all CAP and CAP plugin packages from 10.1.x to 10.2.x, and opt into new 10.2 features where beneficial. + +**Architecture:** This is a dependency-bump upgrade. Core changes are: bump `@sap/cds` and `@sap/cds-dk` to `^10.2.0`, bump all `@cap-js/*` plugins to their latest 10.2-compatible versions, relax the `@cap-js/ai` tilde pin to `^1.3.0`, and evaluate three opt-in flags (`draft_admin_integrity`, `draft_orphan_cleanup`, and the new `@cds.autoexpose: false` for internal services). No schema changes are required; no Java dependencies in this project. + +**Tech Stack:** Node.js 22.23.4, `@sap/cds` ^10.2.x, CAP plugin ecosystem, SQLite (dev/test), HANA Cloud (hybrid/prod) + +**Spec:** https://cap.cloud.sap/docs/releases/2026/oct26 + +## Global Constraints + +- Node.js 22.23.4 — pinned exactly in `engines.node`; do NOT change this +- All CAP Node.js only — no Java migration steps apply +- Tests must pass: `npm test` (in-memory SQLite, fast); hybrid tests are out-of-scope for this PR +- Never write raw SQL — use `cds.ql` or CQL +- PR targets `DEV` branch (never `main`) +- `@cap-js/graphql` is currently pinned to `0.14.0` (exact, no caret); only bump if a new release is available +- `@cap-js/attachments` is currently pinned to `4.0.0` (exact); only bump if a new release is available +- `@cap-js/data-inspector` is currently pinned to `1.0.5` (exact); only bump if `2.0.1` is confirmed for this ecosystem +- The `mcp.per_action_tool: true` config remains in place — the "single `call` tool" 10.2 default does not apply here since we intentionally override it + +## Review Focus + +- `@cap-js/ai` version jump from `~1.1.0` to `^1.3.0` spans two minor versions: verify AI-author (ValueList recommendations), ONNX model initialization, and `AICore-mocked` local mode still work after bump +- `cds.fiori.draft_admin_integrity: true` changes which delete handlers are called on draft entities — verify that `AdminService` draft entities (`Tutorials`, `Missions`, `Groups`, etc.) still delete cleanly and that any custom `@before DELETE` handlers are not skipped +- `draft_orphan_cleanup` is a new background job; verify it does not interfere with the CAP scheduler / `CronService` under `cds watch` or unit tests +- `@cap-js/change-tracking` bumped to 2.2.3 — verify that change tracking on `TutorialMeta` and related entities still works and that tracked payloads in tests match expected structure +- `@sap/cds` 10.2.x removes `@odata.metadataEtag` from default responses; the `./test/` suite may assert on response shapes — scan for any assertion on `@odata.metadataEtag` and update or remove + +--- + +## Task 1: Bump core CAP packages and run baseline tests + +**Files:** +- Modify: `package.json` (dependency version strings only) +- Verify: `package-lock.json` (auto-generated by npm install) + +**Interfaces:** +- Produces: updated `package.json` and `package-lock.json` that later tasks depend on + +- [ ] **Step 1: Create a new branch off DEV** + +```bash +git fetch origin +git checkout -b upgrade/cap-10.2 origin/DEV +``` + +- [ ] **Step 2: Bump `@sap/cds` and `@sap/cds-dk` in `package.json`** + +Change: +```json +"@sap/cds": "^10.1.0" +"@sap/cds-dk": "^10.1.1" +``` +To: +```json +"@sap/cds": "^10.2.0" +"@sap/cds-dk": "^10.2.0" +``` + +- [ ] **Step 3: Run `npm install` and verify resolution** + +```bash +npm install 2>&1 | tail -20 +node -e "console.log(require('@sap/cds/package.json').version)" +``` +Expected: version printed starts with `10.2.` + +- [ ] **Step 4: Run baseline unit tests** + +```bash +npm test 2>&1 | tail -40 +``` +Expected: all tests pass (or same failures as before this task) + +- [ ] **Step 5: Commit** + +```bash +git add package.json package-lock.json +git commit -m "chore(deps): bump @sap/cds and cds-dk to ^10.2.0" +``` + +--- + +## Task 2: Bump CAP plugin packages + +**Files:** +- Modify: `package.json` +- Verify: `package-lock.json` + +**Interfaces:** +- Consumes: branch from Task 1 with `@sap/cds` 10.2 installed +- Produces: all `@cap-js/*` plugins and `@cap-js-community/websocket` bumped to their current latest + +**Version targets** (verified available on npm before writing this plan): + +| Package | Current | Target | +|---|---|---| +| `@cap-js/ai` | `~1.1.0` | `^1.3.0` | +| `@cap-js/audit-logging` | `^1.3.0` | `^1.3.0` (already at latest; keep) | +| `@cap-js/change-tracking` | `^2.2.2` | `^2.2.3` | +| `@cap-js/hana` | `^3.1.0` | `^3.1.2` | +| `@cap-js/mcp` | `1.3.0` (exact) | `^1.5.0` | +| `@cap-js/ord` | `^1.9.3` | `^1.10.2` | +| `@cap-js/sqlite` | `^3.1.0` | `^3.1.2` | +| `@cap-js/telemetry` | `^2.0.1` | `^2.2.0` | +| `@cap-js-community/websocket` | `^1.11.1` | `^1.11.4` | +| `@cap-js/cds-test` (devDep) | `^1.0.2` | `^1.0.2` (keep; latest is same) | +| `@cap-js/data-inspector` | `1.0.5` (exact) | bump to `2.0.1` (exact) only if no breaking API changes confirmed | +| `@cap-js/graphql` | `0.14.0` (exact) | keep at `0.14.0` (no new release) | +| `@cap-js/attachments` | `4.0.0` (exact) | keep at `4.0.0` (no new release) | + +- [ ] **Step 1: Apply version bumps to `package.json`** + +Edit the `dependencies` and `devDependencies` blocks per the table above. For `@cap-js/data-inspector`, check `npm info @cap-js/data-inspector versions --json` first — if the `2.0.1` release notes indicate any breaking API changes for this project's usage (search for `data-inspector` in `srv/`), keep it at `1.0.5`. + +- [ ] **Step 2: Run `npm install`** + +```bash +npm install 2>&1 | tail -20 +``` +Expected: no peer dependency errors + +- [ ] **Step 3: Run unit tests** + +```bash +npm test 2>&1 | tail -40 +``` +Expected: all tests pass + +- [ ] **Step 4: Verify AI plugin still initializes** + +```bash +node -e "const cds = require('@sap/cds'); const ai = require('@cap-js/ai'); console.log('AI plugin loaded:', ai.version || 'ok')" 2>&1 +``` +Expected: no error + +- [ ] **Step 5: Commit** + +```bash +git add package.json package-lock.json +git commit -m "chore(deps): bump @cap-js/* plugins to latest 10.2-compatible versions" +``` + +--- + +## Task 3: Evaluate and adopt opt-in 10.2 flags + +**Files:** +- Modify: `package.json` (`.cds` block → `fiori` section) + +**Interfaces:** +- Consumes: Task 2 (all plugins at 10.2 versions) +- Produces: `package.json` CDS config updated with evaluated opt-in flags + +The three 10.2 opt-ins to evaluate: + +1. **`cds.fiori.draft_admin_integrity: true`** — draft deletion uses DB cascades; only matters if draft entities have custom delete handlers. Search before adopting. +2. **`cds.fiori.draft_orphan_cleanup: true`** — background cleanup of orphaned draft rows; safe to adopt. +3. **`@cds.autoexpose: false`** annotation — prevents entity duplication in exported APIs; applies to CDS model files, not `package.json`. + +- [ ] **Step 1: Check for custom draft delete handlers** + +```bash +grep -rn "DELETE\|draft.*delete\|delete.*draft" srv/ --include="*.js" | grep -i "before\|on\|after" | head -20 +``` + +If any handler targets draft entities with custom logic, skip `draft_admin_integrity` for now and note it in the commit message. + +- [ ] **Step 2: Adopt `draft_orphan_cleanup`** + +In the `cds.fiori` section of `package.json` (create it if absent): + +```json +"fiori": { + "draft_orphan_cleanup": true +} +``` + +- [ ] **Step 3: Conditionally adopt `draft_admin_integrity`** + +If Step 1 found no custom draft delete handlers, add to `cds.fiori`: + +```json +"draft_admin_integrity": true +``` + +If custom handlers found, skip and add a comment in the PR description explaining why. + +- [ ] **Step 4: Run unit tests to verify draft behavior unchanged** + +```bash +npm test -- --grep "draft" 2>&1 | tail -30 +``` +Expected: tests related to drafts pass; if `draft_admin_integrity` causes failures, revert only that flag. + +- [ ] **Step 5: Run the full test suite** + +```bash +npm test 2>&1 | tail -40 +``` +Expected: all tests pass + +- [ ] **Step 6: Commit** + +```bash +git add package.json +git commit -m "feat(cap): adopt CAP 10.2 draft opt-in flags (orphan_cleanup[, admin_integrity])" +``` + +--- + +## Task 4: Check for metadataEtag and CqnSelect.getTransformations impacts + +**Files:** +- Modify: any test files in `test/` that assert on `@odata.metadataEtag` (only if found) +- Modify: any service code that calls `CqnSelect.getTransformations()` and mutates the result (only if found) + +**Interfaces:** +- Consumes: Task 2 (cds 10.2 installed) +- Produces: tests and code that are compatible with 10.2 breaking changes + +- [ ] **Step 1: Scan test files for `metadataEtag` assertions** + +```bash +grep -rn "metadataEtag" test/ --include="*.js" --include="*.ts" 2>&1 +``` + +If found: remove or update assertions — the property is no longer in default OData responses; it only appears when `Accept: application/json;odata.metadata=full` is set. + +- [ ] **Step 2: Scan service code for `getTransformations()` mutation patterns** + +```bash +grep -rn "getTransformations" srv/ --include="*.js" 2>&1 +``` + +If found and the result is mutated (e.g., `.push()`, `.splice()`): update to use `Select.transformations(List)` instead. + +- [ ] **Step 3: Run full test suite** + +```bash +npm test 2>&1 | tail -40 +``` +Expected: all tests pass + +- [ ] **Step 4: Commit (only if changes were made)** + +```bash +git add test/ srv/ +git commit -m "fix(cap10.2): remove metadataEtag assertions, use Select.transformations() for mutations" +``` + +If no changes were needed, skip this commit and note "no code changes required for breaking changes" in the PR. + +--- + +## Task 5: Update CLAUDE.md and open PR + +**Files:** +- Modify: `CLAUDE.md` (version references) +- No `docs/` changes needed — this is a version bump, not a new feature + +**Interfaces:** +- Consumes: all prior tasks complete, tests green + +- [ ] **Step 1: Update version references in CLAUDE.md** + +Search for `10.1` in `CLAUDE.md` and update to `10.2` where they refer to the CAP version being used: + +```bash +grep -n "10\.1\|cds 10" CLAUDE.md | head -20 +``` + +Only update references to the current CAP version; do not update unrelated version numbers. + +- [ ] **Step 2: Run full test suite one final time** + +```bash +npm test 2>&1 | tail -40 +``` +Expected: all tests pass + +- [ ] **Step 3: Open PR targeting DEV** + +```bash +gh pr create \ + --base DEV \ + --title "chore(deps): upgrade to CAP 10.2" \ + --body "$(cat <<'EOF' +## Summary +- Bumps `@sap/cds` and `@sap/cds-dk` to `^10.2.0` +- Updates all `@cap-js/*` plugins to latest 10.2-compatible versions +- Relaxes `@cap-js/ai` pin from `~1.1.0` to `^1.3.0` +- Adopts CAP 10.2 opt-in flags: `draft_orphan_cleanup` (and `draft_admin_integrity` if no custom handlers found) +- No schema changes; no Java migration steps + +## Breaking changes addressed +- `@odata.metadataEtag` removed from default OData responses — scanned and updated if needed +- `CqnSelect.getTransformations()` immutable — scanned and updated if needed + +## Test plan +- [ ] `npm test` passes (in-memory SQLite) +- [ ] Dev server starts: `cds watch` (manual check) +- [ ] AI plugin initializes without error on `cds watch` startup +EOF +)" +``` diff --git a/docs/superpowers/plans/2026-11-01-draft-admin-integrity-2909.md b/docs/superpowers/plans/2026-11-01-draft-admin-integrity-2909.md new file mode 100644 index 000000000..fbdd266b4 --- /dev/null +++ b/docs/superpowers/plans/2026-11-01-draft-admin-integrity-2909.md @@ -0,0 +1,208 @@ +# CAP 10.2 Optimized Draft Deletion (`draft_admin_integrity`) Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Adopt CAP 10.2's optimized draft deletion (`cds.fiori.draft_admin_integrity: true`) safely — closing the one reconcile-correctness gap it introduces and shipping the DB-constraint migration in the correct order. + +**Architecture:** Enabling `draft_admin_integrity: true` makes `cds build` generate `ON DELETE CASCADE` constraints on each draft table's `DraftAdministrativeData_DraftUUID` FK, and changes draft activation/root-cancellation to delete only the `DraftAdministrativeData` record — the DB cascades the child rows. That cascade bypasses CAP's per-row `before/after('DELETE')` handlers. In this project the only correctness-sensitive handlers are the `CompletionPathItems`/`GroupPathItems` FK-capture-and-reconcile pair in `AdminService` (`srv/admin-service.js:1197-1242`), which keep Mission/Group completion rollups consistent. The fix is **additive**: add root-level `DISCARD` handlers on `Missions.drafts`/`Groups.drafts` that fire the same reconcile — DISCARD fires at the draft root before the cascade, independent of per-child-row delete events. The existing child `before/after('DELETE')` handlers stay (they still fire for direct programmatic deletes, which the cascade does not touch). The flag + constraint deployment is sequenced as a DB migration: deploy constraints first, flip the serving flag after. + +**Tech Stack:** CAP Node.js `@sap/cds` 10.2, `@cap-js/hana` (prod/hybrid), `@cap-js/sqlite` (dev/test), Fiori draft model, vitest (`cds.test('serve', ...)`), HANA Cloud. + +**Spec:** https://cap.cloud.sap/docs/releases/2026/oct26#optimized-draft-deletion + +## Global Constraints + +- CAP Node.js only — the Java `cds.drafts.deleteStrategy` property does NOT apply; the Node.js lever is `cds.fiori.draft_admin_integrity` (+ companion `cds.fiori.draft_orphan_cleanup`) +- Node.js pinned 22.23.4; `@sap/cds` ^10.2.0 (already on DEV) +- Never write raw SQL — use `cds.ql` / CQL (the existing reconcile helpers already do) +- PR targets `DEV` (never `main`); open a PR, never direct-merge +- Reconcile is fire-and-forget in a detached `cds.tx` and MUST remain fail-open — a reconcile fault must never fail the user's draft operation (see `fireReconcile`, admin-service.js:1159-1165) +- Draft-enabled entities in scope are all in `AdminService`; only `Missions`/`Groups` (via composition children `CompletionPathItems`/`GroupPathItems`) carry reconcile risk — the other 17 draft entities have only cache-bust/snapshot `after('DELETE')` handlers (stale-cache at worst, not data loss) +- The constraint-generation + HANA deploy (Task 3) is a schema migration: constraints deploy FIRST (`NOT VALIDATED`, so existing orphans don't block), the serving flag flips AFTER. Confirm deploy scope + ordering with the maintainer before any PROD step — this plan delivers the code + DEV verification; PROD rollout is a separate authorized deploy. +- `srv-qa` cp-list audit: this plan touches only `srv/admin-service.js` (already a `srv-qa` dep's sibling, not a new `srv/lib/` import) — no new transitive `srv/lib/` dependency is introduced, so the `srv-qa` cp list does not change. Confirm during Task 1 that no new `./lib/*` import is added. + +## Review Focus + +- **Draft DISCARD bypasses reconcile (the whole point):** under `draft_admin_integrity: true`, discarding a Mission/Group draft that removed a `CompletionPathItems`/`GroupPathItems` child must still reconcile the parent rollup. Task 2's test must prove the DISCARD handler fires the reconcile even though the child `after('DELETE')` does not. +- **Direct programmatic delete still reconciles:** the existing child `before/after('DELETE')` handlers must keep working for non-draft-cascade deletes (e.g. `service.tx()` row deletes, active-entity edits). Task 2 must prove enabling the flag + adding DISCARD handlers did not break the existing CREATE/UPDATE/DELETE child reconcile path. +- **Reconcile stays fail-open:** a thrown error inside the new DISCARD handler must not reject the user's discard. Task 2 asserts the discard still returns success when reconcile internals throw. +- **DISCARD on a draft with no child items is a no-op, not a crash:** discarding a freshly-created Mission draft with zero CompletionPathItems must not throw (undefined FK → skip, matching the existing `legacyId == null` guard). +- **SQLite cascade-constraint parity:** enabling `draft_admin_integrity` generates FK constraints; the dev/test SQLite deploy must still boot. Task 1 must confirm `cds.test('serve', '--in-memory')` starts clean with the flag on (SQLite supports the constraints, but verify no deploy error). + +--- + +## Task 1: Enable the flag and confirm the app still boots (dev/test) + +**Files:** +- Modify: `package.json` (`cds.fiori` section — create it) +- Test: `test/admin-drafts.test.js` (existing — used only as a boot smoke here) + +**Interfaces:** +- Produces: `cds.fiori.draft_admin_integrity: true` in package.json; a confirmed-booting SQLite test harness that Task 2 builds its new tests on. + +- [ ] **Step 1: Add the flag to `package.json`** + +In the `cds` block, add a `fiori` section (it does not exist yet): + +```json +"fiori": { + "draft_admin_integrity": true +} +``` + +- [ ] **Step 2: Confirm no new `srv/lib/*` import is implied** + +Run: `grep -n "require('./lib/\|from './lib/" srv/admin-service.js` +Expected: the only reconcile import is the pre-existing `./lib/completion-reconcile.js` (admin-service.js:68). No new lib dep → `srv-qa` cp list unchanged. + +- [ ] **Step 3: Run the existing draft test as a boot smoke** + +Run: `npx vitest run test/admin-drafts.test.js` +Expected: PASS — the SQLite in-memory deploy boots with the cascade constraints generated, and existing draft create/activate tests still pass. If the deploy errors on constraint generation, STOP and investigate (do not proceed to Task 2). + +- [ ] **Step 4: Commit** + +```bash +git add package.json +git commit -m "feat(cap): enable cds.fiori.draft_admin_integrity for optimized draft deletion" +``` + +--- + +## Task 2: Add root DISCARD reconcile handlers for Missions and Groups + +**Files:** +- Modify: `srv/admin-service.js` (add handlers next to the existing SAVE reconcile hooks, after line 1276) +- Test: `test/admin-drafts-discard-reconcile.test.js` (new) + +**Interfaces:** +- Consumes: `fireReconcile(kind, legacyId)` (admin-service.js:1159), `resolveGroupLegacy(groupId)` (:1175), `resolveMissionsNestingGroup(groupId)` (:1181), `reconcileEntityForUsers` (imported :68). These are all in scope inside the `init()` closure where the new handlers are registered. +- Produces: `this.after('DISCARD', 'Missions', onMissionDiscard)` and `this.after('DISCARD', 'Groups', onGroupDiscard)` — reconcile the parent rollup on draft discard. + +**Behavior the handlers must implement.** On DISCARD of a draft root, the draft's child `CompletionPathItems`/`GroupPathItems` rows are about to be cascade-deleted; the reconcile needs the parent legacyId(s). On a Missions discard, resolve the Mission's own `legacyId` from the draft/active row and `fireReconcile('MISSION', legacyId)`. On a Groups discard, resolve the Group's `legacyId` → `fireReconcile('GROUP', legacyId)`, then `resolveMissionsNestingGroup(groupId)` → `fireReconcile('MISSION', mLegacy)` for each (mirroring `onGroupSave`, admin-service.js:1261-1273). Wrap in try/catch, fail-open. DISCARD refers to the active entity per CAP's event model; the handler reads the ID from `req.data?.ID ?? req.params?.[0]?.ID` and resolves legacyId via the existing resolvers. + +- [ ] **Step 1: Write the failing test** + +Create `test/admin-drafts-discard-reconcile.test.js`. Model the harness on `test/admin-drafts.test.js` (`cds.test('serve', '--project', '.', '--in-memory')`, `adminAuth`, a seeded Tag). Spy on the reconcile by stubbing `reconcileEntityForUsers` is not possible across the HTTP boundary; instead assert on observable effect: after discarding a Mission draft that had a CompletionPathItems child, the parent Mission's rollup records are reconciled. If asserting the rollup side effect is too heavy for a unit test, assert the handler path instead by spying on `cds.log('rollup')` or by registering a test-only `after('DISCARD','Missions')` probe. Write these three tests: + +```js +it('fires MISSION reconcile when a Mission draft is discarded', async () => { + // create Mission draft (POST /admin/Missions, lenient) → get ID + // DELETE the draft: project.delete(`/admin/Missions(ID=${id},IsActiveEntity=false)`, adminAuth) + // assert reconcile fired for the mission's legacyId (via probe/log spy) +}); + +it('DISCARD of an empty Mission draft does not throw', async () => { + // create Mission draft with no CompletionPathItems, discard it + // assert discard returns 204/200 and no error logged +}); + +it('Group draft discard reconciles the group and nesting missions', async () => { + // create Group draft, discard, assert GROUP reconcile fired +}); +``` + +- [ ] **Step 2: Run the test to verify it fails** + +Run: `npx vitest run test/admin-drafts-discard-reconcile.test.js` +Expected: FAIL — no DISCARD handler exists yet, so the reconcile probe/log is never hit. + +- [ ] **Step 3: Implement `onMissionDiscard` and `onGroupDiscard` in `srv/admin-service.js`** + +Add after line 1276 (right after `this.after('SAVE', 'Groups', onGroupSave)`). Reuse `fireReconcile`, `resolveGroupLegacy`, `resolveMissionsNestingGroup`, and the `cds.entities('com.sap.developers.ims')` access pattern. Register with `this.after('DISCARD', 'Missions', onMissionDiscard)` and `this.after('DISCARD', 'Groups', onGroupDiscard)`. Follow the fail-open try/catch shape of `onGroupSave`. + +- [ ] **Step 4: Run the test to verify it passes** + +Run: `npx vitest run test/admin-drafts-discard-reconcile.test.js` +Expected: PASS — all three tests green. + +- [ ] **Step 5: Run the existing draft + reconcile tests for regression** + +Run: `npx vitest run test/admin-drafts.test.js test/admin-service-reconcile.test.js` +Expected: PASS — the existing child-delete and SAVE reconcile paths are unaffected. + +- [ ] **Step 6: Commit** + +```bash +git add srv/admin-service.js test/admin-drafts-discard-reconcile.test.js +git commit -m "fix(admin): reconcile Mission/Group rollups on draft DISCARD (draft_admin_integrity)" +``` + +--- + +## Task 3: Document the constraint-deploy migration runbook + +**Files:** +- Modify: `docs/developers/reference/tutorials-ims-gotchas.md` (add a "Draft delete — draft_admin_integrity" entry) OR create `docs/developers/operations/draft-admin-integrity-migration.md` if the gotchas file is the wrong home — pick the gotchas file to match the project's "one doc per subsystem, gotchas for the rest" convention. +- Modify: `CLAUDE.md` Top Gotchas (one bullet linking to the above, matching the existing bullet style) + +**Interfaces:** +- Consumes: Tasks 1-2 (flag enabled, handlers in place) +- Produces: a runbook a deployer follows to roll the cascade constraints to HANA in the correct order. + +The runbook must capture: (1) constraints generate at `cds build` once the flag is on and deploy to HANA as `.hdbconstraint` with `NOT VALIDATED` (existing orphaned draft rows do not block); (2) deploy order — ship the constraints to a target env and let them land BEFORE relying on cascade behavior, since the Node.js runtime stops issuing per-table draft deletes once the flag serves; (3) optional `cds.fiori.draft_orphan_cleanup: true` to purge pre-existing orphaned draft rows around the migration, then turn back off; (4) rollback — the constraints are additive (`ON DELETE CASCADE` on draft tables only); reverting means flipping the flag off (runtime resumes per-table deletes) and optionally dropping the constraints; (5) DEV→test→PROD ordering per the project's no-main-hotfix model. + +- [ ] **Step 1: Write the runbook entry** + +Add the migration steps + rollback to the gotchas doc (or new ops doc). Use the spec's exact flag names (`cds.fiori.draft_admin_integrity`, `cds.fiori.draft_orphan_cleanup`). Keep it to the five points above. + +- [ ] **Step 2: Add the CLAUDE.md Top Gotchas bullet** + +One bullet, matching the existing terse style, linking to the doc. Note the flag is ON as of this PR and that draft discard now reconciles via root DISCARD handlers (not child DELETE events). + +- [ ] **Step 3: Verify the doc links resolve** + +Run: `grep -n "draft-admin-integrity\|draft_admin_integrity" CLAUDE.md docs/developers/reference/tutorials-ims-gotchas.md` +Expected: the CLAUDE.md bullet references the doc section that exists. + +- [ ] **Step 4: Commit** + +```bash +git add CLAUDE.md docs/ +git commit -m "docs: draft_admin_integrity migration runbook + gotcha" +``` + +--- + +## Task 4: Open PR to DEV + +**Files:** none (git/PR only) + +**Interfaces:** +- Consumes: Tasks 1-3 complete, tests green + +- [ ] **Step 1: Run the scoped verification suite one final time** + +Run: `npx vitest run test/admin-drafts.test.js test/admin-drafts-discard-reconcile.test.js test/admin-service-reconcile.test.js` +Expected: all PASS. (Full suite runs in CI — the repo blocks the full local suite.) + +- [ ] **Step 2: Run the static guards (they run in CI; catch drift early)** + +Run: `npm run static-guards` +Expected: 17/17 pass (confirms no `srv-qa` dep-parity or cp-list drift from the admin-service change). + +- [ ] **Step 3: Push and open the PR** + +```bash +git push -u origin +gh pr create --base DEV --title "feat(cap): adopt draft_admin_integrity (optimized draft deletion) #2909" --body "$(cat <<'EOF' +Closes #2909 + +## Summary +- Enables `cds.fiori.draft_admin_integrity: true` — CAP 10.2 optimized draft deletion (DB `ON DELETE CASCADE` on draft tables; activation/root-cancel delete only the admin record). +- Adds root `after('DISCARD')` reconcile handlers for `Missions`/`Groups` in AdminService. Under the flag, discarding a draft cascade-deletes child `CompletionPathItems`/`GroupPathItems` at the DB level, bypassing the per-row `after('DELETE')` reconcile. The DISCARD handlers restore rollup correctness; the existing child DELETE handlers stay (they still fire for direct programmatic deletes). +- Adds a constraint-deploy migration runbook. + +## Migration ordering (NOT done in this PR — separate authorized deploy) +Constraints generate at `cds build` and deploy to HANA as `.hdbconstraint` (`NOT VALIDATED`). Deploy the constraints to a target env BEFORE the flag serves there. See the runbook. Confirm scope + ordering with the maintainer. + +## Test plan +- [x] `test/admin-drafts-discard-reconcile.test.js` — new; DISCARD reconcile + empty-draft no-op + group-nesting +- [x] `test/admin-drafts.test.js` + `admin-service-reconcile.test.js` — no regression (SQLite) +- [x] `npm run static-guards` 17/17 +- [ ] Hybrid HANA draft-discard verification on DEV (reviewer / post-deploy) +EOF +)" +``` + +result: PR opened to DEV adopting draft_admin_integrity with DISCARD-reconcile fix and migration runbook diff --git a/docs/superpowers/plans/2026-11-01-draft-integrity-preflight.md b/docs/superpowers/plans/2026-11-01-draft-integrity-preflight.md new file mode 100644 index 000000000..2c02055ec --- /dev/null +++ b/docs/superpowers/plans/2026-11-01-draft-integrity-preflight.md @@ -0,0 +1,277 @@ +# Draft Integrity Preflight Check Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Add a startup preflight check that warns when `cds.fiori.draft_admin_integrity: true` is serving on HANA but the required `ON DELETE CASCADE` constraints have not yet been deployed to that schema. + +**Architecture:** A new `srv/lib/draft-integrity-preflight.js` module exports a pure async function `checkDraftCascadeConstraints(dbRun)` that queries `SYS.REFERENTIAL_CONSTRAINTS` for cascade FKs on draft tables. A `wireDraftIntegrityPreflight(cds)` wirer registers the check once in a `cds.on('served')` handler (globalThis-sentinel-guarded), skipping on SQLite/local. A unit test exercises the pure function directly with a mock `dbRun`. The runbook gets a one-liner pointing to the new guard. + +**Tech Stack:** Node.js ESM, CAP `@sap/cds`, Vitest + +**Spec:** `docs/developers/reference/tutorials-ims-gotchas.md` § "Optimized draft deletion — draft_admin_integrity (CAP 10.2, #2909)" + GitHub issue #2968 + +## Global Constraints + +- Branch off `origin/DEV` — the `draft_admin_integrity: true` flag lives on DEV. +- Fail-open: the check MUST NOT crash the server; use `cds.log('draft-integrity-preflight').warn(…)` on missing constraints. +- Skip entirely on SQLite / non-HANA (guard: `cds.db?.options?.kind !== 'hana'`). +- globalThis sentinel pattern: `globalThis.__draftIntegrityPreflightRegistered` — matches existing sentinel style in `srv/server.js`. +- No new npm dependencies. +- `checkDraftCascadeConstraints` must be testable without booting CAP — it receives `dbRun` as a parameter, never imports `cds.db` directly. +- Unit tests: Vitest, `import { describe, it, expect } from 'vitest'` — no `cds.test()` harness. +- Commit to feature branch; open PR targeting `DEV`. + +## Review Focus + +- **SQLite skipped silently**: on `npm test` (in-memory SQLite) the preflight MUST NOT run or log noise. Test: the `isHanaKind` predicate with kind `sqlite` must return `false`. +- **Empty constraint result vs. DB error**: a `dbRun` that throws must be caught (fail-open), distinct from a result returning zero rows. Test: both branches in unit test. +- **Partial constraint coverage**: only some draft tables have the constraint. The check should list the missing tables. Test: unit test with a mix of found/missing. +- **Re-fire on `cds.test()`**: `cds.on('served')` can fire more than once under Vitest. The globalThis sentinel must prevent double-registration. Test: call `wireDraftIntegrityPreflight` twice and assert `dbRun` called at most once. +- **Known draft table name set must stay in sync**: if a new draft-enabled entity is added to `AdminService`, its table name must be added to `DRAFT_TABLES`. The unit test captures the expected set so a future addition will fail loudly. + +--- + +## File Map + +| File | Action | Responsibility | +|---|---|---| +| `srv/lib/draft-integrity-preflight.js` | **Create** | Pure check function + wirer | +| `test/unit/draft-integrity-preflight.test.js` | **Create** | Unit tests for the pure function | +| `srv/server.js` | **Modify** | Import wirer, call it once | +| `docs/developers/reference/tutorials-ims-gotchas.md` | **Modify** | Add one bullet pointing to the preflight | + +--- + +## Task 1: `srv/lib/draft-integrity-preflight.js` — pure check + wirer + +**Files:** +- Create: `srv/lib/draft-integrity-preflight.js` + +**Interfaces:** +- Produces: + - `DRAFT_TABLES: string[]` — authoritative list of draft table names (lowercase HANA names) + - `isHanaKind(cds: object) → boolean` + - `checkDraftCascadeConstraints(dbRun: (sql: string) => Promise) → Promise<{ok: boolean, found: string[], missing: string[], error?: string}>` + - `wireDraftIntegrityPreflight(cds: object) → void` + +- [ ] **Step 1: Enumerate draft-enabled entities to build `DRAFT_TABLES`** + + ```bash + grep -n "annotate\|@odata.draft.enabled\|with draft\|AdminService" srv/admin-service.cds | head -40 + grep -n "draft.enabled" db/*.cds srv/*.cds | grep -v node_modules | head -30 + ``` + + HANA table name for entity `com.sap.developers.ims.Missions` becomes `COM_SAP_DEVELOPERS_IMS_MISSIONS_DRAFTS`. The SQL query uses `TABLE_NAME` in uppercase; the code normalizes to lowercase for comparison. + +- [ ] **Step 2: Create `srv/lib/draft-integrity-preflight.js`** + + Module shape (exact signatures; implement bodies): + + ```js + // srv/lib/draft-integrity-preflight.js + export const DRAFT_TABLES = [ /* one entry per draft-enabled entity */ ]; + export function isHanaKind(cds) { /* cds.db?.options?.kind === 'hana' */ } + export async function checkDraftCascadeConstraints(dbRun) { /* see below */ } + export function wireDraftIntegrityPreflight(cds) { /* see below */ } + ``` + + `checkDraftCascadeConstraints(dbRun)`: + - Calls `dbRun("SELECT TABLE_NAME FROM SYS.REFERENTIAL_CONSTRAINTS WHERE COLUMN_NAME = 'DRAFTADMINISTRATIVEDATA_DRAFTUUID' AND DELETE_RULE = 'CASCADE'")` + - Maps result rows to a `Set` of `row.TABLE_NAME.toLowerCase()` values + - Computes `found` = DRAFT_TABLES entries in the set, `missing` = DRAFT_TABLES entries not in the set + - Returns `{ ok: missing.length === 0, found, missing }` + - On throw: returns `{ ok: false, found: [], missing: [...DRAFT_TABLES], error: err.message }` + + `wireDraftIntegrityPreflight(cds)`: + - `cds.on('served', async () => { … })` + - Inside handler: check `globalThis.__draftIntegrityPreflightRegistered`; set it; call `isHanaKind(cds)` and return early if false + - Call `checkDraftCascadeConstraints((sql) => cds.db.run(sql))` + - Whole thing wrapped in outer try/catch; log warn on missing or error, log info on all-found + +- [ ] **Step 3: Verify module loads** + + ```bash + node --input-type=module -e "import { DRAFT_TABLES, isHanaKind } from './srv/lib/draft-integrity-preflight.js'; console.log('ok', DRAFT_TABLES.length)" + ``` + Expected: `ok ` where N > 0, no error. + +--- + +## Task 2: Unit tests + +**Files:** +- Create: `test/unit/draft-integrity-preflight.test.js` + +**Interfaces:** +- Consumes: `checkDraftCascadeConstraints`, `DRAFT_TABLES`, `isHanaKind`, `wireDraftIntegrityPreflight` from `../../srv/lib/draft-integrity-preflight.js` + +- [ ] **Step 1: Write tests** + + ```js + import { describe, it, expect, beforeEach, afterEach } from 'vitest'; + import { + checkDraftCascadeConstraints, DRAFT_TABLES, isHanaKind, wireDraftIntegrityPreflight, + } from '../../srv/lib/draft-integrity-preflight.js'; + + describe('DRAFT_TABLES', () => { + it('is a non-empty array of lowercase strings', () => { + expect(Array.isArray(DRAFT_TABLES)).toBe(true); + expect(DRAFT_TABLES.length).toBeGreaterThan(0); + for (const t of DRAFT_TABLES) { expect(t).toBe(t.toLowerCase()); } + }); + it('contains the known high-risk tables', () => { + expect(DRAFT_TABLES).toContain('com_sap_developers_ims_missions_drafts'); + expect(DRAFT_TABLES).toContain('com_sap_developers_ims_groups_drafts'); + }); + }); + + describe('isHanaKind', () => { + it('true for hana', () => expect(isHanaKind({ db: { options: { kind: 'hana' } } })).toBe(true)); + it('false for sqlite', () => expect(isHanaKind({ db: { options: { kind: 'sqlite' } } })).toBe(false)); + it('false when cds.db absent', () => expect(isHanaKind({})).toBe(false)); + }); + + describe('checkDraftCascadeConstraints', () => { + it('ok:true when all tables have cascade FK', async () => { + const rows = DRAFT_TABLES.map(t => ({ TABLE_NAME: t.toUpperCase() })); + const r = await checkDraftCascadeConstraints(async () => rows); + expect(r.ok).toBe(true); + expect(r.missing).toHaveLength(0); + expect(r.found).toHaveLength(DRAFT_TABLES.length); + }); + it('ok:false when no constraints exist', async () => { + const r = await checkDraftCascadeConstraints(async () => []); + expect(r.ok).toBe(false); + expect(r.found).toHaveLength(0); + expect(r.missing).toHaveLength(DRAFT_TABLES.length); + }); + it('ok:false and lists only missing tables when partial', async () => { + const r = await checkDraftCascadeConstraints(async () => [{ TABLE_NAME: DRAFT_TABLES[0].toUpperCase() }]); + expect(r.ok).toBe(false); + expect(r.found).toHaveLength(1); + expect(r.missing).toHaveLength(DRAFT_TABLES.length - 1); + expect(r.missing).not.toContain(DRAFT_TABLES[0]); + }); + it('ok:false with error property when dbRun throws', async () => { + const r = await checkDraftCascadeConstraints(async () => { throw new Error('HANA gone'); }); + expect(r.ok).toBe(false); + expect(r.error).toBe('HANA gone'); + expect(r.found).toHaveLength(0); + }); + }); + + describe('wireDraftIntegrityPreflight sentinel', () => { + let calls = 0; + const fakeCds = { + db: { options: { kind: 'hana' }, run: async () => { calls++; return []; } }, + on: (event, fn) => { if (event === 'served') void fn(); }, + log: () => ({ warn: () => {}, info: () => {} }), + }; + beforeEach(() => { calls = 0; delete globalThis.__draftIntegrityPreflightRegistered; }); + afterEach(() => { delete globalThis.__draftIntegrityPreflightRegistered; }); + + it('registers only once when called twice (sentinel)', async () => { + wireDraftIntegrityPreflight(fakeCds); + wireDraftIntegrityPreflight(fakeCds); + await new Promise(r => setTimeout(r, 0)); + expect(calls).toBeLessThanOrEqual(1); + }); + }); + ``` + +- [ ] **Step 2: Run tests** + + ```bash + npx vitest run test/unit/draft-integrity-preflight.test.js + ``` + Expected: all PASS. + +- [ ] **Step 3: Run full unit suite** + + ```bash + npm test + ``` + Expected: no regressions vs. baseline. + +- [ ] **Step 4: Commit** + + ```bash + git add srv/lib/draft-integrity-preflight.js test/unit/draft-integrity-preflight.test.js + git commit -m "feat(serve): draft-integrity-preflight — WARN on missing HANA cascade constraints (#2968)" + ``` + +--- + +## Task 3: Wire into `srv/server.js` + +**Files:** +- Modify: `srv/server.js` + +**Interfaces:** +- Consumes: `wireDraftIntegrityPreflight` from `./lib/draft-integrity-preflight.js` + +- [ ] **Step 1: Add import** at the top of `srv/server.js` alongside the existing `./lib/` imports: + + ```js + import { wireDraftIntegrityPreflight } from './lib/draft-integrity-preflight.js'; + ``` + +- [ ] **Step 2: Call wirer** just before the metrics-db-wrap `cds.on('served')` block (~line 2348): + + ```js + wireDraftIntegrityPreflight(cds); + ``` + +- [ ] **Step 3: Smoke-check** + + ```bash + cds watch + ``` + Expected: server starts, no crash, no `[draft-integrity-preflight]` lines (SQLite skips). + +- [ ] **Step 4: Commit** + + ```bash + git add srv/server.js + git commit -m "chore(serve): wire draft-integrity-preflight startup check (#2968)" + ``` + +--- + +## Task 4: Update runbook + +**Files:** +- Modify: `docs/developers/reference/tutorials-ims-gotchas.md` + +- [ ] **Step 1: Add bullet** in the "Optimized draft deletion" section, after "Constraint-deploy migration ordering (HANA)": + + ```markdown + - **Startup preflight check** — `srv/lib/draft-integrity-preflight.js` runs once at boot (inside `cds.on('served')`, HANA only, fail-open). Queries `SYS.REFERENTIAL_CONSTRAINTS` for `ON DELETE CASCADE` FKs on every draft table and emits `cds.log('draft-integrity-preflight').warn(…)` listing any missing tables. If the warn line appears after a deploy, the HDI constraint deploy has not yet landed — wait and restart. Absent = all constraints present. + ``` + +- [ ] **Step 2: Commit** + + ```bash + git add docs/developers/reference/tutorials-ims-gotchas.md + git commit -m "docs: startup preflight check in draft_admin_integrity runbook (#2968)" + ``` + +--- + +## Task 5: Open PR targeting DEV + +- [ ] **Step 1: Push** + + ```bash + git push -u origin worktree-draft-integrity-preflight-2968 + ``` + +- [ ] **Step 2: Open PR** + + ```bash + gh pr create \ + --base DEV \ + --title "feat(serve): draft-integrity-preflight startup check for HANA cascade constraints (#2968)" \ + --body "..." + ``` + Body: closes #2968, summary bullets, test plan checklist (vitest run, npm test, cds watch, hybrid CF log check). diff --git a/docs/superpowers/plans/2026-11-01-retire-btp-onboarding.md b/docs/superpowers/plans/2026-11-01-retire-btp-onboarding.md new file mode 100644 index 000000000..40b522e3f --- /dev/null +++ b/docs/superpowers/plans/2026-11-01-retire-btp-onboarding.md @@ -0,0 +1,170 @@ +# Retire btp-onboarding Repo Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Remove all references to the `btp-onboarding` and `btp-onboarding-Contribution` GitHub repos from the tracked codebase so those repos can be fully decommissioned. + +**Architecture:** The seven `btp-ea-onboard-*` tutorial slugs are registered in `discovery-baseline.json` (fetch source) and `hashes.json` (content hash registry). `hugo/content/tutorials/`, `hugo/content-qa/tutorials/`, `hugo/content/concepts/`, and `hugo/data/browse.json` are **generated/gitignored** — they are not edited directly and will be correct after the next `fetch-tutorials` + `build:all` run (the retired slugs will simply be absent). The only tracked files requiring changes are the two JSON registries. + +**Tech Stack:** Node.js, JSON + +**Spec:** No separate spec — retirement scope defined in conversation context. + +## Global Constraints + +- Never edit generated files (`hugo/content/tutorials/`, `hugo/content-qa/tutorials/`, `hugo/content/concepts/`, `hugo/data/browse.json`, `hashes.json` entries for other slugs, `gen/`) — only the two tracked JSON registries. +- Preserve all non-`btp-ea-onboard-*` entries in both files exactly. +- Seven slugs to retire: `btp-ea-onboard-01-intro`, `btp-ea-onboard-02-ga`, `btp-ea-onboard-03-subb`, `btp-ea-onboard-04-subm`, `btp-ea-onboard-05-abapb`, `btp-ea-onboard-06-abapm`, `btp-ea-onboard-07-cli`. + +## Review Focus + +- `hashes.json` is a single-line JSON object — a naive string delete could corrupt JSON syntax; verify it parses cleanly after edit. +- `discovery-baseline.json` entries are 5 lines each (key + slug + repo + branch + closing brace + comma) — verify no trailing comma is left after the last deleted block. +- Other slugs that happen to contain the substring `btp-ea-onboard` (there are none, but confirm) must not be deleted. + +--- + +### Task 1: Remove 7 slugs from `scripts/parsers/discovery-baseline.json` + +**Files:** +- Modify: `scripts/parsers/discovery-baseline.json` (lines 1512–1546 — the 7 contiguous `btp-ea-onboard-*` blocks) + +**Interfaces:** +- Produces: `discovery-baseline.json` with no `btp-onboarding` repo references; consumed by `fetch-tutorials` at build time. + +- [ ] **Step 1: Use Node to delete the 7 keys and write back** + +```bash +node -e " +const fs = require('fs'); +const f = 'scripts/parsers/discovery-baseline.json'; +const db = JSON.parse(fs.readFileSync(f, 'utf8')); +const slugs = [ + 'btp-ea-onboard-01-intro','btp-ea-onboard-02-ga','btp-ea-onboard-03-subb', + 'btp-ea-onboard-04-subm','btp-ea-onboard-05-abapb','btp-ea-onboard-06-abapm', + 'btp-ea-onboard-07-cli' +]; +slugs.forEach(s => delete db[s]); +fs.writeFileSync(f, JSON.stringify(db, null, 2) + '\n'); +console.log('remaining btp-ea-onboard keys:', Object.keys(db).filter(k => k.startsWith('btp-ea-onboard'))); +" +``` + +Expected: prints `remaining btp-ea-onboard keys: []` + +- [ ] **Step 2: Verify the file still parses** + +```bash +node -e "require('./scripts/parsers/discovery-baseline.json'); console.log('OK');" +``` + +Expected: `OK` + +- [ ] **Step 3: Verify no btp-onboarding repo references remain** + +```bash +grep -c "btp-onboarding" scripts/parsers/discovery-baseline.json && echo "FAIL: still has refs" || echo "PASS: clean" +``` + +Expected: `PASS: clean` (grep exits 1 when no matches → the `||` branch fires) + +- [ ] **Step 4: Commit** + +```bash +git add scripts/parsers/discovery-baseline.json +git commit -m "chore: remove btp-ea-onboard-* slugs from discovery-baseline (retire btp-onboarding repo)" +``` + +--- + +### Task 2: Remove 7 slug keys from `hashes.json` + +**Files:** +- Modify: `hashes.json` (root — single-line JSON map of slug → content hash) + +**Interfaces:** +- Produces: `hashes.json` with no `btp-ea-onboard-*` keys; consumed by `publish-content.ts` for delta detection. + +- [ ] **Step 1: Use Node to delete the 7 keys and write back** + +```bash +node -e " +const fs = require('fs'); +const f = 'hashes.json'; +const h = JSON.parse(fs.readFileSync(f, 'utf8')); +const slugs = [ + 'btp-ea-onboard-01-intro','btp-ea-onboard-02-ga','btp-ea-onboard-03-subb', + 'btp-ea-onboard-04-subm','btp-ea-onboard-05-abapb','btp-ea-onboard-06-abapm', + 'btp-ea-onboard-07-cli' +]; +slugs.forEach(s => delete h[s]); +fs.writeFileSync(f, JSON.stringify(h)); +console.log('remaining btp-ea-onboard keys:', Object.keys(h).filter(k => k.startsWith('btp-ea-onboard'))); +" +``` + +Expected: prints `remaining btp-ea-onboard keys: []` + +Note: `hashes.json` is a minified single-line file — write back without pretty-printing (`JSON.stringify(h)`, no indent arg). + +- [ ] **Step 2: Verify the file still parses** + +```bash +node -e "require('./hashes.json'); console.log('OK');" +``` + +Expected: `OK` + +- [ ] **Step 3: Commit** + +```bash +git add hashes.json +git commit -m "chore: remove btp-ea-onboard-* hashes (retire btp-onboarding repo)" +``` + +--- + +### Task 3: Run unit tests and open PR + +**Files:** +- No changes — verification and PR only. + +- [ ] **Step 1: Run unit tests** + +```bash +npm test +``` + +Expected: all tests pass. (The `purge-orphans-cap.test.js` fixture uses these slug names as example strings in `formatStepSummary` output — those tests are unrelated to slug existence and should still pass unchanged.) + +- [ ] **Step 2: Open PR** + +```bash +git push -u origin worktree-retire-btp-onboarding +gh pr create \ + --base DEV \ + --title "chore: retire btp-onboarding repo — remove 7 btp-ea-onboard-* slugs" \ + --body "$(cat <<'EOF' +## Summary + +- Removes all 7 `btp-ea-onboard-*` slugs from `scripts/parsers/discovery-baseline.json` (fetch source registry) so `fetch-tutorials` no longer pulls from the decommissioned `sap-tutorials/btp-onboarding` and `sap-tutorials/btp-onboarding-Contribution` repos. +- Removes the corresponding 7 keys from `hashes.json` (content-hash registry). + +## What is NOT changed (generated files, rebuilt on next `build:all`) + +- `hugo/content/tutorials/btp-ea-onboard-*.md` — gitignored; gone after next `fetch-tutorials` +- `hugo/content-qa/tutorials/btp-ea-onboard-*.md` — same +- `hugo/content/concepts/*.md` (`teaches:` refs) — same +- `hugo/data/browse.json` — rebuilt each build +- `verdicts/preflight-smoke.json` — stale smoke results, overwritten on next run + +## Test plan + +- [ ] `npm test` passes locally +- [ ] After merge to DEV + deploy: `fetch-tutorials` no longer attempts to clone `btp-onboarding` +- [ ] After `build:all`: no `btp-ea-onboard-*` pages appear in browse or sitemap +EOF +)" +``` + +- [ ] **Step 3: Post PR URL in conversation as final report** diff --git a/hashes.json b/hashes.json index 2e3f4b11a..732e7a7bb 100644 --- a/hashes.json +++ b/hashes.json @@ -1 +1 @@ -{"abap-cloud-ui-from-interface":"a96335fe57305a3bda319a59bfb4c7714c6e140aae27f1d8d8f714085fa1ddee","abap-connectivity-daemon-mqtt-bridge":"ae42854dbab60772c8da66aca0d3629ee494c2c7c72507827af8cd365cc59946","abap-connectivity-daemon-simple":"6e587ffc6465fb0e9ac30e2412637180bbdb2467a281b07c2e2d35f4e4b59c3f","abap-connectivity-mqtt":"c5498e5cbcb94ed7cc1eeea28348b8e508d3149922b06847042624a8721ad47d","abap-create-basic-app":"a862a2e5779a9001d577c374c636aeeba473a4933de8ea07a7e992db955327a8","abap-create-project":"a111d0a3b0c7cd01f22892d7b8ac2050bddeb716c0e26fe50f3d8ec6ea24af72","abap-custom-analytical-queries":"e98f219c1350dc322e2e8e6f2d82d4d35cebaa4390d69be1b79777b71c3ae5cb","abap-custom-analytical-queries-measures":"7d42bb8fbf2b3a120d87a5558d99ede2e51f8f5f2547aa9067d6e5f6112056d7","abap-custom-reporting":"44b9bf4aa621a2c380d30b2ff82357843b3700d8c7bc191f4b0ffffc0c13e759","abap-custom-reporting-analytical-query":"0877ed37b8ac6be6fa8283abed9fa6159604c23a41c1cbc0b1e8b0c50a35b400","abap-custom-reporting-design":"694a8fd63adad0a0847924c5d4f75478f209a70ffd99fcc3da6dfe29b13182d8","abap-custom-reporting-kpi-creation":"f895be653b18964adc0869e86d8f138eab36910b775e5a986e3334edf90a578e","abap-custom-ui-bas-connect-s4hc":"384266b21d8b300284f2806cb246b9ec48aa33078a265ccaae7c95540930f6f1","abap-custom-ui-bas-develop-s4hc":"0da0a16bef95402eefcbed2bfa81df4a2edb402e614b9bf0be7003578bbe419e","abap-custom-ui-business-object":"b54fade601d424201db67ad7be56ee4694fd598c0a5aa190f6fbaf9454706a61","abap-custom-ui-communication-arrangement":"d28b56b5b4bd67cf7f1b0d617025787be8234e1af4b38cc732947d7cc55f9dc7","abap-custom-ui-communication-systems":"232bcc17549d5c253c2f224dfdc7ca827db3093f210b10ff6f5eb4181c8ca448","abap-custom-ui-generate-tile":"dc2939cf7442ab71e0cd8200fbbd601440dc9c887aaacf5c339a0b6e9c1d89a7","abap-custom-ui-subaccount-permission":"0173f6d095757a07fcdfdd1a3ad6f39f61244035febfd9ebd0765aa5bccb0351","abap-custom-ui-tile":"c3b2ef9cc391c9efa39472bfa2245702cf7fb7670a364c755efdbca2bd66fdb5","abap-custom-ui-trust-cf":"dcb4ab843df3bd5c2dfe8cffce59c165274a094ad8246a06bf97ebb8a5c4da57","abap-custom-ui-trust-settings":"1b06129e47499f4a7d4aa27ad4219071e3274f77947c28d4bb043d89c6f41014","abap-dev-adt-create-cds-view":"cd3b7daf9c6098595c7bc2453e2222ada265049e8665a15d328f7c08f7f53772","abap-dev-adt-create-data-element":"0403af984c99bb82ab58abc65a48a7142b6c4b39db1ebabebca75f27048ae83c","abap-dev-adt-create-new-structure":"0fb344e90061d6823b61f94d1a31127db525468db570af39d90ee70f77533e19","abap-dev-adt-use-cds-view":"511c381b78fbcd322764ca1a4294bc0871381942eb8e034fea9037b98632eb08","abap-dev-create-abapdoc":"2e6a0c547c49e3f2cd30b44d957d40cbf7866fba67d838b58d9da31a140f7e8a","abap-dev-create-cds-view":"33e141394907a8bbe4f2223231f0cca3af478339b0062968cb16e7dac68bf6eb","abap-dev-create-new-class":"f804b35d13dc370f3dbcf4f7621496d1234900bc2f1268f635e65b0389780a8b","abap-dev-create-package":"ee5736f6adcf0a6fc1585448a9ec6a9d1e9cfad83dbbfa75f647438e3f3af7f6","abap-dev-create-table":"1dad1316aeb418f67355bf19d484df2a62cd0db8b406ebfeac2a57cdcd9b7bdf","abap-dev-enhance-cds-view":"5c1aa10a929f23413427f6bc7bb52975af34587338d17ffcd6aee17fa04e5f01","abap-dev-learn-ddic":"450e72e12a269dfb436e2ddb9f508706797becc44db4e77344ad391a8ebb3ec3","abap-dev-learn-repo":"f26fe8851c876a0cc1da1319a8ba9e1b97a7a62968d2463e2ab520f5e946b9fc","abap-display-data-queries":"521f1145e603bbf25996410d90f372a03a9ce1e26956f5c563105a2709cb03f1","abap-env-create-table-type":"1a4dc75f75f948bf01638bd9584f6fbf195c1dad53b49106150328954770b2da","abap-env-ddls-extend":"cb3e52c401bb5c7aa3486a7b2dc66be4979d5f45937bba41fdef9777df2d7f7e","abap-env-rfc":"b8afc56060192d6c7fda013d9262d74fab0d3022a6a2bc942228741223c62fbb","abap-env-rfc-scenario":"8bb552abde28e939374fb398ec7e1903f1393610394df8cea2fd82458a7d1013","abap-environment-a4c-create-custom-entity":"8f6ce1446f82fb982288fcfe91d596bb2eed68ae101af2f8f0f09102aaba2e4f","abap-environment-a4c-create-proxy":"ffbd6304067d59114d1089318552694ca67c4f9b53fbbc0a1a91b0f11b26ada4","abap-environment-a4c-inbound-communication":"1693fdbb32b15ee37a181c0744faffe714d1cbd5c09f5a6ae1a789792f4077e5","abap-environment-abapgit":"10a2f8c8b416f92851d8f2841aeaa13a74d6a215f34d8f6f1bb8caf9fc6b5043","abap-environment-abapgit-transfer":"6683b451bac68f5376973d3220ca366b2dadeb6340eaa74fdfc11911bdc0c535","abap-environment-access-mgmt":"3a42c97dc3b55fe213c5e1759fbf5a18b0399bf767f6018e8d51ad26a9c90c3a","abap-environment-additional-functionality":"3c1586665f95e2377f151da3faa8886dd94c9670a8fca41954332e165fed5372","abap-environment-amdp-profiling":"5df991a6f3b6499c5d3e93607f5eae378c1b810474384df8aea3f7bdc3c1f067","abap-environment-analytics":"9101a24520cc1559cb9107926384b4d2d075be3e0079e1e609dd8fa6df538699","abap-environment-atc-run":"b58b978e8d1c47564209f84167929d706687acc061a80f29891b56f2c8f126df","abap-environment-authorization":"5c9556ad85d7096728f0042674120fe741bd0056c06ee2bbdabb993ca142f251","abap-environment-authorization-control":"8c499d79d328c073f0535187714baec7203bf8f75c859c04dcee308c39e1ad51","abap-environment-behavior-definition":"c949945d9819e4be91102c58b1120761be724d1d16cb93e6b0825a50301f8159","abap-environment-booking-supplements-analytics":"e47780e321729c5154f5d8732a4deeb11c6ea97eff1209542f80f778ce496522","abap-environment-branch":"c4496806a43753684150eb87adfd5ed96a3d967ba026e1297dec46adf684cb36","abap-environment-business-configuration-object":"8076e730d942718001703b6fd54bd5f66a7a39e1134db97f53c897391c13734e","abap-environment-business-partner-basic-auth":"cce493c0d1f00fc3434c9af3d7d3ae432acc5cbebd6ca56387c84466c6061e0b","abap-environment-business-partner-oauthsamlbearer":"da8e9909087f3e297960d6198385213e4f8beeaf40ae39cc6029647f39faad5b","abap-environment-business-partner-outbound-call":"62fe01026f7959211a32f7f9fb81cbbd4bce24b0237a256f9870e43ab6942f75","abap-environment-business-partner-scenario":"cef75afc8edab9016815dd3ccd56a5d93896dfa2b304b076dffdbd74408f4c7a","abap-environment-business-service-provisioning":"bcf7a7d2b676c4034c44768a87fb35b9468610c06c2e42e3b85551195c2901a2","abap-environment-checkout":"fff72f2613c812bf4fa251812dda4cbe8274f5313b2712fb8aa45620a303501b","abap-environment-communication":"ff40c515b92f4caec7b05b2c752998b2047b072ccc04c75a1ba10a050a9ca62a","abap-environment-communication-arrangement":"12970ddb0d2802c06859b73b1009c33adf1b4cdf64e54f1c3900e9cc1d051f56","abap-environment-console-application":"f4bef3fada7bbe146549359c6383dab2ff329e82d0fa915dfff204471f34ae8b","abap-environment-content-provider-communication":"ea453d834a552a15684e3aa6a3f83c57c976ddc598fbe59e9dcd6bac8bf0afc8","abap-environment-content-provider-destinations":"ab778d7abdc0e7d548332a79cce05b89f1e756c0a442ac7954379d87d0baf058","abap-environment-content-provider-manage":"9706945c53406e56bfda40f71a33ef37ed348206256e797a49ec94dd67a5ce68","abap-environment-contentprovider":"d5da1b0cf89beb79348ac111af52b305f697de52cd32af72855ca742a35ad673","abap-environment-create-abap-cloud-project":"1e8faed7ddf6c8da01c34b55a2c1df00355cd3ec93a68f968805794976d5419c","abap-environment-create-abapdoc":"152acd50a71403697ce7af30e14e66e9402cd53af542c8cb81fa59ed7c28202b","abap-environment-create-cds-mde":"24cb49051c1498c76b7d8f7d5650f4349f3707dc0b5e1b6468162b0bad1f507c","abap-environment-create-http-service":"4e475bac26639ee6d79a1b7a942e260e243aea736fbc532540ae0777e0796c9a","abap-environment-create-rap-business-events":"7e1fe16718525d4ad65cf03e0fafcb2e4be782937207cbe336cae9164cfda022","abap-environment-create-role-collection":"672ab573760193e0862e2fc692cee9ee6833e62f6f8c16ecfb8b05e83a2f9431","abap-environment-create-s4hana-rap-business-events":"f4593db2753f27288d1f2acceb2d7e75ddef43dff6eb6d81cdf6a7731a6dc5b9","abap-environment-create-service-consumption-model":"c9920f954e68ce6cbfee669b4a9eb41f7060fa027d981c96e24b57875b2000aa","abap-environment-create-spaces-pages-template":"500b7adae56a901b72296cb018e3591c94e207fe9749186b5472e3d2aefa8eb7","abap-environment-create-tile":"c3bcfc7758809a5a588c8b6eb7499c7a188854569abd8a011247107dbaf6e134","abap-environment-custom-entity-debug":"c51fb2bb272c680e3b5f5c0a794143e0df7e544f186dcc9a42389cd7ae406124","abap-environment-custom-theme":"16ebc56fc964c198b32952f6a22b3a04ba7293d180027193738b11add507d768","abap-environment-deploy-cf":"c3534f27d17cec248d52552ab6cbcdfbecc8e3772ba9d7881ee21405560482dd","abap-environment-deploy-cf-production":"ff4d38875fbd4664acc5be6f7ab1e1ac11f3b50ea8d88b682919a41c180002d6","abap-environment-deploy-fiori-elements-ui":"a3b912321db68244fa053cc1dcd7d249fac803710750accf4a4cf0cb5f48306f","abap-environment-destinations":"d7ba1362b1e131d056807369830f7a7af4750255f9ec5a0f4abb31feec331123","abap-environment-developer-user":"9d9603a342035c0926e5f274eef4d089afd56143368fe705b3e5a218430426cb","abap-environment-enhance-bapi-invoke":"f63b1b145d304750ef18fc01974831b6adb894532bced1ac2fe3cda95ef8a475","abap-environment-enhance-cds-view":"cc2e496c32e933a0a534283cece9ed4e3c29d64396f46e44fbf5ec73df92b0cc","abap-environment-event-enablement-consumption":"2967928a6515520b5cf1816ba34591d5832ae783834f3874b1f13b3b9ad01d27","abap-environment-event-processing-s4h-onpremise":"ae2b9c31aea214e4cad7d94970cbbdde81c06002d32b3aedecb78137f919052f","abap-environment-expose-rap-business-events":"55ec0781fbecb5afcb64071ff8b9def48f8742c9eeaa65e034072983b12f2fd1","abap-environment-extend-cds-view":"ebfd69d1e99a82d06b1d64995b0599b72c9a3feb434484bf853ad2041ba98b6b","abap-environment-external-api":"f0d52b20d2b5e050930efad94307508e6bf2415aebb5db3fcc158e8a01c24d0a","abap-environment-gcts":"495c67837ef98094c96485149b04112ad862588574bfe35312f4653eafe3f208","abap-environment-gcts-byog":"d23421df4145dc2b5e8728587f8f7b6725e66a8128902ca3764ca9bc4610fb7a","abap-environment-generation-rfc-proxy":"7314ac820f9b64fe6ee033ddd1257074c2fee8d137471dcd5e923e0d06b5132a","abap-environment-integrate-app-into-flp":"4f2daa692cd7b6307671ffd7e4c738a189e3ffbbea188614cd5a6a9fdb3c38ce","abap-environment-ips":"f6e6d14f41a160f9ed63b020102d97f321f59abd105978f5df9c2931685619fc","abap-environment-lock-object":"d5acd653cfa1305bf9bec413948355e7631b70c4696b79338726d9fb43d3de9c","abap-environment-lp-service-content-provider":"b278ceabd725aa65cf853f074df00795936767fe199394f914568c0bb2069479","abap-environment-maintain-bc-app":"87ec2534804c924044752d15ce70cac0e9727b4d9e7924ea44fa1bd7877768ba","abap-environment-maintain-filters-outbound-events":"3db11735836ffcafe89a3cd048563cf8ccc093b64fbd78d7c5eaf02bbe169528","abap-environment-monitoring-calm-health-monitoring":"e02fb3c72e5c250563bb5c37d2efad4eef5319251c275d362ae1e97218485521","abap-environment-monitoring-frun-healthmonitoring":"b7e47b7d75a3ea3f1faa90f887c39e3e2704f1149cb9b7696709a526c6a5b325","abap-environment-portal-site-bas":"0eacdd326a59c90d42f486a9c66fd675d2076385879415395d6ac450a5081c25","abap-environment-portal-site-vscode":"c0efb589a9cd499c49f741aab067ac3052c3da3c13f839ba844de7e56500f6b1","abap-environment-rap-generator":"c80628762e4ffc3b9fef344fca6e4a030691c8cee056b25f1448189241ff2532","abap-environment-rap100-determination":"a928fa99c61760dcce9a05b6a820f8f66e92ad9253bfd5e029385f25dbeb0aee","abap-environment-rap100-dynamic-feature-control":"c53ea3139103902813559a889c20badf2cd6919be61366caf5463745133c8a56","abap-environment-rap100-early-numbering":"5e697be5a70e5091a1e7d13f0b346c83b4d88b993436bbafcbaf39ff0f3a8930","abap-environment-rap100-enhance-data-model":"5ee6a7ffeedd34487ebbdc22629045892ba37a9727cfd706427139a6da797909","abap-environment-rap100-factory-action":"e4712610b96b00c268abca02c10bca0c44c245cca8b5e52f920ee99ed87f4b33","abap-environment-rap100-generate-ui-service":"bfb607f910861d1c6e8891ead082b4f40c06323b093f9f09b7ec7841dea5009f","abap-environment-rap100-instance-action":"b48c1c60fe33bb0020a6df2e1075d9b1b3450e91c227c7dc8080489f1610beec","abap-environment-rap100-unit-testing":"a42a6439163443ce9996029ae63791b2884ddcd666ae4a1b0fda21159b460c7c","abap-environment-rap100-validation":"ce168f01e94cc66afc400c2246e229fe96f1bda1bd2c2b01515b9254fee1e7dd","abap-environment-restful-programming-model":"585f24217226944cb0445d6ac9cdf8c9028dc41b2a20fed3c97e1fceebdc09f3","abap-environment-rfc-custom-entity":"3519eaac438d0d420abe29e53a9f1f1ff0b36132261979fa13b29b013f9b0c67","abap-environment-saas-addon-build":"92bfa98aae52e29024c3179e015553e0b2c98b6de37ba4a85c25cfbb765ff93b","abap-environment-saas-addon-configure":"a6c693502e7428b313649286aa4bfb5ba9e7804bacefcb39df663e664ab13ab4","abap-environment-saas-addon-msa":"e68fd362796a6f41dbf29e142291764ab3b80524c8e6f13739e64041af788d8b","abap-environment-saas-addon-mta-product":"87bde050faca9705cb14f888d00b0f2cb033ea18da0fd477b1c162d348b35213","abap-environment-saas-addon-setup":"7401bf4e83c8575a368140fd79099b2e6bf8d5b9611024806c2cdc2d8d9c152d","abap-environment-saas-consumer-iam":"e4237cec350ee5d9e8c5b3e59a266c89bd4dc5598e043b42c8102269aa794059","abap-environment-saas-consumer-subscribe":"35cd46ad6d6c9f8b6502bb174beeebaca13045b3fed82f4757723789a39bb964","abap-environment-saas-mta-approuter":"c67866fe17a712c56dd25a081e3a483464d9fb88bef8b5e1b85e04e3f4f97167","abap-environment-saas-mta-bas":"5704d77765209d559e8e319c3b37d8cd24a209079075846c38d3958dd3261667","abap-environment-saas-mta-config":"c7407cc3e03dd2f723810ce8d5b9f4903b2bc99831dfb5310beedf96263f3bc2","abap-environment-saas-mta-deploy":"7945c41cfadd3bec3b7b3a42cad87f601e411155db0d3ce5030515e0fc6f1daa","abap-environment-saas-operate-tools":"c04033c425c0fc004116d7e97666e48bde8e826125086b604acbe302d5637500","abap-environment-saas-overview":"1167dcc9efc8e6fc294fd3673f70a2ee6203e4181ce7e8c5a889283cf68ffe0f","abap-environment-sbpa-workflow-action":"0a2e1b0afb6ac25713955d169427603ceb6a491fb1b66f45c79b69db93ab8252","abap-environment-sbpa-workflow-bp":"629d1dbffde2eb733501663ba281113729082366559d10a20af5e6782e117f95","abap-environment-sbpa-workflow-extend-rap-app":"5a7ffae0547de08dec1b78c140c501ac8ffea2acb56360a08e8252a268974bf6","abap-environment-sbpa-workflow-form":"9c3b5bbd573a6e3eb54ee26c3a2b3a831c6d67c485a2d4bad4c27d0d6782653a","abap-environment-sbpa-workflow-handler-class":"3b067e64594f29604522cc76a96db3b40b347bb0fa311204e00011e15a0d7df9","abap-environment-sbpa-workflow-integration":"e390e6a883682ee88ee1691c6c81510be23956a7973a33b291e7c06ac40eb18a","abap-environment-sbpa-workflow-release-deploy":"c797b7e1682b4f220f5356fc922bb902196a40f424a82733ffc193d1252fd73b","abap-environment-sbpa-workflow-run-monitor-troubleshoot":"56a90bbe537d355900ce6dfa7f7ec1ed348f01079252af8e926dc26df9ccf095","abap-environment-sbpa-workflow-trigger":"9d7e26f4fe5d4fa58e3f0742de945c43a68b597dccc4ecd73fb4b951fffcf12d","abap-environment-shell-plugin":"a3501b5483bbd8d6b338c4b17a973d30202518ae035a57c0d5aad1c218dc14b6","abap-environment-shell-plugin-enrich":"14a2cd3185353d9b54f4769e0c91218569a345e590a1e20d53daf165099a29aa","abap-environment-soap-web-services":"626b11429f7444bf5730b21b527fa893b7a9324f76652d5e098b3a0513715950","abap-environment-taster":"d58cd2e7628bdfcc0f8638b82b3c28c3465248069a8666a2891adb3dcfb66338","abap-environment-test-rfc":"6d7a02745a0a1b5ce5f94391f51e74661a99f1bcbdea70eaea8a91731a26989d","abap-environment-trial-onboarding":"67148f22887b15523417e42e5145c6c854e1246bbb7c18f520672208acc61cc2","abap-environment-use-factory-calendar":"3482e2ba90ac511c893fb2fedc1c646c4ede679231211e6a8ed3e3aaa916ce9b","abap-environment-vs-code":"dacf4115f679292cd90f2274c4fa1214da136e2d50a58542b45314b2e76c0619","abap-extensibility-cbo-create":"f35263569d2e34f9d46431eb9a5454c953c0c8935108c42d61557e5d77375abf","abap-extensibility-cbo-execute-outbound-service":"a5c22b9910a2b914cf8e93df5da6908d89f99f81a3634086f81fa58e1cbe6f2a","abap-extensibility-cbo-logic":"8bb80862e7b2aeb406e2d98050dd27e6b1629c7af8801b5fd13f3dff4657e077","abap-extensibility-cbo-rules-configuresystem":"aa58f86e51863b975426a5e5e5ade4cc9a1a29903ea86814d057951936e88a9d","abap-extensibility-cbo-rules-consumption":"f2327bc761dba0e3587a288cf6d00c955b4c2536fc0903ce145bf8e0bdb5bfab","abap-extensibility-cbo-rules-create-decisiontable":"c29a15fdc65dc9c7be59ac9e1ad3bbc7a7a6ce9a38a9042f4b74fdef925680eb","abap-extensibility-cbo-rules-create-destination":"df2952d3a2baf907db33f5f530e9363348173579ee4f28fb9dbbece8dd690ba9","abap-extensibility-cbo-rules-create-ruleservice":"8d7aaa9260a08431dd4e9a819181570e079ffa8f3d47e59db228e72f889dfc94","abap-extensibility-cbo-rules-deploy-ruleservice":"e314cc1256bb3853255823463e0e5cd5352791a0f7dcbad17c19570e773e159e","abap-extensibility-cbo-rules-import-rulesproject":"d3600e7303cd9e2c1ddfc6318290aa1ab52267bc3863f9b5cd8c25c22542f47d","abap-extensibility-cbo-ui-adaptation":"6f4628c19ab47a666f3f03756fbddac9adeba183965f7c33f9343f462dd95691","abap-extensibility-cbo-ui-generation":"78c0295a36e611f1596273cf338c4e1f1d91a1a118de280e99c388c56149ae55","abap-extensibility-custom-cds":"d0510cfb70bad9950b1e6cf3c5aca5969f00210181214639ea58e1ac305a8087","abap-extensibility-custom-code-list":"a46d648790d75fbc249a30b7460b4bc749e2157c793f3f3533cdf89e1c85312d","abap-flp-setup-content":"e4ebb0543814b316e0a799f4c9f1ba7e13ffacc28b038054f00b0e0498ae1d92","abap-install-abapgit-plugin":"d167fc2b3119c182ada53cf9f3bf2d89847dd3e8e0754303f86f3443f9741218","abap-install-adt":"0dabb2ee191299781ea69cc9f8efb12c5ef9857c8a79ef85fd645c28c091a93e","abap-islm-orchestration-service-consumption":"734cafeab7a6e53814bb565c2d1a1155fd6fd64b81c9d2f198a7165ffbb46a02","abap-islm-setup-mtls":"3c6ddc7d2251e96cde9b13ff6d768b07250417a97845b7bd70a6f7ce5d02082a","abap-islm-setup-oauth":"435665aebbd3438928922d23350a06a0c46f23441aeb5e57b17a04671d3d1cbb","abap-islm-setup-prepare":"49851178cc7c5bf9aaaf5545530c8a3a8c8fceb7e9581029568c21563937dc37","abap-islm-simple-genai-scenario":"d3f07723c4dbd4bad362cdcfbc400e0db1e701e4b4069487457a844108802a23","abap-s4hanacloud-login":"debe2f1883220970f818ce71997c393d844d5b166c70443d556a8e6d9229f2db","abap-s4hanacloud-procurement-purchasereq-checks":"cd4076ff5878f4a0fb6cb7eec547b5fb726579ec47db562c2d1d9396b378d45b","abap-s4hanacloud-procurement-purchasereq-contract":"8cc42fa0c7cdf9a6ec5d431c2b61f60b34bbe77ae1df45a46ec4c554bffbd59d","abap-s4hanacloud-procurement-purchasereq-fldctrl":"1253cc7e5038b6768bebbb3d3ba753ae6e6b8612059306424f6e86a9329769fd","abap-s4hanacloud-procurement-purchasereq-flp":"c004d59df435584eb0c5a32cb17cd3a5b1493dfe445ba7fa619ed0dcdf0a05dc","abap-s4hanacloud-procurement-purchasereq-shop":"8363a45d0201468fec5fbab7db9970c25b83aebec9dec16c4808c5095f86bc5e","abap-s4hanacloud-procurement-purchasereq-shop-ui":"eccaac71d8ba61bac313a485acb2e28cd2a1edc5967bae191b7c08d94cb2c73d","abap-s4hanacloud-purchasereq-connect-bas":"dd6f4974eddacdb85ef9a62156c70aa848cf1652e7b488299bba25a67a18f30b","abap-s4hanacloud-purchasereq-create-wrapper":"3c2c9048b642c255335febf0bf05342fbb770115c5a0ef94bb22f3d3e90ec1f9","abap-s4hanacloud-purchasereq-deploy-ui":"de7ca8bf071803751f63971a4ac471edb7516fb91e04267212d083dbe81f1509","abap-s4hanacloud-purchasereq-deploy-ui-tier1":"aa714c4b1fb755abaeaaf0b88035df7b4ea85e88b324ef721d7ddc35b520d62a","abap-s4hanacloud-purchasereq-enhance-shop":"01bfb5234326358719aa37219ea47e5d7dd3ec330f5f43a83342e9d94c74303c","abap-s4hanacloud-purchasereq-integrate-api":"0d89cc41c0464cfc0baeaa59f0bdce72b6cf2ef14f7e0a74f336e0418c156775","abap-s4hanacloud-purchasereq-integrate-flp":"61c9eb4b37d6fbd83383bff4f27f4e6e832f13d443a494ba8638332dd7cf70ad","abap-s4hanacloud-purchasereq-integrate-flp-tier1":"bf8ebf73caccba659883fbbb81d035e6a680447ba74501e67b87a2e46b128bf4","abap-s4hanacloud-purchasereq-integrate-wrapper":"6ec4392451df60f7a4e276c9e928fee5ffd920969a2369641318cced8031543a","abap-s4hanacloud-purchasereq-provide-authorization":"6d63bc81b6c776305e43907556b24db0e37f1354be443282bf44abe2cc5af8ae","abap-s4hanacloud-purchasereq-replace-wrapper":"17f4004cb8f6fe089023f994f77da83c322eda4153ccb8a0b538b2bb8d2055b1","abap-s4hanacloud-purchasereq-understand-scenario":"010a8688317d207e2776ae26dbf137b8d3e56c45d1de3be566a8c0c1068fe60f","abap-s4hcloud-procurement-po-customlogic-tracing":"66b521a385441ea0c60b33da9a49c6224cd1406a5483308f756a3c6e35340553","abap-s4hcloud-procurement-po-debugging":"86b09b4e311af3ca38c3688666d3aec275304d0b2fa23d4dda790f6435cc9dba","abap-setup-bc":"d8024715665d8f6cbbe59fda68c4a5d5b4c37da86427f14f5360ba75979829a9","abap-websocket-rfc":"36cd9bfb0c71e554f90b9db9645c9a7deeefae3c5adedccc113c906f592030b2","abap-websocket-rfc-bc":"cc41782e6a24f6fc5682d0fb2449316079af59c7b2d8b0aff6aced6e977d59d0","add-authorization":"63a57ff4b2a5f47e5756a2494d87ef862e83ae09f1ac0d995a957e4cbbb40ab4","add-cross-origin-preview-page":"f157ea5df05b36dfe4d3a18881ede39bcf11eca66e458df5135e7b98001c5310","add-custom-logic":"f82dd0a4c11514acfb0c7a4d736a1ae8a1c6a758639b108559d6f7f2d5cf41e6","add-fiori-elements-uis":"1d8c80d4daa741eeb3ff87a2c104d1dfe9530618dd023a141e21c5d49e0d6727","add-test-cases":"3c80f3d0795a809a8d038e20bf4bbaf8478b601f3c9129f9885a6d6264881f80","advanced-sql-migration-tool-ora-hana":"7baf6e64022b3a10299c18e45465f561f6d0b8c7283cf0af557b2b43c2fd99a2","aem-forward-events-sbpa":"3550834ca54d0096eb5a831e1a4a7549533db3fbe1323c2869281f421de24a53","aem-integrate-cloud-integration-iflow":"30ff864642c5e627987592c767992008f4bc78e3024f2f18fb7a7793b85b924a","ai-core-azure":"04c75836a6f735683612b64f9d9cd4509a574f8170824eeb86f174497489eb91","ai-core-code":"ab8a2acf8ba57ecbcf39ce81581dda10d54d3ce3efb0ca93735c14ede69970d2","ai-core-custom-llm":"b534fd59e39a8b5ef16551c320182503b7e4311b07620513060d8a32a88ae781","ai-core-custom-slm":"fd9f280dfe4833b99c47ec8c2ae6de905fc67b367e76bbc619009ca076f1ca02","ai-core-data":"ecb619ac02388c9f66a3ae9504b723a7f02b15d0d69fc04dd6a7c69ce823238c","ai-core-deploy":"dfadaf3b0497254b7364db3c43bb910bde80ce4b7c891e436627a3c70104230d","ai-core-genai-hana-vector":"211e72adcf70edbb22c04d9b5b43523b84d61adf447fbaf148fb9f125245385c","ai-core-genaihub-evaluation":"cf8f526f6168b6d0a6703aa8ff7e374122a28109452539d6dcbf88b0750fae6c","ai-core-genaihub-evaluation-comprehensive":"65836109a899e43a22533c07a33f59c031334756bf2c1764d10fc32ad6b9804c","ai-core-genaihub-evaluation-with-grounding":"410fc491efe87cba1fa19901454bb622385838461796c8284f44e805775ecc16","ai-core-genaihub-inference-observability":"95ad5738fac13bc8e32fd8c6cc1b6cd1fb551ebb359b1f7b548b9fb91931695d","ai-core-genaihub-multimodal-usage":"475facf2dd163be64201907f67b4a1f9a44a8e0193909677dd4c389bd87b21c3","ai-core-genaihub-prompt-optimization":"bfae46b8df32327f5fe44a6b5a659824d3066d11a88a2c8b04bfef5594bea540","ai-core-genaihub-prompt-registry":"645b0138a9b43aac3f3b2e28bb3123519a18f16aa58a062f417de9717cf6a016","ai-core-genaihub-provisioning":"a648f4b66e84776534d12d62cd921c267f56772a630968c29128276c33661cdc","ai-core-generative-ai":"154f8ce190abf5760ba5d6311f2262921ac530fea601f766d846c48bb4937c11","ai-core-gpt4o-consumption":"6830987dd333675c714d8cf1422cb1a0fcac7dd693cd3734ac801d21a50e4288","ai-core-helloworld":"c92b172586bde1655b882f38a95d1b9d0e3a44a13519ada9e89fda38ecbfbab7","ai-core-launchpad-provisioning":"e444fb61883f343f98984e3742444137a30674ae1ceb37905d3299151679892d","ai-core-metaflow-setup":"f9b793a983d1d7bb5eca8648b19eb2f38280cffd21e2d4453e1a92aa726b8cad","ai-core-metrics":"b55c5ed2c64697575831f2d40b047f97173ccf62adcb07d364df2275ed14ddd2","ai-core-orchestration-consumption":"9cc4c5c33ba77822045548f833390e884a48f78828f891f859884302e7a01d9f","ai-core-orchestration-consumption-opt":"4b6c4877032da5793474914b1b75da04f9f6051815a4fd5d59221ae7d745749a","ai-core-orchestration-consumption-opt-v2":"345f34e59828bad5c8e0a7ef8a0b97e9b4aab4aa011cd38a3574d5baec98cf7b","ai-core-orchestration-consumption-v2":"d606e146486dda61befb2751aa819bdcdcd0e92fffadadb7a5190fd75d612ca6","ai-core-orchestration-grounding":"b007f2eed0d5710226a24c978e44d3f8908f2a49a5a50e1e825d4317065f0e9c","ai-core-orchestration-grounding-jd":"29d0313308e0ccee266187ada29a00821c46064c65ddbf73a29c48b3313f9256","ai-core-orchestration-grounding-v2":"e4a82f55211a72afe6789851f33adac69cedb2221bfb96255462dcd043236d76","ai-core-setup":"ab3aa7fab8c97b30aa1ecaf99f6fa9672c55f7aa3c33cb8b587612b95d10f315","ai-core-template-wizard":"2f67230afebba1d3ba3061617c553fd11620a36488ea85f5c9621e4df66777fa","ai-core-tensorflow-byod":"2920e5285971f4629eea6bb59adad5bdda17186573dee40b4aea62db13215d00","ai-core-vs-code-toolkit":"ee72248be1e385f882547591fb0e6a4f7e376a402efe8c279708008e4b581cee","ai-launchpad-provisioning":"cf899550e22f19950d81919daef18a958b2275928d114145a7ae5426fa6d5269","aif-error-handling-custom-objects":"fef8f7d26064849819ccdb16315a45d8312c5852a17142f578940f3e4e667cd0","aif-error-handling-single-key-fields":"fe89511134250ed69d8ed51efa25ec0d3712ba60bcbc2feb0d4370f21cf4df3e","aif-error-handling-structures-fields":"fd94a9bb36ed90eb949977a747acfcff98e0af98997961b947f1b0fb5b507bba","aif-gw-odata-monitoring-interface":"20b9536a51add054e04c600f0705ae12d12c20035c8ad6d94e4ab909a078b82a","aif-idoc-monitoring-interface-create":"b5d6cb65b2642346f5b1db06b78e9eea8de0b5a14952b7369a07add6c563e04e","aif-idoc-monitoring-interface-customize":"0bd9b12b75a1870c95c7a6da5734491bc47d94da1e5d2f3132fd3c03c39fd951","aif-idoc-monitoring-interface-preprocessing":"18cb4bdbde6b3801158d79431cd55283132fcea39ed7c24907d1262d631b6f2f","aif-proxy-monitoring-interface-create":"b316a0ef3b96061808797c8a03113b2cff5955d392fa44c93a1164cce7deff19","aif-proxy-monitoring-interface-customize":"e39c82759aaee653e46a798cf57103605db986bdbc401eda81ffe9e622dd9490","aif-proxy-monitoring-interface-preprocessing":"005ddf444d3ab6ca501678e05a4b5fb6e65049de816a2a182a01564b87fec596","aif-recipients-by-key-fields":"9c89ae0c84365e19416bcf4a0c27e07ae7f151f52b3540edbeb91184c39987f9","aif-recipients-by-message-categories":"1b3d353f119136fe4059c4299c5a8b4846a32058ec00a5352ab450ded69888dd","aif-rfc-monitoring-interface-create":"4962b115cf0f3be469ba3f19fc3fd46d49985ca086eca5620e83a8c929db3400","alert-notification-service":"10ddadfb802faa435713906fb7b566b83c286cf83ac3a90de4f72df910d778d3","api-mgmt-isuite-initial-setup":"d42b97476ff7e8c6073cb6053375e5ec8c6602e269865e2d7642b9890f8327cd","api-mgmt-kyma-getting-started":"9b08fe5301c503fcb5b9097a42cbfea06fd8ddf4349df2621424d35bb6c1b49c","api-mgmt-revisioning":"5d09460fb6e0569d3e2961db912bc59a42a00949df3bed1f4c88da69f0e524d7","api-tools-postman-install":"f79ad1c2172e018ee3f835d48ce49c1f66679de9833eca1eae602f66dd80667b","appgyver-configure-camera":"52cda49e57a07cbe8ed00ffe47662224be508dcb2193cd3733eacfd68401dc23","appgyver-connect-publicapi":"91bf98484441f152cae2ec4ba48838ffd51dc4769ac5c8d43c7ca10970b70a78","appgyver-create-application":"1258bf80ae30cb7b87724e4b76180a2ec00e9d8c7348796025d630afb13804db","appgyver-display-information":"b201db5ef51e7685611c58a723258d868935097f2703defaccc3ee8806c1bb5d","appgyver-fetch-data":"dbdfb0364d366a6933ca33f9ac38dda4ce8325344bb5368b68c70b2143c6dc84","appgyver-subscribe-service":"b41258b20bec096e1e65bd319f83f1846f7dea2dfe2ee92fef5c854503693610","application-frontend-cli":"61ca3ed600ea4a87937d18d20e479fd0fc3ea16d3b122cc4ab2fb93dcf618ea9","application-frontend-mta":"98b6280cb531475bbf3e03727c19f3d13a1fa2d227fae7c744730b7202bd3238","application-frontend-trial-setup":"1a4beab6a43f51d10435064ea608fbe9d3cb7a14fd81d2c904150cd7223048a9","appstudio-cap-app":"fc9db51277ba11443b4ffcd241cefe2f7498611e5eada28592b9ed3d184603ee","appstudio-cap-java":"0037b2d1e9921456ca3ab4116b71773708240dbdf13d5037b78397d7848a847a","appstudio-devspace-create":"0b73c7636680b60c1534a34405eaff4d4cb42ef5229e9193fb3f3f3578a64d4f","appstudio-devspace-fiori-create":"77767055014bc9846416f09caa40742726d22ef5294c2769549be34b2a9675d7","appstudio-fioriapps-create":"86a7c4fabce8bab9ddee41996ef1fba73ebe4d7435f6784cedc766354ff794b4","appstudio-fioriapps-mta-build-deploy":"4dbecd0be6948c60f9890695072773ec5e2a13405a4bc956d9c97ab183543d37","appstudio-onboarding":"af1ee44097bb2b528957693023188d9a44c937451bea39a3e98091f8eec4239d","appstudio-sapui5-create":"c4673257262ddb8092d05f5e0a73876d94323e6f484ec2916708d86a63738f27","appstudio-sapui5-debug":"861bdc4044bcf744f7eed708990ac63ab75c46dfea38009673ec5419081bc342","appstudio-sapui5-integrationcard-create":"473a7f11523b533e49e3b1dc9d3cc8d4f8d3d0339fa6f143c6db893f43221660","basic-nodejs-application-create":"b0f418ed874194744d2844b26ed096294c0128b6db0d0192a2ac1f09def57fb0","btp-app-logging-neo-getting-started":"ace8432c485a0c3e44e12796341397ec10bb59295561fd89436604d83d42704d","btp-build-code-migration-plans-add":"3a502ddae93d4a950068bd238db0359ff9571ebf83438315b03b2b1037e45495","btp-build-code-migration-plans-mobile-service-build-code-plan":"fe0eb982f5d6ed52ebc5d389a16af95400ea1805a49038f8f52175ef647e853a","btp-build-code-migration-plans-mobile-service-plan-update":"5e53a892c5647517d1b95cf2ac448ceb096c38cca7eaf418fab8540cb909147b","btp-build-code-migration-plans-subscribe":"72ea54d32c42db2cbf8e448dd4b558b42a03982a934b437e54fa366ec92bffa2","btp-cap-beginner-bas-wizard":"021b4957da6f518ffcb56d332eac345224560759409bcdb7bfc550078e454adb","btp-cap-beginner-golden-path":"9018a310bfa7338b31b2740e31f1a54d3401aa7596e29f99b46bd62d6fd843b1","btp-cf-buildpacks-java-create":"7962b99d9c7e044d28b337fc9f0087cd34631528c2cd8569f0d44ec604200301","btp-cf-buildpacks-node-create":"db52917aa56ae5dd70b183b62be3246d6ac63e3b2fc4b068afe69a6e955a749a","btp-cf-buildpacks-python-create":"b2f086461ae6f0a3da6f1671f0dcbfd3c74064c8e51848027df8458bac4509f4","btp-cf-deploy-mta":"713c3844bbbbb037ef61c5dda6c20e495b5220b61f82b0899f4bb34aa1fc11bc","btp-cf-ext-s4hanacloud":"6b0646baf1bc17a06ad254f90d1493e8dcc381224c64a7fad11b5ec50d92d709","btp-cf-ext-successfactors":"69b08bebba7568b930cbc6f078bc120d1da785b11c31d7f15f40abc5e1c96a65","btp-cli-setup-kyma-cluster":"eb42fefb38403e0faec77284a7174fa4ce9f5e4a949c153ebf49261e99142354","btp-cockpit-cf-deploying-applications":"a24c28fab7e507e407f27ca9d1a133a280f84907029a23362bec1b1ebfe97417","btp-cockpit-cf-getting-started-with-cf-env-and-cockpit":"fcf7eb4c0ce0edb1ecffe15f4dc4b72c2c0de50778a824385c14b6323fa1b114","btp-cockpit-cf-managing-deployed-applications":"1704d84e29424c04a070eb1df9a6fc0c71da3eabc3f78f4a68b41046a49230d8","btp-cockpit-cf-managing-org-members":"5f3a21582150ba8aece1427c3a53ba830bb205718a78a1a1eed22084fb25a258","btp-cockpit-cf-managing-routes":"2dc2b1a353ef80528fcf49519645a0f4c602e6e08c70c97c8469e8527bd284fc","btp-cockpit-cf-managing-space-members":"3f507b4d19792e974a32640bef62d03e9a0d1bc0b785ff6c3707d6c70cfbb146","btp-cockpit-cf-managing-user-provided-environment-variables":"526d3cc9b5a1191cfc8174812ddf04a3297d2ecf601b7607ad58a03b946dd2f3","btp-cockpit-cf-monitoring-apps-and-spaces-with-events-and-logs":"1666b463f077c3d912405808d77a67f8f94c3d570a021785c3f0f405cfe2d8c4","btp-cockpit-cf-understanding-environment-variables":"a26eb34b018fc176f4988a458f26fb49f66dfdc39bf08f361074a27cca3983af","btp-cockpit-cf-understanding-security-groups":"04296ec2cb24da0c2194aa054809518a06f095f8137fcb9dea0304ffc2d4bb16","btp-cockpit-cf-understanding-service-bindings":"e47c86c3b830f3d53dc9a4d6d58074448ef2ab34d14b40ccf1f0d2e32eaf9adf","btp-cockpit-cf-understanding-space-quotas":"18382f2096383df6d507556c6eaba47a96c19c4ee59c8f0ffbd4ea6a62e89c86","btp-cockpit-cf-understanding-spaces":"0f9e71a492557b4a8909d6425bc0ae780b5ba5d3dd385bdfaaa813f9fa71112a","btp-cockpit-entitlements":"ecdd953a94ee4aea388df341bfd3d8b59143dd7fa822a4ed17ca11a0a85f8433","btp-cockpit-instances":"06477fdc8906cae9310d8174ca330406a66be946f0f0df33dd26f542cfea4c66","btp-cockpit-setup":"f40328d8a40d6e3f522eba9c8b5671eb5436f68dcf85446c689dceaafeea40a4","btp-content-agent-transport-mobile-apps":"d9fe802c268259c4d2ff73be1b3d89f988f7425bf4f56e257a477c6e71672bf0","btp-custom-domain-manager-getting-started":"5d74d970e199426da33a093a7f4d0310a229e5719bffc09ab16dafd8510ef2c8","btp-deploy-cap-app-with-ias-and-ams":"b5f7706e6ce10e37b71e9a91b3e5fe82989f8691b496c22924e0b91075d85130","btp-ea-onboard-01-intro":"7477eb1a6a13a8280e94d16d9487d6c7baa35e16f240e7952a7bc563c9afc699","btp-ea-onboard-02-ga":"bf94633d535afb56ff4eacc71e3d073fe1196ff07d9fba20cb4b07a56b03eb0d","btp-ea-onboard-03-subb":"4d84b789619043f458e7b73a46555e3a6c89d0796488c9e3a6ef1d8012561fec","btp-ea-onboard-04-subm":"b3ae931ed539fc34b23c88cb0efd4f81b78dd00468165d76f1eb7bccdf442d99","btp-ea-onboard-05-abapb":"07354741b1199a71397040ec966f1b0960e020da94251231e0acb68c45621a47","btp-ea-onboard-06-abapm":"60652d213df90d41f2fa61a3f2a984f91f72b262f3df92956f9867030374fe81","btp-ea-onboard-07-cli":"b31fe23bd859ee359682f8f804b9be9a7995923e5e52e46a8ccf88335895eceb","btp-free-tier-account":"32456e9177f7e4bbd57d834918379c62dd1c0abb780e7e8c3dcee96708e7dfac","btp-hana-tenantdb-xsapp-create":"515d35c360be3bb2631cb5b7842d2c8943d00751b3e67ab65786b2e23003117b","btp-hana-xs-app-create":"4bd85ded1718c35c16282b253a2e7b20a1cd0db89566f65aee907619c22aeefc","btp-hyperscaler-extension":"1979b9c7edc1a03782982dd826681344149a40452d751fafa6bd33efbd9a4b83","btp-integration-suite-creating_data_type-message_type":"c44ac90723e9f4690a3f39877ad5944c8af246e0eabdb53f0c42ee98c17a7b75","btp-integration-suite-design-guidelines":"ee933bec596eadd5bf464caf6985cd5546ce96c1fb4bba4b5ac085c2c73fbbac","btp-integration-suite-direct-process":"84c50eab9e650865d01d83e70ca7714a429dc074b009a9ffd615c3ee2973dcfc","btp-integration-suite-editing_data_type-message_type":"36fb5860804ea58e0ff732660267814162f482130b6c04351975d5c3353fea60","btp-integration-suite-execute-batch-payload":"8baffbf9ad130b4d85c3e19f3a97d75a30606bba5645eb5fd6236a30be5c1a08","btp-integration-suite-integral-api-management":"cf4a5206c37bdb64542b3953e6c17946fcbd1adc8851ba0903d1eacc9af0cf33","btp-integration-suite-integral-appgyver":"6c8efb9ff7cc7d30513d6c0d4b4bc1b7b236f84226d822982421fdbbb5ec9b8f","btp-integration-suite-integral-cpi-tasks":"5381d3e41606b01d77ec943f17871d43f2f013efe349c3ff9ce6bc2f456efe0d","btp-integration-suite-integral-cpi-urlencoded":"54d3c42012f04c8bf3c167925b17b14bc518591f073af7d83211da036c92e55d","btp-integration-suite-integral-sales-core":"19b35e5c33873cb469a855285b0f49f45c5a287654266fe8db333ffc94d59766","btp-integration-suite-nonsapconnectivity-integration":"c11871ccbaae12bb5e28d1543c41aadab69bd54bf0885daa90d08fb23cdd972e","btp-integration-suite-nonsapconnectivity-openconnectors":"8e13a489fd28ae2fa69c9496d14a9b60f1cb0e490b35ae496ad3766d06cbd30b","btp-integration-suite-nonsapconnectivity-settingup-suite":"654856e1860bb80d724039586f2028286ad5484d160cf10ff90068d311abae86","btp-integration-suite-nonsapconnectivity-settingup-thirdparty":"2139f056e18b15c22dede00c1b1f7e1ebc970c4ed4f67ae735fc81b56e3170c4","btp-integration-suite-nonsapconnectivity-test":"2de680306146c5d81710416f1df4f5f4f97f4257ea3504d79f20370651245aa6","btp-integration-suite-nonsapconnectivity-usecase":"32a7b4cc8ef0c641a64d582afbf3d184ff203bea4cc8bcf51a5f6880cf5d6f3d","btp-integration-suite-oauth-integration-flow":"fd65018879243f20b92c41073362e9cc7f28306ecec9e83cb242b96819943eaf","btp-kyma-extension":"8d2ee11efc508cd84daebc5683d0e90bbd4b7ae8d76b45eebec3071878d92d4c","btp-sdm-gwi-create-destination":"9e9f6aa81cbbc9673b90120750e900308d9cca11022c262b170929f6e383ee00","btp-sdm-gwi-create-serviceinstance":"4cb0e49f61d1c0398a55097aad7e1a1d09d1af4637420ae2a0bdfd809e58293f","btp-sdm-gwi-crossdomain-mapping":"abf4d8d1144571c99d0e6d47b90476f7d37560d53e7f7d4505474f8c76cd5b4b","btp-sdm-gwi-hana-op":"5f8c0620284dc3099625d221922157fee3328d655ec67eca9c66551cd3e5fffb","btp-sdm-gwi-odata-publish-servicegroup":"8574ac1af3fd13985bd04aabb968275b1b73bcc778c198b47681fdfcf29e9e6e","btp-sdm-gwi-onboarding-repo":"eac5cb8d198d05ef432dfca63e632ca07df911f8d3c1f4ab865818a0e657cbb4","btp-sdm-gwi-onbrepo-jwt-token":"f1b454eda736cd3104e76774fd2c2fb0ca842ca70c42571cb6f54ffeab3b2a5a","btp-sdm-gwi-s4hana-export-testing":"895165ee409240a4425a08941a3128b53736c42b6db1b66c6b1530417d4b9969","btp-sdm-gwi-s4hana-maintain-businessroles":"f6744890c3cc0586ace6f76b39e785ff0beeeeada4d72b89d73b4a8ebd3a0935","btp-sdm-gwi-s4hana-protection-allowlist":"1fa688aeb9554862e090e91a52c3ab03e10b9bd7f7cfae43641ccc13e6a867e2","btp-sdm-gwi-s4hanacloud-create-com":"b5680ea3b7273117bad56e72dfb0f4b9fcc60a4390b4a0bf5e104e278f5e9efa","btp-sdm-gwi-s4hanacloud-export":"a7183e500105f42b043f7bd053f7e427e0ce51690e3d7f66ace48fbaf9a0949e","btp-sdm-gwi-user-management":"3aa527a908d722b93927d3515bc8639e7671b425e0ee6cbffeb783c946d7eddd","btp-sdm-mobile-onboarding":"7975a849216fe69e8361e4180fff0860b1e835218582931e7d60acbee9dbb52c","btp-terraform-get-started":"fadea3fb1e33232937929423a8747d5e26971668764384ed8fa75d832dc50bd2","btp-transport-management-cpi-01-use-case":"1531b67cdbcf0355730e41b6feaaf1fc255a4d84916316d815474b8ab4cc77f4","btp-transport-management-cpi-02-set-up-source-account":"45c3285443c5a54f6c44a2bc4d931902e7abaffc29ff0941380d2572cd778de4","btp-transport-management-cpi-03-set-up-target-account":"aedb0d9077e264baeaaa928c99074be12d68838eb8c2e51d8580ea1059b9b796","btp-transport-management-cpi-04-connect-source-and-target":"87017b376d75e374e005a797513ad441eb679fb60fbc78200b2e9b5cf221c3e3","btp-transport-management-cpi-05-create-ctms-destination":"391a05867d8943be17e6977426375a0706a7a1e9aa75a0dd60adc8e3876e1f17","btp-transport-management-cpi-06-enable-the-transport":"88f6c1a1a0c6a04e766dbca4325bf13ecbcc9456b6c75e533ba24bdec7cb2571","btp-transport-management-cpi-07-test-transport":"ce89d334454690dad8a2edccdde83c61d3d099e3b425fcd603d86dbfc6ef6e3e","btp-transport-management-cpi-08-cas-ui":"d33e2e09850ddee5d23563bbbe1e55253e8d3c217f50619eaf56e36d0b9e08e5","btp-transport-management-getting-started":"9f40caa8f776e6c156f1e786532d24f94380e1886ec63f5e79d489faf92bc6ef","build-apps-cap-app":"15f81617d54976e4d0c98920371f9eb645aa57a66b29a9fde40e6e071cbece53","build-apps-cap-expose":"663e467359cf96432ff49d8fcadeeab1716f47fdc15940114c57a1a63a8f7609","build-apps-cap-service":"fd5e59e8d20b9f5bdf055c1896bd3a079c04dac09f92970b7bdfcb56b9b21991","build-apps-offline-storage":"8ea7543c865b8e971f024a8b7caa3eca5a710f50b768125832c1d871b0a5a4f7","build-apps-s4hana-crud":"6d40535bdc438885d8e27ad59335a940412c907567b2a19f25ec4d61dc9499d1","build-apps-socialmedia-1-custom-component":"1c55a308796b2852536eb6159fc516e49e15bec18eb586d3ab724fd756db0eb8","build-apps-socialmedia-2-backend":"528d2466dd0f82af6e322ba560e255e67146d9b49e14ea22b4e5c05a0745ccf0","build-apps-socialmedia-3-product-list":"d06cd02dca4625446ef18046ddfbdec85be028e60042012509e27742c9f38ca6","build-apps-socialmedia-4-details-page":"74fc9277f4b1f255ec69b874884a12f0c68d23083d1b4140d9f1894b4622352d","build-apps-trial":"9812eb807db4fa02ddc0051163f0e43ae6a1f2bb185f006f3a724b16582161fb","build-apps-trial-booster":"b2a454cba07710e62016c18c97210f27390d312d0dc9e2928018cf1bd0d7947d","build-apps-workflow-check-status":"88cc62e553e30a37fbba260342a66b9194374711e3ac3910a9c0071f03692a2d","build-apps-workflow-es5":"e468a9c172886f965eaf9c5dcec78abb0097b4cb51a36781c80e5748ae4ab1fa","build-apps-workflow-trigger":"c5f83d48d1c2580e99924f4ceb41843453c8c8ce8cff8492a6c67c6a2c773f6e","build-cap-app":"8c1c65540ab3c319588f7b874dce09f28b4e01ae2675c72d55ed4d30b5819d6b","build-code-complex":"12247b3a7998e0932706919a8cce75d39b544bc1c2bd98b64106e695f1bf97dd","build-code-new-project":"180461173fecba66ab97dceea96649affc32b9a3594420e4a8412114c2f33105","build-code-setup":"613ed6de2e2b764af63daf3ae45fe0256a56cfe1690512544fbe7c0519e57afd","build-code-simple-git":"5e0ecd7ca5c0047c7a356c5a3c41463202f50af1404a27080d14da32b1d7e000","build-digital-coe":"e06b9ec258b262bd9942a98974e4e9c13eba40074f17f54d66166f235ed963eb","build-use-case-buddy":"c12bfc16eaa3183151593a9734e4253b21d6c4ddee75946576802a4c981eb5d5","build-use-case-buddy-connect":"901c1dad5e825e0d99de9fc2fdd5bf1141de48a78b0df4587b415fce55339990","build-use-case-buddy-customize":"e560fafe6af2e2bbbc99a1d3fb2342c2ebb76b5b0acf61bb4880df3bbbde64e0","cai-bot-getting-started":"ba7f615ace1d1d2f79f9b2e5249ee310ae30ac371759a6265622b23bf7cb22f6","cai-bot-shipping-1-track-bot":"5ee780b0ca3b1efac8fd7f61a984cc59a1ed801b7256697dc170cd1cadaa7c37","cai-bot-shipping-2-api":"7dab76e3f9140a4232e2b2c63fcaf31e5c81d883051d9de66c4971c547df3a08","cai-bot-shipping-3-price-parcel":"43e6282927dc9fab3b2bd88b63a68889f2e7d2b6a0c42fd6fbc7eae1e3ead6e8","cai-facebook-messenger-bot-create":"aa888a95a0eb5088bd348f98031862d2d110eaa164a1ceeba748ffd2891973da","cap-extend-sfsf-add-launchpad":"43dafcdd61617d6ead59e22cd722ca9faa39b3900b8ec5963e565c8657a944d9","cap-extend-sfsf-add-logic":"c236c59ffcf2855502731d0db3e934db69d6e6e5528325a9cf552477f43fd316","cap-extend-sfsf-add-security":"11466aceb3358766f1e4a4466d289fb3d30a596e850549b49d744aa5dfa0fac8","cap-extend-sfsf-create-service":"c63f0aa8f4117f3607d9a1ad7f988f39ace3ef03842b5ff89f9cfba0109cd837","cap-extend-sfsf-data-model":"f72b9ab44e3a38e0ca8a4bb92101c863b91a5f41efc96286bf99e3dc6ee30a1e","cap-extend-sfsf-deploy-cf":"e92aca65df234667198eeef2af0c62e976fb5d51d0b491bc3e0305ae530c35b8","cap-extend-sfsf-deploy-hc":"4c9ab5a92e3a61f8557d958875e9f25787c75e959951c5aec84766e283085fdc","cap-extend-sfsf-fiori-elements":"2c53487a05cae11efe6ba8abd28215d88c6aee9d525d8c273f6f5fccac37ba1f","cap-extend-sfsf-import-services":"d8efbbb475c5927dbde1cd8633155272d8f6e84153f2b9caace78a194761e69d","cap-extend-sfsf-intro":"5cef7f950037c5dd55c362c8fecc29744f8167ec79ec69193ceae4cbae55627f","cap-extend-sfsf-jumpstart":"6e113f436497b813d3be3bc0843381cc821eee08c168af5a18a1d88b3810e072","cap-extend-sfsf-ui-annotations":"d1eb8e3f912ee8f44e33b35e7fe935862ea1a296d7078fc0f76fd0356272b7c2","cap-operator-01-prepare":"1bbbd4c87d1f2865d4d7c29adea33695f0b49c966a081d22c691543d0ae8f540","cap-operator-02-tools":"a723fd0e651ac980cd995187cda6fd148b125a572f605987b7c60c2e8da49df3","cap-operator-03-add-cap-operator":"6d6aeaed2b47b17a033873831cfb466f2f1b730607958e71af5f4e7d2acb6d1f","cap-operator-04-prepare-app":"b3b4fd0cc2d5d885acf5068e981d7b06580551bdd24031da6b8d8cc3aa72559f","cap-operator-05-deploy-app":"9f8564d456c69e14f98cce66e39b3747894f3e67e79efe747e251da656df2c2f","cap-operator-06-subscribe":"041b23ef2b5e5ac385fc965c91499f12a5f2bbceebf8cfcbd62b3ed105f66b0c","cap-service-deploy":"f40b8acf832d5af599500ec92d92683145c4ce47a6e4ba415a98ce6b93a90ddd","cap-simple-nodejs-service":"42b2a110d3ca96d186a34b054f1a8f6cd5d0e4d7406e1e933883b0420a186265","cap-soap-service":"21330d50d6f3a0b6041ae4b552a72857598490540ee47b849dc7c711fe07b6f0","ci-jdbc-lookup":"7b67ff12e40162d506fa91bc651f9559e1ed5a4b639b89bff211253e4bc7dfa9","ci-rfclookup":"dd2f189ec0b2bb164a1b1696ba59a82698dcc21cde231f71088d8468ffc46f22","ci-sftp-file-polling":"25ef958e44346a56cdfb36a894c992e038c89c4be9bc6f3982b0c8c9984256c2","cicd-corporate-git":"a84d734fbd2a929ddee9ebaf54c4bee3b34edc20d38cba2db4aa0203cd1e1243","cicd-start-cap":"acd8d7bee02000bb641f12722175f3cb5739d7fc8eb27c616f1ad6e7330fd705","cicd-start-fiori":"a3f1319d1d2622418cf8e2b5912e199ea25cff61a9b43885fb008bdb62a1bab4","cicd-wdi5-cap":"e8d1ed4660d98a5f1df570977e3582aea8644102503fcfb2e377315754d1213a","cloudsdk-extensibility-type-safe-expand":"acbc8593c685dd60c1849842e6aefe630dcbfe675f48c92859815d171fa48279","cloudsdk-integrate-cap":"b9d70db7126958124226d67ab2c7961244015f3c6ab80dd772cb3cc6fc2e3bdd","cloudsdk-virtual-data-model-odata":"f78e42567ae369184394d4d97fbbb16fe1878fe48cb8709c7fe5b9774a16d569","codejam-0-prerequisites":"28ddb36f8345756df570299898882f2c707ef418b529f784ac946f46ba54b13e","codejam-01-homepage":"1b51c1e4d961d950224cd9b2db460fe0fda5426951350a239e418c9626e965c8","codejam-02-product-detail-page":"7117142264a3a9cf0a64ebbe0dbbe5e8dc6afec69ce34431eba59f8e9e7c26a5","codejam-03-cart-page":"871eee37d220c5bb550938191e9bfbf3c9324886a1db9edb4eee38f890be24be","codejam-04-spa-empty-process":"f077669dd7a6f024e251039981db6de425f885ec87a6792ebbaa4ba967a58142","codejam-05-spa-approval-flow":"79c2b58f0f375d462f7fae9b7ddbdde75b39eb87dbe3d96134630d308fe15c90","codejam-06-connect-app-process":"4f85ca5672dded1aaebbbe89ccedc844b0ef41cb83b64f28ae4b58987c590643","codejam-07-build-deploy-app":"81214904dfd49ae4b95252ccc881c2ecc31c7ab271b6512e41431585f2566b84","codejam-08-work-zone-app":"20ab103456fdbfcffbe7d285d2f7bb0ef00a8af89d0ca62ff341a5e6ee8ca56d","codejam-09-action-get":"3338c19cc3b7683110fc4fdc3c5c0307ccc3e699fd7fb52b17d3460f3f68e3a2","codejam-10-action-post":"0aafdb8dcc57592216c91ffef0d7d3b89b32badec43c36b67698d57ad0008f6d","codejam-11-spa-rework":"c94c1470bc7198c252818c676ebd85d790a2989b3c3d017a10ffe6b07690efab","codejam-12-scan-barcode":"5b7bb710af1bcc0e2ee2051c9da8d0a73a837fa6c5d8109e351cf60b5d48ae7f","codejam-13-filtering":"1c3884b99419f8468f7ecd5bf131dae4068006596f7f78e2ef7cd1fdf2b048f4","codejam-14-spinner":"e41e5b6049bafbf9e46a2eff4d594c791ca9cdfbf95e3d833b607f98b3c2f74f","codejam-15-conditional-formatting":"b1c04135ee44bfca9399f3c045d6311b488f1dde420b8552dce774a687d53d06","codejam-events-process-0-prerequisites":"37237c4fd9c7fb8bb888f533f4d1433ea08db17740038956faf946ab600b4ae9","codejam-events-process-1-bah":"71300f1d08dee0f0d08db08bcca446816fcb951dbf16fb28f33e737aa4f221e7","codejam-events-process-10":"307f14ad5cd035428a21627a3377c34790b9b143a7e349e18d891eceae6262f7","codejam-events-process-11":"b47e1efb8b434cb236a42fc7a6b1b18c4ca51537370a7ca6bd809811b5ff7717","codejam-events-process-2-eda":"4d76b32c1d4bf29880b2dc5d5ad5d78d33a4a2eee88735400b67918e45f6f2d6","codejam-events-process-3-aem":"938fa3c07c4fea1fc8403d7b67363386557bdff555842a38bf02bedbdcdbfefe","codejam-events-process-4-publish-and-subscribe-events":"bdb224c29c71d1753ff30865f6f2381f382f36043aa7547b95b789f841d11f19","codejam-events-process-5-send-events-sbpa":"de6707ccc26c717efa06c7f42516ce002b9a9058bafdf7f51e4d3a981592c06a","codejam-events-process-6":"0ce1c10014fb2fccf9c994e2904fac21de5165000c14c25a835e3e0189b14740","codejam-events-process-7":"033b5a5c2bb137f2137752fe4c4cb810a9df95fb845e746b39cceabdf262591b","codejam-events-process-8":"cae55cfe95c4e16c363e327ec9ffdbf90a11d2175f0ceb20bfc7054e0ae7608b","codejam-events-process-9":"d62ed9d2b7981674c2f530659946582855a1e7efd115f4ea83ec8281da12005b","codejam-events-process-introduction":"22a8f6343c3ed40a95e9bca412a11230c92d7d71126568066a698ee7639f73bd","community-2024":"dbfce7f15f5ae28fb6fc67b306835d99acc51953b18da9b94d2d055e117ff700","community-tour":"9e730e84a9f0567697d7fe533f75ade9af91c57268aa59fd790280f7535b9079","concur-calling-apis":"a552b5866a1674e58f6a81ba3384792af62aca83162af2d9923f2d2cc29b6679","concur-get-refresh-token":"2b3d19d959985951f6ba19a61b5b49c01696b9b54d0ae6d5a3edc606dce7309c","concur-refresh-token-management":"629232648e190d1ae06572fcafa77842e9fc82e6fda9198708aff86901d1e1df","conncet-private-link-to-gcp-service-connect-kyma":"99e9f16699611af0eae47a9823e6a1059594c25a353e0d13dc6d08bb2a173865","conversational-ai-api-oauth":"6c0d040d8094c62b51abb06b5e8053f39111176f1070e16208c9687485368a98","conversational-ai-api-oauth-postman":"2f82c58e1057310e2fa79b6bcab6294c831878ee9341b24d371f9b58fb06ab48","conversational-ai-client-apis":"41864def9853fe160c5e5b653d6fc8b4a1974474e28d82fcf258385557670675","conversational-ai-debugging":"f0a6e0f0d092a9eb185b2170f84416ee87c207fa401676e4c36e762287715bae","conversational-ai-deploy-slack":"4dcb38b3c4074e98b5eec5573cfd40c61673219aaa0264f19cf58ef1a5ab45a1","conversational-ai-deploy-teams":"27d5d738b0ef49806c876a1f0c5ce9279ac8beb7902821b959bd6b124dae5fc1","conversational-ai-deploy-web":"f5b03cc2bf7ddf5265c313aa9cb3ef504db3d4a75f7c6aed978887f141507935","conversational-ai-faq-chatbot-beginner":"120611c58f3c21cdd8c4513d8eaa80d4c5c4db2cdcda241b7734a8615803b5a7","conversational-ai-monitoring":"1e14f4d456a22acb1daf3a6dafc1e55ae8004a45eb6c779c809a0011f2c99b2f","conversational-ai-scripting-intro":"c4171e85b54f3fadeb860221d9400a14bd350d470937d360f542d4ef8b857968","conversational-ai-speech-2-text-recorder":"41ba13550e1df68f4e32c1a35771939171033b032cf80923a28f2c915792d9b3","conversational-ai-speech-2-text-simple":"184e9ce00c4330517f38dbae06f0df69057e6dac719516b7881517fd849335e6","conversational-ai-versions":"d0c288ec4c4bbec9ea893560bddd309837d01f78913d8cf8573671993d88d7ff","conversational-ai-webhook-api-call":"de0cfb244118b0fb0b82c991c2d0f7ea736bea2978ba7e7885dbe938792b3444","conversational-ai-webhook-script-python":"e28208eacfbfc2552a45813f312b449db55588d2856c570f1be96dd0bca2f32a","cp-aibus-ber-booster-free-key":"cc0d215dd67c6ee47a0388df7be375e683235910a668cec032a1126f1367dee3","cp-aibus-ber-booster-key":"634e1468fd1c050e97f55616c7d84da26a8314f5323a58bc20a27c82fd671d30","cp-aibus-ber-custom-data":"c676022d424c663b6a11db44a2fa9f002aef446a4eeb551afca8669a340bc3ee","cp-aibus-ber-custom-deploy":"aa376e89f756610ff460dc9fed257487e11db8c091f9fafdfd45d60224ef04ac","cp-aibus-ber-free-service-instance":"25c3f4d76d6c016f352bb1a76f9debc3de80d9554d24719242d5164197bb1fa3","cp-aibus-ber-python-sdk-setup":"0e29f11928b1246d042a6ba205d390dbc1e270b26159f1bc46d66f1abfd2fe82","cp-aibus-ber-python-sdk-usage":"f058eb0042c19852d348e97565cef8cf7a1e9092672c2aeb56c6d946f5f33e7f","cp-aibus-ber-service-instance":"96d548e9181761b459570445027378599638afd89ce3b74f4ad6a3c8d65f2803","cp-aibus-ber-swagger-ui":"8942fd9d1de5b96b49ed9f519f78eb9878c1f7f6ca0a56c074abcf8b84f8ee63","cp-aibus-ber-web-oauth-token":"d76c3d3a70d4a74afd023aab61f125a8b51c95c67cd9e2b00e9313bc9447f201","cp-aibus-dar-booster-free-key":"ace59764efbaa82574c594bf927c7ce681c53ea6ebd23421baabd7b2d7bd4da8","cp-aibus-dar-booster-free-postman":"fe790f231e92f31bbdc24bc0bfd177edd198f1a9f635956940a4c54cfa861700","cp-aibus-dar-booster-key":"9c06715db160028329615f2c6c615cbb1598491c5ca83409199ff6a32cf5b67b","cp-aibus-dar-booster-postman":"d298ab5be431f3c641c0294f58f33830caae60fe2044d0a2ed008e54b2fd5e61","cp-aibus-dar-classify-delete":"2e8ef37f38f6dc79ddbdf3b4c781008fc9f55eab66783584329dc4c3b4eb3bcf","cp-aibus-dar-custom-dataset":"02dac624e681476a2016cc5f690229329d43d657c0e6f01df2a2966c896ed26f","cp-aibus-dar-free-service-instance":"810e7e8e4691ba3fc76d96404d35be60646a529a52b93c3d8b7cc79c7c644df2","cp-aibus-dar-model":"c958b768e72c8ea5073f7b704d53a0822a0cdacf0395b78fa94bffeb117b0554","cp-aibus-dar-sdk-aiapi-usage":"c3693744310d08e656dd8958643c54b9458db37c681fbb7ed8ea0ead659cc114","cp-aibus-dar-sdk-setup":"d3502ec8980d44ae9a67aba40ab5a30f089903508d072885fc05a13a6a016075","cp-aibus-dar-service-instance":"fdd4d91d43e2d54e2e674a5fd152cc5c168e19d7c389b478f0b047e1fc727759","cp-aibus-dar-setup-postman":"3e1f1d20f756f5614e197a1c87ec0c0b8dc40b1e569b3061ab8705eaa228379d","cp-aibus-dar-swagger-ior-model":"907652a28bf57294dcc0238a00a239d4a8ae5cc6d33eb2c1424dde8e6026886b","cp-aibus-dar-swagger-ior-predict":"a7604c6ec60fa5f5a5e9cd625fcd6f8960eb34269aec37dfbfbc7aa0c71f9718","cp-aibus-dar-swagger-ior-upload":"aed08d5f1c3929fdf3b4dd1b99a6e34d443602910fe2e99c2d3e556fc25e09a7","cp-aibus-dar-swagger-regression-model":"bae7b3b7333c91a486c25ee81c594723b2cadef35c92556acf8cd0b82e786c6a","cp-aibus-dar-swagger-regression-predict":"784d9d356d6b8c9455679e8aba860b588538b26d3973f01f57ab3cfe639a2bd1","cp-aibus-dar-swagger-regression-upload":"24f1d9baa9c34eb347d74460fccb68f58b8a2f5407fa81d77854b3357495f432","cp-aibus-dar-swagger-soc-model":"1feaaf028e3ac82929f9228f6c5ca8da23bd72c2a27d819aa13f255fedb4cbaf","cp-aibus-dar-swagger-soc-predict":"8925ba0512251a687785cf3b0277699788be5b268fb601d9b626f7074b079731","cp-aibus-dar-swagger-soc-upload":"72c62cfa3a123bceed3632a2814c752e7d5664c6c867909b2d7e692318f01021","cp-aibus-dar-upload-data":"c84c56f634eee0dfd69f18f7c2d63af8a8ef6c8f03b3ad69fa348d01dfb109d8","cp-aibus-dar-web-oauth-token":"c651cdf56ffbc424bf11a886fefe894b5c394af9d0bfda594f553ccc4d757df6","cp-aibus-dox-activate-instant-learning":"92fb25ec79409493f26056c451c44c294eb93e43edb9df0076bff503c4608e74","cp-aibus-dox-booster-app":"2ade417393b749c48544ef7e519424e1abbaf5586e4402ff693fd5fbed28e06f","cp-aibus-dox-booster-key":"ddd25e7d1e89f69db5b104ce3df5489de4d089cb4f659f4d17b6feb2f590d377","cp-aibus-dox-data-api-bus":"1ee84e7f01dfa5ba36f223b352a382c7bd2a7cb186feb96c01045fb5a71bb0e0","cp-aibus-dox-data-api-emp":"c10f06aea2f41ae20e0885c7b4a436eccfe46e2b2b91a8262c5030ada5c1c248","cp-aibus-dox-free-booster-app":"d1a3f3f1da1cff9e25a9484af875130efe41d6bb2279e6b9d9496ecb7c93b59a","cp-aibus-dox-free-booster-key":"2aaaae9f943b4e3c63c949b04e1c2191fb94e68f0a00f33ec0ebfe5e974fd066","cp-aibus-dox-free-service-instance":"ecfa7deb6eae22d34f7147806c0899768cf2b15d5de67462a3e6f1f1d3b244ad","cp-aibus-dox-free-ui-sub":"d1adb564c2bc091d8f4e4a279456e77996ffdc5fd167d09497cb5417b1474d98","cp-aibus-dox-service-instance":"b3a88123dff5c90e4c31f9b5a3271ee8f21761542302779225e740a5cd30122e","cp-aibus-dox-swagger-ui":"930b9ab6f938915e3fddb54ed685ffe9cd6fb8251109d753ee6c0339de7414e1","cp-aibus-dox-ui":"2a14d5e6d792baa4eef332ab2b92463a472129339080bb571210c2efed68d902","cp-aibus-dox-ui-gen-ai":"ced99d8bf7ee251b95eb9ca830026e2ce4e91003ddb3ea9d698c45301d0ff6bf","cp-aibus-dox-ui-gen-ai-std":"42e282bb6259b51422826ff2ab71b2340f32dfb68a241672057b421cccac18e6","cp-aibus-dox-ui-schema":"1a2e4698739d4bada99768ebe8d93b3c4128612e684b0664e299740c11c69396","cp-aibus-dox-ui-schema-custom":"5630e6d7a0005b6b83bb06770d4dceef8b9e0e2ef71aeba786b3bb1b18a3c5f6","cp-aibus-dox-ui-sub":"c6680a499c742c04d89bb3a0e9f67faf64ec5b3726f2bf24e240572999cc6711","cp-aibus-dox-ui-template":"0b160a49ebfef12dfd59f857c9b3977b17c67f70771ce5fd497d3d116c46da59","cp-aibus-dox-ui-template-custom":"add95f356c87e67b58cc55a2ff4e853fa3d3c99bc1a82a43b569dd62ddc85f28","cp-aibus-dox-web-oauth-token":"80c04ac20311eb42f7f7d183e272d655088baa949c885ae47866fe26ba359078","cp-aibus-pr-booster-free-key":"f0229c9ac971939ac12d1ca1695fc524a1bea773588582816f7bbdccd2c8dcae","cp-aibus-pr-free-service-instance":"01044996b5fe767e36a1767f9d01095b05d04be2c58c8de3fe0ab58b0d4818ae","cp-aibus-pr-swagger-ui":"963b3907b61f12ca36074509a48cb7b9f7326897562751eb9286a42009adddb3","cp-aibus-pr-swagger-ui-custom":"384258c9eb96594b01df986a8245aedbcacc1db45514b138d3ad86e6f1008fcf","cp-aibus-pr-web-oauth-token":"ee623f23de81ff2b71a10edd5a292659c703156716e06f6226e005e322dc4014","cp-aibus-sti-booster-free-key":"ec3388de4da28054514be3e8b1c129fc1b87fe30bc39e1b732bdf940358c4a6f","cp-aibus-sti-booster-free-postman":"2aa7ea47aefa9d27e879d7a34dd0ba9ca6e7975bbbbdd1a45149f05584d326c9","cp-aibus-sti-free-service-instance":"c44dad446a0cd8062ca01a3a5247851bc28b8ea9b58cc26c1e664dae5590d2bc","cp-aibus-sti-jupyter-classification":"0c2c0979f5eaa5723147c93a2b2792433f28a7088ad7f9f9ffec73ab899958d1","cp-aibus-sti-jupyter-clustering":"efe4d30d66ceec748ddb465b0a12f53bbf6a7504db28a9d8abb2b68627d21c63","cp-aibus-sti-jupyter-recommendation":"434d4da8f78b52ac9905bd2cdc89e141c88bdb7c563b690b4ea55c2f6318971c","cp-aibus-sti-jupyter-setup":"ce8a3a11801d6b398437929b08ed63775ea9ac9a45e696c335e1b689f1d5df0b","cp-aibus-sti-postman-classification":"ad70f8ca4b1ffdbf90ec7d1cb23edbc15c718a1be3e87dee3d5d89c5c4d8dcd8","cp-aibus-sti-postman-rec":"f3f9a7e1323979a74521fedde9637515604a5575f5950544036e2a4c4c2327ad","cp-aibus-sti-setup-postman":"0bac793c7714dd43ac0043257ee48daa8a9c2e6c24020475c863d4a2aac43c18","cp-apm-nodejs-create-service":"1875361235d524ad8870bd0b16390be5a6accbf8508d792e3952bba9523ef739","cp-cap-java-app-studio":"15ddb0dba3cf380986210db61dd41cb53ee1c0a16d5bd0e24ed60f07677bae5a","cp-cap-java-custom-handler":"286c9934d6ec2bdc85d7b84193e94a2ea57452759d48d9118393d4f686b98762","cp-cap-java-custom-logic":"d5b17eedc6e714e9db0d6418bcbde68334a43146414bd09d081791dd569099f6","cp-cap-java-deploy-cf":"8ac9d0544448a7041bc0237186142b0e1c26aa8a32e9dea187d7a382507a9433","cp-cap-java-hana-db":"fcb27b6403a9c621824d5acb2c61d877256484b8749bbe3a1ef652c17b336944","cp-cap-java-reusable-service":"be00f7d4d36d619cb8129d213233bf0673bbbfaaa6f551b332f24b23a9a58212","cp-cap-java-security-cf":"1a8707ebf8d4480bcf34a94d86b0fa81694666a0d1ddecb505981707fb6e1d19","cp-cap-java-security-local":"8169cb3786e925b9580aeac4aabdd2831459c0045b4940791ffc2b06c1431093","cp-cap-java-service-reuse":"8ceff1e7a5399240f68c742b1f8024a3aadf6ab184079ce13aa3005cbe5838e1","cp-cf-application-health-check":"a311edd62e642d1c09c6659463f9f2453b3540f08e8e91612cd20726d12d4d1d","cp-cf-application-logs-overview":"84057eeea5e959127a5f2702027dc2adc88e844ed3862b08a0208e962a2d44e5","cp-cf-application-readiness-check":"f4046f8004600e61e07d434bb7ebd561c988d06de36d39e5e13ef8cdb70737e7","cp-cf-application-service-binding":"68574ec76fce5a465685ce06f0464bd9851d2972098c06b118f583863b7ac882","cp-cf-businessrules04-create-project":"b17ed39858e1834640e5e651a5061cf57d64b64a8966963a8fa2b90e4a01d14d","cp-cf-businessrules05-dataobjects":"d906069a02d08da30d66ebe0aac28dc5ae454cbf493c34f1be26bf05c00e2909","cp-cf-businessrules06-dt-textrule":"3404decbb32e209a74860c33cb4758848c586c2a7dd999674b6a6e95ec04962b","cp-cf-businessrules07-ruleservice-ruleset":"cf4134080b3b4c98f0a3078a5d6a085a2cedaf9969871a01e52beed101f15614","cp-cf-businessrules08-deploy-ruleservice":"fbdd21f3b17267aa0c7aa28c5f24f5ea92c78084502d91932cd50d8eab2a404f","cp-cf-businessrules09-test-apis":"5e16bd931590919dfc85d20edd7cc632e9f7f42cbb564f469904655f6e63f05a","cp-cf-create-destination":"aa0b75410ebe204bd28b2595efb97d96aed4f0657a4662014b034b96543b36ea","cp-cf-custom-metrics":"eb44e9209891ccfc702bf9d445f085431d79368b843d557cbce896d330229e7f","cp-cf-dev-01-prepare-app":"80c3294aa664666199eca07f68cb39a58dfd5d4c54f756e53c65149dd0deeccd","cp-cf-dev-02-deploy-app":"2ee1367e9af8a324315ad3a56914c2c88f2aa7ed1dbe4c998767c6816f33158e","cp-cf-dev-03-service-instance":"072638b28b000e04b02aa70ee5c1549128f1d92e384cfe6cc1b0180d077c7ee8","cp-cf-download-cli":"d7b24c018d0eef598cc1b164b669e2447fb4dce52750100dd40071470dda9b3e","cp-cf-events-overview":"d0aff2ba2094efb142c932c9b3b31d7bb829f210edf70e0e2cbf68970bc7cfd5","cp-cf-fioriapps-create":"e50d3835a2675f4e43ff803b591c98a1c245104a564c68360a0f4c3b87ad7bcb","cp-cf-forward-logs-metrics":"a3d57737dcb90e2259fb3523d37b021f4cbbd54776b9d3a3ebc5bc5e0fac2212","cp-cf-install-cliplugin-mta":"e04ab0ff0009b4430a772a6e4e50a104eba6ac7577a0e85e3df10ee77eba3b29","cp-cf-overview-application-metrics":"410a077fd2c4aac003eeafdc6ee29b2c5e5a64897973f64d407127661ee18707","cp-cf-processvisibility-config-leadtocash":"891a5186d84834c1e2ddab5093de63a33702b00e8b2f75358190d0103ec716ba","cp-cf-processvisibility-config-samplescenario":"2cda90296e59134d2e4a9a33726340d0aa81fcf67ede5e86f89acfd8124f2886","cp-cf-processvisibility-enhancebusinessscenario":"3dc9dbee4fa009d268e6ee7873f1c15e5ebee106355d133ffa2a75f7e9b130b4","cp-cf-processvisibility-model-accessworkspace":"47705086b1e5b85ea1591d9a76487c9e703932877e0cc5421887cc062de6124a","cp-cf-processvisibility-model-configscenario":"ff9dcdf9947c6962c25c163b77aa35c336645535473f58a65a88cb44c5d18aa0","cp-cf-processvisibility-model-manageevents":"733d23fa384ab0360808cba6352030879fe7b63720ed8741a7400a0e0726c50b","cp-cf-processvisibility-model-monitorscenario":"cc3237eddf723f47194c1f68b15b2a78ff42fa1c5cc052d3c864cdec757241aa","cp-cf-processvisibility-model-workflow":"d990be139461f190d9eb5a9b3aa072f3aa3a5d020be8a70399c7d01e6c604527","cp-cf-sapui5-local":"49176346034bc8c960711c00309f4545b963d29df7d8825af4a521b075deba79","cp-cf-sapui5-local-debug":"2d5f29cb992837adeee101be891195b4611908b758f48c3dba0a7a27c357682f","cp-cf-sapui5-local-setup":"d95f8047dbc948e70d781a52511172b3d67e77dec75461f34893aaefaa98f86c","cp-cf-security-xsuaa-create":"308209769fb4879c5141ae8872a8c1bfdfbd63537ada6032ec2b7bf28da86c22","cp-cf-security-xsuaa-multi-tenant":"d3e5c222247b04e6242e5745a724e0c07dee2c3a481b0a5dd0b6514648b31f87","cp-cf-understand-application-lifecycle":"15b94d65b9fb0f86497e530656fea35b6fb0b1ab7201bad81b7a98b95d305a8e","cp-cf-understand-docker-application-lifecycle":"bc0d9b57b78b3f36ec2a6000f0d3f9542a4ee03e70df0c3480679b8824f2811b","cp-cf-workflowmanagement-configuremd":"ccb904b443e8c8a78dfe76a479283e3d0961caad81b426af6b045bffc3de94f1","cp-cf-workflowmanagement-configurepv":"7d376470d63d8431ad9df6db7ae2290e8bbb84470a077d76e07aefc422cc19eb","cp-cf-workflowmanagement-discover":"d0eb7b34308dd536fea85514d9b31c97bf1bc76c922d4eb09569fd236778d77c","cp-cf-workflowmanagement-explorepvs":"a766c536a9e9e8aff760ec9f4222abb63c69c96d8b6ac04c89a2902cca0c4207","cp-cf-workflowmanagement-runcapex":"ad8b882f2b96e6c2f94cb5f70ae8169daf0fd24fa9542bb856e05d8767cab9a4","cp-cicd-systemtest-recorder":"f4650ef85b84644cd51de9de58efa803fa5d7f97419acd666df30fc12f2a9faa","cp-enterprisemessaging-instance-create":"c4c8f664970cd28f6729660b4d55df8b75e7c1999e0cde9d922ebeeaf3cdb1e8","cp-enterprisemessaging-javaclient-app":"711bc23e0144fb35e25c8997742a9abbc683ab79a1f325f97a013407f03b5ab6","cp-enterprisemessaging-learn-messaging-concepts":"5358bb6052c7a5309e74fca82fcf54c1429877e1b1b068b3f838357574e227de","cp-enterprisemessaging-nodejs-producing-app":"b9ba55a0acc1c28ae8a91cee138e0fb0e465f90ea87057ea211ce5b215467d76","cp-enterprisemessaging-nodejs-receiving-app":"6cf89f7c7dc775f04adf4acb45f3b81693cf5fd1619e0dad4e27e2db1d8dfba3","cp-enterprisemessaging-queue-queuesubscription":"fa3be00286c8b07b071a518e2e3b38380f8826cf2eaf7cfa6b5db23576169dc0","cp-enterprisemessaging-test-queue-sendreceive":"ebf4d75de59c1914410ef14e8b119be1cfeb4bb4d0fdb61f19bfb4f0ac673309","cp-explore-cloud-platform":"4f528a3e6317e096d38e03c1dad21d9529c75f69ce25143e4aab53bf239209ef","cp-hana-neo-saml-trust":"14a3c6c8973d8fc02be5dad6806d08c0ee180871f9f9aed595ecf2637a68b340","cp-ias-azure-ad":"77403f8ada775d244b3c12191fd44420d5d9aac3ce6fba5a708dd1439d52e861","cp-kyma-api-mssql-golang":"8e842488a5a2468a66c1cbbb582c5cad20894d5c19b189630e77ee4f4feee943","cp-kyma-api-postgres-golang":"08bd8f9f965759591e90be5617055342c968880697dcaafc606da58fdb6d7360","cp-kyma-create-function-cli":"166ca0bb4f497ae57db78dcc2bd1b0432c6c0070546078bb5a090a3ba6bb5633","cp-kyma-create-function-ui":"ee53157c29c22798e139f9ba17e4e4631601efaf39d3ac882db9d5caf6c62a87","cp-kyma-download-cli":"2a80ba973c7a03b2786bced0a2115f7ded5345e01626c7c89884f98ece3012b5","cp-kyma-enable-module":"8e0d9606135558538a31dc481697f604b933b1e6f111b21ed57353c3b7fca39a","cp-kyma-frontend-ui5-mssql":"e07e30f4795255faa8fd46d11de62d41fab664997743fcd445c8f8ee61f81c8a","cp-kyma-frontend-ui5-postgresql":"b2cae7778894f3aea74f0947ca4d8677b3653a0352997704f27bf728cdb97275","cp-kyma-gateway-api":"59f7d47e31a091e4aa57a98e18df352ebd683c9a867e7a0092f94d09bc353461","cp-kyma-getting-started":"df5ade3ca9707d0a2c99d62bab1debb98b7a94b49b24468455c11903ea1a2258","cp-kyma-microservice-trigger":"9726fd4c85391be5e6691c3405382bece7cfb7fc421ef6f260fafd7b7333794e","cp-kyma-mocks":"83386a8c1fe2619bec6091ac77f218810d6c760ff000998064dc013abaf86791","cp-kyma-mssql-deployment":"563208b76bf4593a2a855bca9bf6174d7f6d7dd6a36dc6cc17008b7b2ff150c5","cp-kyma-mtls-requests-egress":"c43cf2ea9972e9648e669d05825189c175d49a9b8c81b8e7786001bb498b1902","cp-kyma-postgres-cap":"ab5edb0764207cda3b2a612177892880bcbd862f41d5468a2551a2e439c7a2c7","cp-kyma-postgres-seed":"0fe257826ff396c681ddd0d6a25bad9f7c4deb5bdadf0cc305028fc7b9e7334c","cp-kyma-redis-function":"c605e95ea2787ecc97dbaf72b29e15d5c9e7dce6dd0ffe9d3154129512808f00","cp-kyma-requests-egress":"471ace3c7d61503074216a86a6af4eafa185da0af60b038c0be7f9c32b6b2900","cp-launchpad-federation-connectivity":"601344228bf4d86e02224364ce40dc9b8f8485dea8b10347610b71bd0b72c408","cp-launchpad-federation-consumption":"3992b9dfedb4de8c610445bad6932ea84921ca56dca850abbaec2f101ad038fa","cp-launchpad-federation-expose-content":"b8db66ec7a34b87500c97a87997800c6e9a1850443134c034e6dfd25f3899d19","cp-launchpad-federation-prepares4hana":"6e16a493acba7647e8a2c73c8c9cfdbf172d440d3a24c5081f792178d81a23b8","cp-launchpad-integrate-sapui5-app":"245d54875ab6beef369fc8c56a99edfef24535c9c6852b370243f71375f57ebd","cp-ml-primer":"f5ffe25c1b923f57db293ba8fc03680f2d5c352969a3830361c4455158065df1","cp-mobile-bas-setup":"e7eabf415bd87b752f720557e1d88e2ff80024981a89f98f4f2309be181d6a04","cp-mobile-dev-kit-add-validation":"1d3506a6455631269bc473b41eb4360023f584476fc39fe262582b2f9bfd05e1","cp-mobile-dev-kit-annotations":"bfa2315ed09b435f3f557eb43921850fde08368c9bcb2914fbc9dc18aa7a91a2","cp-mobile-dev-kit-build-client":"45d4e2ef60336bb0e0a6e7788966731ac57880ca4371a0119670d1c0769c7b52","cp-mobile-dev-kit-cbs-client":"12c31c44aa680c3dae4b15c492eaeeac925c0b98b28443b7c5baf3d72e3a0174","cp-mobile-dev-kit-cert-auth":"65dab3c0cc4565b22612a6b19318128d0337ae765dac36d62ac7ec03b573dc94","cp-mobile-dev-kit-create-customer":"111d287779e632381e60b9bc6747d69c31c2ab763e5c60c15b00712e38197960","cp-mobile-dev-kit-customer-order":"12ef6b2df0763c9b6a9d5cef6cb5cbbe50595378ca6690e1f558da04db9fdf94","cp-mobile-dev-kit-debugging":"a82d693625468fb550fdae314f2d295cd1565d68f5d4c05311bbe3a57845d9a6","cp-mobile-dev-kit-deep-link":"532b21b779bd9035fc3acb28fae08da6dbce2cfac8af24b779857f5507dd5366","cp-mobile-dev-kit-deeplink-intoapp":"c8fbbc0d2acd5dbba26edd88a888ba0c1d48f57033cf4a1412bf8276a4df3f21","cp-mobile-dev-kit-delete-customer":"f563c3065ea9cdf4664efa540a449a653cae5a7c91a89c039e22baf8f5b85bbc","cp-mobile-dev-kit-detail-page":"8f709c1e37b328f64d42bfae04cc67b2052f53cbd8118ed358a35bbe1fec85d1","cp-mobile-dev-kit-edit-customer":"ab6c7a270481b5416a5d9b2e8722a6ad1f1aba704c98a9f2ec338f69133c87b6","cp-mobile-dev-kit-error-archive":"6fe217404113af1ec64584b4b9dacb6e25eab59f53e0a613e4b4f6e78a832ebe","cp-mobile-dev-kit-i18n-localization":"586de7bdb55cad1292f2f6329e72a058af84553176c03384af76437e43c2d9e8","cp-mobile-dev-kit-link-entity":"30b7b8f11d672f5fa87c22891f3b5c6eabcfb09389285e319dce2be9453e82db","cp-mobile-dev-kit-list-page":"dbb00c7364078a64f1b36398fe669c3920ab715f7688dbde021f79cc23d0f51f","cp-mobile-dev-kit-map-extension":"cede26c478305fb9d768b7d21de8e0b8b1122bc9a472d7e6d6d40caf2864e919","cp-mobile-dev-kit-mcp-app":"6223280bce353bc085af88f512d22fce48af1e0c031c0e1cdb84f461e3f397b7","cp-mobile-dev-kit-mcp-enhance":"cec61125d6229f9a0b01163040f440146d921d38373d10a76066825e2de77732","cp-mobile-dev-kit-mcp-setup":"27b2d30cdd108b99ae2f7fc2a7b929fc0777edd4016fe66b3390b0580348e3c5","cp-mobile-dev-kit-ms-setup":"66995dd1ba085547e07b6cf9114635dd6ea0dc58e785409c198bba77a52f9eea","cp-mobile-dev-kit-multi-user":"103ac029584118686cc879aab78799dbd493794577a2f54e443b283834e85a65","cp-mobile-dev-kit-nativescript-geolocation":"71addb356b7831b470aa3c0cc0af2c8a586cf051f37cfe40613f8fe2d994daa9","cp-mobile-dev-kit-offline-app":"6c989a63fde00b5bc1e6323d9025d8ac35e9b146457c3aaa63344d5f0e3f7ad1","cp-mobile-dev-kit-push":"1b9019bc3aabc2171a87983b83fa1ed068c2ed0507d9486d0314c0f85941d2de","cp-mobile-dev-kit-push-customclient":"4624d2942b0b2c04eeb1e9f4a683cd47b4d2dd3231ef475b828cd7065e4e8265","cp-mobile-dev-kit-quick-start":"6963250436a550b33cc073e5ec23f69c739992ae3e42363fd63fea6a68757b2c","cp-mobile-dev-kit-rest-api":"465c5b742cf9ddb2831b331f9d438c461e3bc9681bd31a1a5c89aa56ed3e31a8","cp-mobile-dev-kit-slider-extension":"fb757e4f155a8cda4631ef7d8dccf5771d18055bfb21245c49818e5b71c9b8b0","cp-mobile-dev-kit-style":"ecf1d9be642f708185fe598f9682a238da93f279b2b492e40e669134190b6faa","cp-mobile-dev-kit-upload-logs":"49baf29426e6fb9e9923db95e284c9dbb7756ff9858cf0191e08330998745b9a","cp-monitoring-alerts-onpremise":"918f1e986e0b57978b45305614cb33e4c4a4ff88f1a5aa417b1570bbe3d7a2a7","cp-monitoring-dashboard":"031ba5cd75690b88da231cba74b9a7950cc066e5d4ae801b925dd6c9c295e7f7","cp-monitoring-notification":"29ec45be0b0aeaf3658c7b5c127533223b6985bd88087047122fb6cb8881d1f0","cp-portal-cloud-foundry-create-content-package":"d40e1c16340432f157e625e1758a03e84e455f2fee28c313798a42e70cead5d2","cp-portal-cloud-foundry-create-custom-domain":"566609f6b93cdafbadada9592f5b5d919ae5de26c9b0fedddcaff3a5bdfa638a","cp-portal-cloud-foundry-create-custom-domain-adv":"3377d49eaca8fd707242c4f4e421ba5a8f60f8a9aff7df6973c9a4a6386c72d1","cp-portal-cloud-foundry-create-sitelaunchpad":"914994ecf45edcf18ce0091a04fd1848336eafccca75ab082363344ebba912db","cp-portal-cloud-foundry-gateway-connection":"812d8c762cc215d6477ea47595845746ec8f62507326c45fc7b954dbb4aa529d","cp-portal-cloud-foundry-getting-started":"06605af8043c2b9372c76b9d74d81328e6db05d3e8820be4f94e11d2c37fc58d","cp-portal-cloud-foundry-integrate-card":"8e8be5430aa6d341bb9682758b359e9ad9d6ef10aa740fe2d4470e3d2b33072b","cp-portal-cloud-foundry-new-sapui5":"0993465561b156dc8b4c5225fe89975ac02333f3dae0190dc050722d710f3090","cp-portal-cloud-foundry-setup-freetier":"d2ed55778614a9a91f3a60bdea8f35158c8a8f35e8a0e9f5de63b282f1827988","cp-portal-cloud-foundry-spaces-pages":"338f9ec307aa01ade2c117b36b8ed235b625852717414566594e54f0d02ad340","cp-portal-cloud-foundry-url-applaunchpad":"d91b2c7dfa75f174055a4870be95097367000283a00ac239534666a29131b1ef","cp-portal-cloud-foundry-webdynpro-app":"72b108f9244437cf8222b300804d845d93a56c06a36307e215d915240fa698e8","cp-prepare-local-dev":"3d383cf0cc71d08379389f021dbcd66c567f71ea711f7819a1290ec05d36d574","cp-sapcp-getstarted":"6c249186d14efc291974fd4123b9b4f47168bce620656ed75276e1a962762488","cp-starter-ibpm-employeeonboarding-1-setup":"97059e9dbd87c71e36eb481717243e4d2bd40a8d53a3e637850426bef51e310c","cp-starter-ibpm-employeeonboarding-2-configure":"e51b7459157f669d76983aef56c3ecf0a2242f763d475b2f9ce6df51d7112e45","cp-starter-ibpm-employeeonboarding-5-run":"45324f2175a6b18d288df86389010b47bbc1f42581ed2035ab1b19ccf9c9c909","cp-starter-integration-cpi-design-iflow":"4edda4e7cb4d704273ba7fbd45ab0ba2d08f150e1299a9f73527425f3e8afbd8","cp-starter-isuite-api-management":"fc002173bd5dfe6b6e6fde55b856bc2c6740c779c71005f0090f21d59953a3bc","cp-starter-isuite-onboard-subscribe":"1c7b4f324a71c07368a5bf97fc41b6622e1833d4f00d73b766d020dc783b4dfb","cp-trial-entitlements":"9f40841df20b12dffedd83a61b29f26cc67d7f637b143222ffdb03e546066896","cp-trial-quick-onboarding":"1d7123baa1b2d2903ea2edc5368d33df5706c837afd0ac0c2143ab24f88cc748","create-configure-approuter-multitenant-application":"14144d8b9272800d4de4f2062927bd2c5797e594728271972c1bf206dffc45d2","create-custom-theme":"8534b7a33d10b659f3d94e7c0d2d793c746ab4a6125950d78c4c04b93574af30","create-hello-world-mta":"f603d925c7f20afd8466fc953b6c94440da0ef130cc30196d298234a7abd11be","data-lake-file-containers-hdlfscli":"bceecbe537384e89a55cd6c5edd0cf86a0e2fbb9cf285769d05caf59f0d7b2c1","data-lake-file-containers-restapi":"bae71f7136e1aa5d1204bc43a8b05ee80811df0e9f56a11c4f93dc4365ea7786","data-lake-file-containers-restapi-node":"9a71110dc5b5359fb6eb2fa76136039d811dea0cf6fe4d01af610a249f638b40","data-lake-hdlfs-python":"8ac57508d486b766e646aa9a8c735f231b17e5c7410f388c02e97e9b87c1ab82","data-lake-schedule-data-movement":"2d37d073a9b0bd11d9b157c2aaed7288a7f2b84aa581ff7fb7c11b7194a52974","data-lake-text-search":"3442a9530085bd326416161d5eda6869762d1c54d61b846924ba120cfda5b97e","data-to-value-conn-concur-part01":"a728b2c537fb855363e692b4e61d5b905504b9480524f3d591835fdfd3c2aec8","data-to-value-conn-concur-part02":"b78ea9031007569db12c003f79c9d9f3e24b5bf74df9b73a97f4aedb836ad0f2","data-to-value-conn-concur-part03":"bc876d0dec1a6651093e5f50069f631e692653c2edba1939ca214ddb045195f6","data-warehouse-cloud-1-begin-trial":"043112abc177015b982aed047c86ea445dcf21fe6165ed2f238719e6289b910f","deploy-multitenant-app-kyma":"1e77234f297242a6cfac6a6dd3a90cb6fbb7300826d8cfd59956de82e23b7c97","deploy-nodejs-application-kyma":"adfc74dbe06453fde30dba6989508eddd75a51244ef0faf7f43517a14e7fc6eb","deploy-to-cf":"11ce8d2b98ce34e03a2856d7fdf5d3cd2995d00ee5ae8b0af78fa10b8438ca75","deploy-to-kyma":"7c9011e8d70d115cefbba01d82d48f2913935f259a40516903480bcd810e7025","devtoberfest2025-abap-week1-session-validation":"b988537a781788885dac95f7cb62fb83e028000a65f5fee4cd084fe3d0c2a7ac","devtoberfest2025-abap-week2-session-validation":"d67bb2ae0bf7fd6dba9ae5b431e233fed884ca2ea90fcd4be33ff9fb5e5d4106","devtoberfest2025-abap-week3-session-validation":"5c630aabbe4bbc60cd1371215465ea22264d01b7d3fec300b55ea7ddb8260bbc","devtoberfest2025-abap-week4-session-validation":"ad27f9e6cf8acf42fcc415f4ddfce320d2701cd845ce84af8201054eb83076df","devtoberfest2025-cap-week1-session-validation":"84a8ea7e08baab58e124e373dbd438d13538b169a877fe0bafea0c4ad07833d8","devtoberfest2025-cap-week2-session-validation":"585a47e8cfa9008914eedd67c3e8881084754395b81aec233034de2067ff343e","devtoberfest2025-cap-week3-session-validation":"0c2b1ad5c797b8ce0cecbc7ddea91996a1922a20c0b66ec78788233a487c9d57","devtoberfest2025-cap-week4-session-validation":"a8e02c2f2dccce9fd986d20d439bc2dcbc69a8e6c2ec8b0287382efb52294a72","devtoberfest2025-community-week1-session-validation":"fed8af696e7a0ffb74a535370c077dc1aa8b9785e3ea1c6171898c47a77a65fe","devtoberfest2025-community-week2-session-validation":"8959dacdbb140773add8faeee715c45e30273cfe90901156be822c6a86deadec","devtoberfest2025-community-week3-session-validation":"13c663b75875076fe9f0a901706ffce76bf77b855024b138bf2fc546d1f50eea","devtoberfest2025-community-week4-session-validation":"ad5ee2b62604ecb7506970114a4b2ec54f4c968930e54fb9afa851fb2c587d4e","devtoberfest2025-dataai-week1-session-validation":"29005a5740c457e2072c4fa494b59b05fbf62d5bd754233a26aff3e419d6498f","devtoberfest2025-dataai-week2-session-validation":"7653e587e4bc7c87b53736abf4feeeda13c172c09a7f3f577e7d8773eb8e152a","devtoberfest2025-dataai-week3-session-validation":"e21f13836b4cca2cfbfc2ae70b09291e3aeba2d4aa05a315d6d7ee63fd03f82b","devtoberfest2025-dataai-week4-session-validation":"a6135d153a5ea331c9e8a08f9082b548d598746381b83fbb72d292f502c1d2a2","devtoberfest2025-fun-coding-abap-docu":"f053071b8891944c01860ee334b1cba3fe87184e9e86b23692c2a9b8b977f8e7","devtoberfest2025-fun-coding-build-docu":"7c201f95fc31c970c9c551a8b63f8077123b127ca23b9fd96f10734136798793","devtoberfest2025-fun-coding-cap-docu":"87edd61039930ffbb9215d02f8a055748d72605a6b3b5abbec2a9817d74da14a","devtoberfest2025-fun-scramble-codejam":"fb20466ac884faaf9e884d7a8fcd08837c3caaa092afec618ace6fafe5664de3","devtoberfest2025-fun-scramble-languages":"c2d4139101018f7c4360f2d0c43229213d370aefe3c91ecd1ed0369ce1551070","devtoberfest2025-integration-week1-integration-session-validation":"10fb77583747cee3a244f5bb2aae28dd03e1b7805accb4a8b1a8db30f3d6797e","devtoberfest2025-integration-week2-integration-session-validation":"512a4435e9306e04b0416fe88da6b7e1f7c221342fabb314f007724c6a2887ae","devtoberfest2025-integration-week3-integration-session-validation":"a695173dc627dd3aec50091e9d2631c0ef0a083f9370b003b8be6cb803492e37","devtoberfest2025-integration-week4-integration-session-validation":"d0bcc29b6236609ce191d31c2041f09ac58c0241df637db3e14019ed54837c52","devtoberfest2025-sap-crossword":"d7570c9b552f0e4eb65fbca4d7de1884c7fdc5fce6710239f94eea7bb1f9d071","devtoberfest2025-sap-crossword-bonus":"8d553bddfad657f22302ed6921131312e7b5dc384be803108404ae5d722942b0","devtoberfest2025-scavenger-hunt":"699d8943c0cde878903878396aa34cbe67dd193b2cc87c48f293c24a5a68cdd7","devtoberfest2025-scavenger-hunt-checking":"cb7672ec9bd07725e6fbd1b677c6c447537bbae8058c80d76558f138cb41d5de","devtoberfest2025-tooling-week1-session-validation":"e2e44cba0af4da5c0f878b44b6561c7a6f3c7d5c182b1c2553445bdbc275bb1c","devtoberfest2025-tooling-week2-session-validation":"e8bb92907d9611d3297875c0498d79b3e4cae4ebd428d9f1b60b323b41c815c9","devtoberfest2025-tooling-week3-session-validation":"089215f5d0af40843bf3572cb1e28d3f0d63c68ca8193fb4572ac2c29f531e4d","devtoberfest2025-tooling-week4-session-validation":"629e885212d35106050517ef4621a6d384b7d25bf8d5e9fb32e4ba79a7c29a7d","dt-backup-recovery-part1":"f1084e788afd3a74abd8b4b865490d9eb0ae8cf599ed481f7eff5ba06bcca7ae","dt-backup-recovery-part2":"7a9aeaca9636bbf27345d326bb0ec3c8300fd79a99b91907d659874277ae26b3","dt-backup-recovery-part3":"ca358815f9f8006b3c482dfe4c3a585093cffbeb5e43f1eb2be3cfc59adb19ab","dt-backup-recovery-part4":"2f59ecf4f1e2da9e5504b8eabe7e394763f1336d2913d8886460b9d33da24990","dt-backup-recovery-part5":"59b2f6a7d8174904a86e32a61cc6882336a87a1479d72ee19a748b59c4f25067","dt-backup-recovery-part6":"e23cd3b63f0070cfe53b9703e101c1c167b592c0e804604a1ef83e87622a1251","dt-create-schema-load-data-part1":"64e619db15e3a19f65e79ee719deb32ddf452017f78ed4213b61ceb1e2172c65","dt-create-schema-load-data-part2":"df9b459e661601842d056840dfa225920fdda12e6ace30c41f750181803c98a6","dt-create-schema-load-data-part3":"388f654bfcd60d86fc8c8bddc1e86dc4b1217fffd01f2cbf45bdb2da7a2702fa","dt-create-schema-load-data-part4":"e064dccccdd2263a056f84e131600a4b334ab96332cb928bed9b586155553e4f","dt-create-schema-load-data-part5":"be45639467c2e82d40da5c21dfcd278410565e69185ffc2cd2b77a949c8f26d8","dt-create-schema-load-data-part6":"38cc4acd54373550a9baa44716b21dbfd790d2300415155ee0337f638b07ce8c","dt-create-schema-load-data-part7":"4853e05962317e0cf16565683e49f8a9ad944f55735d9e41d00eaf90de660be9","dt-create-schema-load-data-part8":"3fcead910ad35f217b9a48ed12bc8bdf9285a3f9ee1ee7a32852a2b36c0cfcf9","dt-data-modelling-part1":"240800d97788afcdd15a5a160439eefb5fd573e1a3a4d54acaed3c6fb0c409c7","dt-data-modelling-part2":"95fc746b5eae2bf55b16663cf5fe83b11e1fcc7dd3aba5eb29fb695bb07b0a03","dt-data-modelling-part3":"941dcb56541e593a829c44bb180322ab257330d95620dfb9e8c2f2a9e2ff7eb7","dt-data-modelling-part4":"22cff1993e9833ac47cb0d4ec6f8ed27fd0eff535152e1583aad60d8eb5bdf98","dt-data-modelling-part5":"25e0fe32cfd9409511481f69c549a6a0683c3647ce538c987a4fda798412f4af","dt-data-modelling-part6":"ed54e48eaf9d984ad52aef58cdea225ace5ff6d1a11a1068d4f66d190825a23b","dt-managing-disk-storage-space-part1":"f34b2ed51c19c866b9cb5ea9eefee2edb4ef0eb5f0667efae48445f85c5496d9","dt-managing-disk-storage-space-part2":"4a44d8c91477b3f4d26cff52afcc4ef3b427e1dc3a575b6037b53d6ad5b6f22c","dt-managing-disk-storage-space-part3":"169d92a2b235f221975b26f46acc57abb56d942c7f7e6ee5f466e20cecf0454e","dt-monitoring-hana-part1":"935e6f0a8ae99ba202dc508350779e088369a6fe7b912d94f51615ac06366b88","dt-monitoring-hana-part2":"edbc0836a61984b1a0113c5a8609a3e1e1caa0844141c13dfb297f27fd36c218","dt-monitoring-hana-part3":"11f6b62c83ee2863176d8eb4e6b37b2a85a3f2389025e840ba21c813782704d0","dt-monitoring-hana-part4":"644f63c61b4dc25f4a0f56fc35ee6f5956c451822ce1d11c948a7b1b9882dbcc","dt-query-processing-part1":"59660286f305c9d8328ef122c86f41196e1351972e80a1251b87464bd8761576","dt-query-processing-part2":"b1e8c6ce8ee1ab8170cd784c0c682006bd40592dc06fbf3b31ac3f7737f2cffe","dt-query-processing-part3":"293cc7aa962cf55d2b557c9c3e91cf71bac1926360886f82a0c2b82950df7568","dt-query-processing-part4":"486c3b4520653833639d180c40e3ecf56aaa19ffc18a7c90618ff7e5d4290deb","dt-sys-replication-part1":"77e191fba892b7aea69e7b04e84410773c193aca26f49aff2e9733ef2b9102d3","dt-sys-replication-part2":"042e03005f81d9de371d16b515b01372605040963cbd97436235cf2c4e00a43e","dt-sys-replication-part3":"df80fb13c11e308b05d0b30f8ed86e120f6414e42edca0b073354deb244f762e","dt-sys-replication-part4":"9cc559ccbc67d3798188a25710f9f437e5cc84ecea1405bb1eed45f5cdd6b7b2","eh-basic-concepts":"2471154b24735d783f8ee7dac58e229ffd52f512ad965aca0fd4f3f846c0c167","eh-setup-aem":"fa01cd24d0381705b83464e3c453274c51c2ae7163456c866dfe265424939120","eh-setup-event-hub":"0414abe744ba2b11a49fef71f58c63be75da177032c1dbb91f9f35a93ec6221d","eh-setup-s4hc":"f1c2026e7da3f6135ca301036ce42900081bc67898e8f174c5336d0150f158a7","eh-setup-sbpa":"cda8aa6f627619c124ef29205bafb1ce157401ebafbc68b1338c6ec91ac1e171","eh-setup-success-factors":"391cd5ef2cd1c2f1681a8c44d742ed25ef1abb4e36a598d7d27d82da3906f0bb","fiori-ios-btp-fioriar":"36a2cc4dd5449ca4812b2aa4401ef83814d36db23f26280114c3bc70c1901c45","fiori-ios-hcpms-offline-odata-introduction":"b0131708761469b59509d7a028857a52eeb707d699dd262b824ddc9119b7b5fd","fiori-ios-hcpms-setup":"42b00f45fced66db32903d2fefc4cdf3ef7e16d719fccde4b502f40faf13cc15","fiori-ios-scpms-barcode":"facc0cf20041d2128206d3294fbc94550632558beab53452ddac981003a3031d","fiori-ios-scpms-custom-app-translation":"a41226c5b1d9152b50fbd918f5f1322922805f8b781f5648e8073302b2508153","fiori-ios-scpms-dataviz":"7e9da513bbcc8f33d53fdb750e31fdbd2452466eb323466498178869202195f5","fiori-ios-scpms-floorplan":"fd172bb62c7d7f1fe28dd62de090b20e9f13160fcbf8d78a73f54c937567ea87","fiori-ios-scpms-image-classifier":"ba39751fea6aa66a6af28dabf305ab258ba31e5b8e2644ea2fc7c9fb4470eaf5","fiori-ios-scpms-shared-keystore":"79e1c76f738029fc1cedcbc191e66031e3da33b6e0e66d685119e215923428dc","fiori-ios-scpms-starter-mission-02":"fda75325215f2217c47a997c273a35cb3974757a323043e875bf3a278b88a9c8","fiori-ios-scpms-starter-mission-03":"23ab5aeeaaa3cf8c312215dac19fa1ba7059e3225685d73cbf76aa7c97af1337","fiori-ios-scpms-starter-mission-04":"a16c4b3621b76ebe44fa05ed33fdadb81fb16e34e69bf5a864e238cdccd8285a","fiori-ios-scpms-starter-mission-05":"c24c9f0f9dc5eda2539f67b157d48435325c503572b29fc97e00b4ee9d71097a","fiori-ios-scpms-starter-mission-06":"d815495bfaff47050a18bc8f88b3e15badc613a9849aa8e15ea5221d76050198","fiori-ios-scpms-teched19-02":"5c721dabbb3451e9b99a9db61497e00a216d67e773f6f7fa078a0ca1bf87824d","fiori-ios-scpms-teched19-03":"9419d98e5791c16ff5796b17f45d0133852ef1e33be9e051da396bcc898fa657","fiori-ios-scpms-teched19-04":"faafad18606cca38934a764d949a8f91f6fe0865852b0c6a24836d213c80e62a","fiori-ios-scpms-teched19-05":"20cede4d9cde779fb737a183b556c6096871bc945f7d1a7aed13299452d540dd","fiori-ios-scpms-teched19-05b":"b50f227014b2c4f7b8e55390335cc06266669babcedfe7dbdc4293fefca28119","fiori-ios-scpms-teched19-06":"0276bf282dcf19b8947562065121bc1253c49e21f2acc9986a6c0fa6c7f6e39d","fiori-ios-scpms-teched19-07":"57069a37bc8a791d91b237cb21ccc34e449788290874670015e66d972cd051e4","fiori-tools-cap-create-application":"6502b7e0aa430c42a7a9236953c86a6f27ac09dfaff2aff520de7ec0682dcb66","fiori-tools-cap-modify-list-report":"0727375e3e7b1bd93ba9f4f8d5b47deb309486110d7539c757f932bea00c890f","fiori-tools-cap-modify-object-page":"fd9e94fbe9e32061875a420bf8ae6dda4282bc6b09403b12b3deb53115455407","fiori-tools-cap-prepare-dev-env":"27bd7170d9374adca7d7795f45040feb5bc9437237d46fc7d91c8518f5662996","fiori-tools-configure-lrop":"3ed9ae086349ca22dfc0e80dcd88e76d9694005699dcabb67aa76006ddae003c","fiori-tools-configure-object-pages":"173df9177ba9841aa7042ad8d6819952869bf7ba8fc743f2edc386d8bcb5aab4","fiori-tools-generate-project":"14fd4ee1ccb81643e0f8eba71e3c2c4c87d1b6dc8ed0dbcf102204e19bc145db","fiori-tools-mockserver-opa":"06d9c8bb22faa60251550b7ba69b533f4d66c00de67742e61f0b073dd00dd1b5","fiori-tools-mockserver-opa-testing":"785e6eac4e48559766ed41dd736bf230c2a3ad7ecb437c3595a65154fffef338","fiori-tools-rap-create-application":"34e5266b339f45ed99a6451b5b105595af8485d297e8167833012ee4efe2ca46","fiori-tools-rap-modify-list-report":"1b26b9fb7073a15850932ea4005d9856eb24dcc1bae2a39af2a67cc3f64741d3","fiori-tools-rap-modify-object-page":"2226c504534a464dc76711af8983d003f9a3a533fbc6b0ca8a1114fed124acdf","fiori-tools-rap-prepare-service":"7fe3829286e4f3b81ff6185ef1d9d0634c54d92c4a2e7770acbba27b3ea6ffc3","fiori-tools-vscode-setup":"78f3e057d8f995ded91e3eef58aacb6bfce4e732fbc92c4f42fb70d265f83f6b","gateway-demo-signup":"0b249e1816610a6433a62d24d5fc6b8b8d18dfb894f9add5fda7f2d9e46300d8","haas-dm-access-cross-container-schema":"a9f934f2db941abbdcec9d8eb8359422991be38f0e80a552dd88a34d43cc8f1a","haas-dm-calculation-view-differential-privacy":"48c896356c653b9e221be176ad1f8cb648a1bc5e39673f042600acc43fd8c8ff","haas-dm-configure-dev-env":"d54cb0fe230705169117a1cdd5cffb582e1f41cacc4e28c54d9dcb57b52705c1","haas-dm-connect-hana-cockpit":"b21a5cb8f13f852e5d9a6f7432851cff35ad033173dbc56227785a35b6d64d66","haas-dm-connect-sdi":"d3ae878b31b44f2c4c6b64fb05241a88ad084b50edc2c3e6ed68dfa28a2af16e","haas-dm-create-cube-calculation-view":"f4dc2fb7154253550754efae91b785aa6276da49e1a650c5720dc898486a8110","haas-dm-create-db-mta":"2d52bcb242a2f950aed1a755063e5d62a42b11d294934b75c971ccbd376d4104","haas-dm-create-flowgraph-sdi":"1e6ce3b28d8074b3443dc3bff41606631ef8dbac98fb9070d64707402771f8ef","haas-dm-deploying-haas":"92cf16ebd4a1675a202038ea8f2a79288256192209973e41b809bcfc7cedbe9b","haas-ecc-operational-reporting-sample-data":"12a15ae194825dfdb465cb5b07b8e963350c1719652b734e7ef64ce18e92c1ef","hana-clients-cf":"210eb85f42aed8a89069940e76e68f1c6a0ed1ff8d5436a820c8f95fe9517ee5","hana-clients-choose-hana-instance":"222d152528694411b5a15e667766160cb68ea2f0081f236c12d69bea99095513","hana-clients-dot-net-core":"8ab22819c6197fee0ebb6d3283300386e4c6b1ae2b06641bfdbeadc0df7fa1f2","hana-clients-entity-framework":"672748fcb539e7c93bac1f31438ff149a86de7b796c60714d4b7da6cd8ced966","hana-clients-golang":"baef6b579eb0bce3cc263681c29e2424fae1b181284deb76caa84340ecfcbaa5","hana-clients-hdbsql":"9ee750ab8a414bdb2ccecf6a0f28ea7cb93f5d4b3cddd66e84f58fef8d08d56c","hana-clients-install":"c6cb1f46d7de22f6da5809e2e863a5a28c8d87ab027e8cc238dd86cd250eb12e","hana-clients-jdbc":"76eaa66c4feb69846c3e00e4045ceb2d32ebaaba859b22af676a100de78c7194","hana-clients-node":"a6ce10cbd364f4023578eb72b8684fac840bce3df50ff843a7aedb0f13d39cda","hana-clients-odbc":"ca5113b53e3dd83eb0e75eddbfed4411be89fa580afd351baaf05df1c4003ed3","hana-clients-python":"d46e67e7440dc8d9080313e22caa2d2141caaa8670e7b1554b6851493355e8b6","hana-clients-routing":"02f0ed05b6cdd34e9d7aa83322ed41af00a58588fd30c5fe4105b2a43592321f","hana-clients-trace":"777b87658e9dd057478542ae2afc1602adaa4e671ad8d6d5b9935268b87e81b7","hana-clients-x509":"20925ccc9b8814310cf6e7bcc624208a054cf769ab286b72f69d22b938a1f704","hana-cloud-access-cross-container-schema":"34fc91161392e490d4bbd70ff1d567260f5871936fcff2fc5af71d925d540575","hana-cloud-alerts":"a1b8f2eb6d23f8f65b4f714d633726e769c76964976a242e03c8a447df2b1b18","hana-cloud-alerts-autopilot":"57c9f74fe6a1a558e0f556e2c60987d18e372ddf945e5d021cc94a8dfd0f7dda","hana-cloud-alerts-custom":"3a767d286f527ed2c974057e837233828332e7e19c66cec367eb542cbccf4650","hana-cloud-alerts-rest-api":"40d4fb619e4238b16cdcbeb32e2d306dc8cb5bc5cd838e30e65f76cf26d605b3","hana-cloud-analytics-cloud-consume-1":"621b16f0672e1e68f1b0f4135a01a2d857f574ca2458a4f3b350b36f68313bc3","hana-cloud-analytics-cloud-consume-2":"6e7f43ec6ffef657c2ebb83d695a977816bebdddece43890ab9c177fda239280","hana-cloud-analytics-cloud-consume-3":"743500c681070f22c071a912ce56c0b109afd6caeb033f4c67000d469ba6c1e5","hana-cloud-automation-cli":"8a297b3be91bf873901fdd7ba539b9590d4610a5ad6bd7ba5aeeca669f17ced5","hana-cloud-automation-pilot":"9b75fd37403f3fb9839206b1d1f569502cea8c943677c649e2d05d6f0144909e","hana-cloud-automation-rest":"096bbf4f4a4ae739f844e01d8d4dd00ca7363ed3ae73ff2829cc4c32725812d2","hana-cloud-automation-scheduling":"2524b3b4547a25793047fe2a365b8606a4f09714a5314e7f627dfbec76e4c146","hana-cloud-automation-terraform":"8778c2fb8273bbe170d8cf875b260794de7cdd7c8486ff218ca3f0b6fe0d76c9","hana-cloud-calculation-view-differential-privacy":"17a8a487d3704ce1493e2954dc286f8af0eb9ee0fcd6c70e15ba12c5dbd09457","hana-cloud-cap-add-authentication":"c7a3dbe09c20c045984fc44717554bc23821a693746e3f9966a36ec06d708ffe","hana-cloud-cap-calc-view":"0f5fef073e19df2e3f2ebe9a37137be0eeabb5675b16e4e3c6f308a01c7a45e7","hana-cloud-cap-create-database-cds":"422c4eda4ff9791d862c45ae95c2d9f608aac05b5227747079c77c3ce756cfaa","hana-cloud-cap-create-project":"99bf6f63447c1838c98dc4767f1968b96f61e0c18c3545a862ed5309120cf088","hana-cloud-cap-create-ui":"f8e326b901c51c65840a3708c9edad284aa234c892cbe8ce90b58cf8e8d17b15","hana-cloud-cap-deploy-mta":"973167498086fc7185a760dcffc5fb3c022546d6264683c9d6e73e40d58b20a6","hana-cloud-cap-stored-proc":"d8cce1f22d52a909a3d9c69bec84e5cbe8b420a7db64aafabcb955e51d9afb0a","hana-cloud-collaborative-database-development-1":"4d0e626b5756a91e1bcd79c5687041ce31c6b28883b41e11a391594db42533e7","hana-cloud-collaborative-database-development-2":"e8101a915c27f33697aa6afab9b0194c1bd9c424b97d5a2dba8b896139cba219","hana-cloud-collaborative-database-development-3":"8aeae925d0442081df8613494b5833dd8a3b7ebe80f5942e53b24c27f0b9e6f7","hana-cloud-collaborative-database-development-4":"6ab057b0bf967e1cb7c78d9aeaa03d65f5b535161cce39d642ccd5cb7b00a226","hana-cloud-collaborative-database-development-5":"a68ba772f63faefb3fd248e2b39e27785ac5f852e3fd75b5a98ecb95154695b7","hana-cloud-collaborative-database-development-6":"54ce921e6af895b26fbebafa5fc216df121a9ec5b650f5befff1dfc2e7c0a31f","hana-cloud-collaborative-database-development-7":"1750b1ab6209a00c5526bf5ac5d219583ee44b05e1eb59488913e396de5ada37","hana-cloud-configure-dev-env":"64960067d93bde1377bc0996ca70fd87112ac06706c7574743b6148733f2dc94","hana-cloud-connection-guide-1":"0e51f218eb5e6a60b238de006d67054a4c896215b6a58b8b4855e6a8123082b0","hana-cloud-connection-guide-2":"30cb7e9ab2fc75155aad35b99da4c4191d97dbb431507510d596f4cb3a2ec7c6","hana-cloud-connection-guide-3":"f2f2e57c028a5aef55b0b8ad783fe87b4a452d2aa6a7b7812ef4df43789debbe","hana-cloud-connection-guide-4":"30dc13278ec274bbd2acb5fc788839979aa56a652c2062747f6aa802ee708f18","hana-cloud-connection-guide-5":"1837dcccbbb9c0e58bee1c8d37ce6587bf6615e4b350ceac96f099136a943ae3","hana-cloud-connection-guide-6":"cdffbaef7dd83b444ad4791597fda2fc70046e9011675687bd30b4c36a3a3374","hana-cloud-create-cube-calculation-view":"ca8979d9e91caae5075a4853cbb34175be58d09738274a2d92ad493b0e0f8193","hana-cloud-create-db-project":"cd6c60cd77d336536896ee98dbf47e0242d45b3fd4a257f9635b8b736df85dc3","hana-cloud-data-anonymization-1":"925590f53ce3cfa8fc87c4239da74c0633d6f04ba039d44d10b7ed413659dd3c","hana-cloud-data-anonymization-2":"7aaad45b696a5b7d83e0904a398b88cb42738f312f61aa005c318f08e0c04f1d","hana-cloud-data-anonymization-3":"63b1175e5e214ed90b8c8969db5734f0eef53f23a476754e57bb2c13f18983fd","hana-cloud-data-anonymization-4":"44507e417a5e4f922ddca493fa351111fa4412b8c58b51b0d7cd820d6ff2adf6","hana-cloud-data-anonymization-5":"18978d7fc55f55607d10f11da2b1f65e731348a8d1d36e6eea1a988e6747d599","hana-cloud-data-anonymization-6":"b1aada4d761429011dc9944d6aa8af7e41c63e2757d0aca4531b407a794ec91a","hana-cloud-data-products-consumption":"0b2878475cad5da467aebd05d11b2ba8620ed155a20548be9bbef0d2eda4a27b","hana-cloud-deploying":"bf57aa3dfc4f7b64ac733cb8c071422b8fd3f18a1a725ace69a7975defa6f558","hana-cloud-dl-cap-app":"08ba5b09cfd12dcd8ccd789187ed29dab30759e33e039450a923dba1bd9905a3","hana-cloud-dl-clients-dot-net":"23485c2b1c8eb297e630dae46808a72b4b775bfeb4c1a0c82cfc47a12117a0bd","hana-cloud-dl-clients-golang":"8bb97aaa3822fa32ea09b11262c92997d6927720ca743a1adf60e1f5be50f590","hana-cloud-dl-clients-jdbc":"e4c05bafba803f7ebfdae28d6236d33b8e96437b12213454ed78c968d14cccaa","hana-cloud-dl-clients-node":"da96bef015c0ebe07f1cceeff96b1c6e03360504cf197578f4d380a68ac84ca8","hana-cloud-dl-clients-odbc":"7c19cb42ab39bc74a59202fc321f33db4d988c6bcbbd1b4a1510bbd55f27ae07","hana-cloud-dl-clients-overview":"a9510cd40e78f2a8a6a8b5cdd6677f7e124fcd5104d9b0b2037d50f13e99587e","hana-cloud-dl-clients-python":"92a7b64feb7b7c85a4823547181b42eb30cc352e9bc3597556c63db814a4293f","hana-cloud-ecn":"49c7878ba9e396c1e977164a8dc3ed953a463a934a3e8ad878d3d803c2b142c1","hana-cloud-hdl-getting-started-1":"a118d2553fe8bcfa19b6bcfc5e8bb029359abbde8890cc6504f2aaf3f564345f","hana-cloud-hdl-getting-started-2":"d653525510b1f68a151577b882e84e0eb056d896f5816a9859d9d43be35dfba9","hana-cloud-hdl-getting-started-3":"868c30f673a87c6ab47cc1670032b84fa7321e8cb3904db74b53fda346125251","hana-cloud-hdl-getting-started-4":"54e872749b91debc4a8e27c53a834a647adf6bca292a29aa1991121ceb1a24ee","hana-cloud-hdl-getting-started-5":"ba022b2fad89fde852ba19d1ba4eb7da2c9d50a56d541873c711225df248d518","hana-cloud-migration":"e47cd717c0f4862ea1896632b6871a384d20dbac1d2394a64b604e4b9aa7d8eb","hana-cloud-mission-extend-01":"18246b65da295c229e7bdff093bde70fa51525a812d21dbd3b83797b7a8aafe4","hana-cloud-mission-extend-02":"e97d0b0e271a62ea6439e80ced52fd329908c2926b4313a0ab23a2e11ff5c285","hana-cloud-mission-extend-03":"bde84747b3107bcb95ee6f0868b31a949a3a0005c4a556b2f2268787d8ffbb32","hana-cloud-mission-extend-04":"5bda36b866b92a60ccb90c7e428acbaadbcdb371b5a6363b245adf5d7d089a67","hana-cloud-mission-extend-05":"98339fdd2532125d3c7506c4448c7bc122dced43eeb4f8913bdcee16a4ea14b6","hana-cloud-mission-extend-06":"a90a264a248f8d8085c3d5e6710e5f2853379fd4b135abb9d4a4ccd7efb76d30","hana-cloud-mission-extend-08":"f62460aeed84eb3ad9cc1d81fc709e02eaf1e4ffec36dc485b1707cc55239c90","hana-cloud-mission-extend-09":"12e0443229e957804a0efe3a3ce2e0fcc3b5be37c6139942c8623801d99015b6","hana-cloud-mission-extend-10":"916c798ceed5bbbc56f69c06b74af427564eebc78b6bdc32b8aded8883e81189","hana-cloud-mission-extend-11":"948e95ff33938423989f581316feac5289e02c0eb9e864348d07d534d3a88e75","hana-cloud-mission-extend-12":"b155481a4479f36da692367bbd44e2a03d7620984815bdd5c891031f8c5a387b","hana-cloud-mission-extend-13":"b29dbe43325cb92d12c4a6b8279a9064c6b4e8968044d1417fbd008d11c8d819","hana-cloud-mission-trial-1":"e0dfe534ea4aa2b9724410a0b0383fc34128578dace6219ef9c0d9199e8fc2cd","hana-cloud-mission-trial-10":"5dd356e556d1bedee98616461f74683cddeb8f1942ed8ba9f1998cd5936a857d","hana-cloud-mission-trial-2":"b699f4807fabeba6c061ea72e6c9a31a7a85bbb12aa642f4331388aa55b49264","hana-cloud-mission-trial-3":"f6e29922215ccd145c08254dc49793e8641dbc3359729482867a618e59e0079b","hana-cloud-mission-trial-4":"f7bb4de86e3bddf172de3d73afea578e3999e84e872c946c75a81427421bf13c","hana-cloud-mission-trial-5":"75c074e85109dcf011fa74628d98768f8f5e9c41ea4b1c8f1be16c0f04e384ec","hana-cloud-mission-trial-6":"f91ffb25186204d039ad524bb898132ea157d2a7d026037ecfee1f727aa2719c","hana-cloud-mission-trial-7":"558939cd86cf0c6f7f0c574e1c0ee8de9f9cea6dc25e4cfa8fb998c4e0364523","hana-cloud-mission-trial-8":"3c357521f7d73f0ea6d8b949e1e0cdbfabb4cdd44826a64d98a6d2c384fb20d5","hana-cloud-mission-trial-9":"5cd7c966b1188e3d169079151c65689dc838b0d2c97c7c1bd325a11e6b02e86a","hana-cloud-python-analysis-multimodel-1":"e90fb6702a94029a7c281e51b5b500bed18e7280bdd0cbb64a44ef28f678b6ee","hana-cloud-python-analysis-multimodel-2":"cd618e89c4658ce8c95ca43362d3dd2bb0ca44018dd59c0d7e3ee2ecdc019e09","hana-cloud-python-analysis-multimodel-3":"7b49b5b15db9638c6427be3e0ce3b8d8157fd1a02332754d27279c992387bfba","hana-cloud-relational-engine-spark-connection":"1da95b19bc8540c41a584078edff8f2f54d597d29b55723db9dcc2bafb3f9ca5","hana-cloud-smart-multi-model-1":"28e17de7f945784ea8644b1c83d6d057ccfe7a38749ed03e9d88f56f8adb6cab","hana-cloud-smart-multi-model-10":"6c44d8353427808d50e696116cf1327939f15ec16c5ad421baf09b276a2a4e52","hana-cloud-smart-multi-model-2":"cf2abd4518c4a04769c2ce45ead124846596ed0a706578d57690fafbdf000a3f","hana-cloud-smart-multi-model-3":"33139fdbf8cdacd7d0c3a7be8c5749b771a2b5b1dcbf6b6c5340c50668a2c662","hana-cloud-smart-multi-model-4":"cf1a3a5afa160c731064d99bb000223b1711a8d8afc4cb54ef08e304b8dce16d","hana-cloud-smart-multi-model-5":"f91967769e8e19666b703c40e146d66bc960198e0138dc07bb2491bf5f1bd0ea","hana-cloud-smart-multi-model-6":"a6793840c49e0d1d0f09fe87eeac0271edacf9dbacbbca5613e26e3abdb2935a","hana-cloud-smart-multi-model-7":"78b1ceb4a41aeba67145efaf8ef64cfe2c306ad7963a4924b994a50cf09bebb5","hana-cloud-smart-multi-model-8":"4b31f71dd8594bdfc19d4cc8b57121b5ff85e54f30686b7cf412948adc7909b9","hana-cloud-smart-multi-model-9":"0bf916276d900cbb0bbe382f0a459ba43c1b66e4accb64536215a522f1189384","hana-cloud-spark-connection":"7ecf223f77fb199f982492ccb253b0f7764f745f4b6f026b6c2754fdb0d801c0","hana-cloud-sqlscript-anonymous":"34fec349467b94b13d49c6485b309d0c2e091cefd95e410e8f4eebd1677500ae","hana-cloud-sqlscript-debugging":"f4439055128d137aa3bdabaa64b79257fa13fc412eefea57686e435d30cc410b","hana-cloud-sqlscript-libraries":"a6725408e41ae80566b312122bf7ef03b3f0f3142f59768b3e08607e106d0ae0","hana-cloud-sqlscript-parallel":"f2bbff76219e9f4d5593ecfd45fa3e4cad7ef5cace26aee5a13de1ad3997f20d","hana-cloud-sqlscript-scalar":"4a13619e02141c21d235551a7cf54a24d0b8441cf370d10e38cf1b615e333dcd","hana-cloud-sqlscript-stored-proc":"800aaa546518abbb8b468401b90947322226843610cd3942f32260e323d9249d","hana-cloud-sqlscript-table-operators":"b50293930528e32e5ad8f4e9ce0331c3aff99f6bef5c4a6a0b935a5aa470fb9b","hana-cloud-sqlscript-table-user":"2e8f593f017485df68ccbf1b26d194e381aeddff189d9381075b2050fd04cff4","hana-cloud-sqlscript-table-var":"0abe7700beaf1104fb1cd1173c6e552e2e93d899174c3020a2a79e5083b52c49","hana-cloud-sqlscript-usingindexbased":"3736132303518f52bce8c4c4add53a75b6acef3ab7e4454b6dd8113e8081e637","hana-cloud-trial-basic-automl":"9f43665b70b9f432846031aafbb4e1535896852c8b8182fa4b442d32c616dda9","hana-cloud-trial-qgis-1":"7dd2da1c3ed1b311fed3164721e3f27b0343ff11c25c31b75c4faeb79e1819ae","hana-cloud-trial-qgis-2":"afab6fdf1de69903c19a4f236f8df84462d5d81870de6d9a06c7eb7a9b43ce93","hana-cloud-trial-qgis-3":"e8b34906d82ff71379992dc7da42108fefc32e7d8f4061c25b3754c1b2db29fa","hana-cockpit-api-getapi":"c570a44ec01eb594cfa85a7141630977dd2c5e67dae8ee1e43db513ae8fc30af","hana-cockpit-api-post":"64248ef51da754664d5e08b7d1611708e6c502561bdd920aabf9c2ee8e29b695","hana-cockpit-api-prepare":"bbc484960799905fdd8d48b4c7566fc36738a1bcd99cd9a23f4eb083e717d2c6","hana-dbx-browse":"147512f1ecb15ab46358d2407185c37f021b90a1a491b5855b8510053a0cec16","hana-dbx-connections":"e08141a4bb88aff50b43be04b49500d59d32c61176210edeb70551a0be3d4c6a","hana-dbx-create-schema":"49ae51ab105780906d6e8c3a3223298262f112612ea11620c5eb5fc369ca3e53","hana-dbx-database-objects":"a5228167ab8e9adb7536383bc7c5b5821e667df49b24875b66239ad5ff95a24e","hana-dbx-export-import":"e88654974af7256ff1851ae525976e5d05b85d4224796d65d24bd8afb4cf3c0b","hana-dbx-extension":"aa552e0d002c848e0e0cd35090f322dda86dee2cbef7880ab8ef29031bf583cf","hana-dbx-hcc":"ad805202dfcfd9c046dbe63d09c7d3761f78400b42ec81b0b3e4fec8b7706f20","hana-dbx-multi-model":"9ca1a70000ee617e83da8979e6dc382c346e42d576c8bf575018d1177d5b0667","hana-dbx-overview":"6f20ffba56c931ae4099e6aa35c20cab05c0aec2c49b42bf596a5f731725654b","hana-dbx-query":"3b12e99ec87ff80ebfb11d94f7c23af531ed6095a6bda67fac968d2adaefb72c","hana-dbx-remote-sources":"1c130db334768d59bb716154526c81a578ea7e2777e5cb0ff159ea9e554c93ad","hana-dbx-sof":"fb832969eaa532ded9b27583cedf9925e0a794b42bb83b63e940f2b8cef22781","hana-dbx-troubleshooting":"2dc03560a19ecf8a48b8a60cef8fe9ecfa5026c7e26e44eb37e779dd023a6872","hana-graph-overview-graphscript":"70b5d030ed7e5ff1113bc52613fbf160f88be21feeaf3bd8fa7d0640f9ef7636","hana-graph-overview-pattern-matching-sql":"6941e8402d59a02d56d60ba0b976ccc80fb7b4bccbc6c5bc77bb667034e70f63","hana-graph-overview-setup":"d963e80d5cf1e0d0b49779a69cd406a0da38119397549efb36e5343858affbeb","hana-hibernate-calculation-view":"694a780e70702113d14df2ab88a0896a36dbf689026b696ed34c1b9ba743d2b7","hana-hibernate-introduction":"1e77da1d850a51d4648c903471a6da2085874d4ce90679d1e31ee488717e845a","hana-hibernate-setup":"6b9667264d862b0c35956dc0e96b242e98723ec85cc6f792f8be0bb3b67fdc1f","hana-hibernate-simple":"9dc0325bf62bf85560ba08401acff40a54db05836ab25c50b7e36aedb0ba5e5d","hana-hibernate-spatial":"132b7c3bb091ddab97c9678137d5c905fe27c5ce77e505398750e1649e326e41","hana-spatial-intro1-point":"ba8643883c985a4389927e6dc156f1630e8a9d1675e61fe5a7b7a74408f6e94e","hana-spatial-intro2-string":"e2c6da9ce15585a473aa1a2c9e5e6540343e6fda1ebb03f9b385a75efdf69fa6","hana-spatial-intro3-polygon":"02240fdffd7b30d7d5c100aceda7b9ce8553a310f6f2413b27324e23c6b6331f","hana-spatial-intro4-columns":"ecb5803c31036f4f2a8869cfa65d7aa1f412ff28ec600b8548b34a14c4281925","hana-spatial-intro5-z-m-coordinates":"0f01472b635d4cb93bfc12c8908fcc4258232341042bc0bb3accb32b8ccfbac2","hana-spatial-intro6-srs":"e5f142f00c592b8cf80eb1e1f64138e52d408893c884df9b3a6f09b2e8e216e8","hana-spatial-methods-access":"f62b6967f193cbb4483d34354ca6d7457e3eae4fcaa6682fb87e03615e92ad5f","hana-spatial-methods-compute":"046506b95bcea2b1d004fbfa77d5d724c3413361b94ac0926203df7226af104e","hana-spatial-methods-transform":"7c3a2beed6aaf12cecc5243f4d75a18417c9859a2df6ca09a24a498ebcfcdbfc","hana-spatial-services-apis":"47d22e551c7b15e358803a0f0327db7d1115512fbe8cf98b05eee976e74f5123","hana-sql-advanced-analytics-events":"8b68f71e638f5c8a4b4334a73e231e34f5624e953473df2d50a08478d6bd7ae9","hana-trial-advanced-analytics":"79bd516d629a9c37ac4476beaa22fb2d6866310b80b552958907d02582aa96dc","hana-webide-dt-getting-started-1":"5a00a3341bbb24f7077a0817772d772f5778a10504ececd052bd1f5d91bd8d92","hana-webide-dt-getting-started-2":"00e7865926354aef13f388caa69356b99957f9164b8c29504c4d4c7a1dd29fc5","hana-webide-dt-getting-started-3":"ecfcc76b7889161401863420606e505705d040898437b47368572680148c5ed6","hana-webide-dt-getting-started-4":"ec1aee8786aa95061d69b97878c5382f63fc836909b6dbb3f7f92861888f7627","hana-webide-dt-getting-started-5":"0981c0daad3761e7b070b0a48000e7e0accf220c4f11f0bb5683400261e162b9","hana-webide-dt-getting-started-6":"930208d26cd519d2ba6c2397499594c02100e4b30708215daff936794fdcd21e","hana-webide-dt-getting-started-7":"d0227467e9b9ed80118edc17a1a7463ca0c7f8264e2ea64dd3a4433fd1d7a6e7","hcp-abh-getting-started":"8e2a1b018c3c96650140250b9b567dc1b3d72a2b0301fe8f0358597267d3bf3b","hcp-abh-test-locally":"5648f8ab598e61b48a12044e4d83a46d509dea391c50b0f38ee2ed67fb80d9a6","hcp-apim-create-api":"952f46849ce653c373870b9c57095259f523d0fb287d6c9f820d15ba6bb233c6","hcp-apim-create-product":"8df7669e9d0259eea6ea1d2a5258cb157f72689b57d20b5d75849d5a908f3ab0","hcp-apim-create-provider":"e40765f4f3c27467af181ad7e0642e22978c13b5574e4d94c4ae1ee5d41871a2","hcp-apim-verify-api":"535a9ffd9d78fafb69df70810589480133deb894ce0e72e3ebb3e5861ae1802d","hcp-create-trial-account":"154688fe585f3acd8fdbf3cc937042a55cdcbd5c1d84830064f2b419a6930fec","hsa-java-toolkit-adapter-part1":"cb96fcc33354716662e99321eac692c2ec7547e192175e1f9cf7f28020c732ce","hsa-java-toolkit-adapter-part2":"543e7fc3a81ab128e6e32265e8bfb3500ef0edb900bbb8077e341e47727dfbdc","hsa-java-toolkit-adapter-part3":"0806bb49be65040de0683fa51e8d0e5d92147daff68250a622ad95b8ad086dbc","hsa-java-toolkit-adapter-part4":"4fd6f1e8f1f9e218e2b619a165392feefbb497fef63ac5659d797c95b5765fe8","hsa-java-toolkit-adapter-part5":"21768a00b1a8fbca990cbe96032e4c6339950e9b77c2c268ab0a4c5c1249a43e","hsa-java-toolkit-adapter-part6":"05199482e51fb1a708fa20b48835f72e58ddf1582390c82c83ca38b01dbc19f5","hsa-java-toolkit-adapter-part7":"244a475970e7fcb8e33b4aac23971630b0c98e08a64be41d1e56c9b1f92e37eb","hsa-lite-custom-c-adapter-part1":"23e1bf8d1063f1c8537c01db5ddda5e097766a268bc261794d07d84ce9a789fd","hsa-lite-custom-c-adapter-part2":"f7145cda92555d7a4630eb9c381ebbedcc41e135e614f8b94f1d00513838fad2","hsa-lite-custom-c-adapter-part3":"00f511f519bff062a982d9c1a4a2da918a25543b147cc1fde6a7db678b9a1f66","hsa-lite-custom-java-adapter-part1":"ffbcae12c313c197926531625d873d6d3ff2cc9c0a7ec78336f0343b7aeadf05","hsa-lite-custom-java-adapter-part2":"a0b6fca42e0c6d258613d061cda399327149bc6cd87791445e40aabaa351d289","hsa-lite-custom-java-adapter-part3":"6057ee26cb0f855ad447ad38a363c6b405833f7113d3becd961b68dbd824d553","hsa-lite-custom-java-adapter-part4":"bfc119ab021b89818c1186599da35d4053a23b0ddb24d6d0fb01cdc6af0ba0a3","hsa-streaming-lite-freezer-monitoring-part1":"32c33e4d4d6b1754445be3143fa6be0291743cc7a44313931e2a19ba41f5a2f3","hsa-streaming-lite-freezer-monitoring-part2":"1304e70c920104d024df32fb0135f024b2bc6e6448d49fa22be2b031e1e192d9","hsa-streaming-lite-freezer-monitoring-part3":"eaa933dfb4a0b86a8c201e107c024a3e6a8ab36ef38fc77754823506ac318e26","hsa-streaming-lite-freezer-monitoring-part4":"612087a7c35fd9b49301c81089306b78d5b3078bdeca7bbe878df736a63485bf","hxe-database-server":"9f6c1c264f41d2f23ba088bf45e8b9f6db456e85a53428cc0d286955335af486","hxe-gcp-hibernate-cluster":"5ddc56dc5f42e72011b7e113a6bd0aab54bfae2213c8bffcdb67b9ebc2a74276","hxe-gcp-hibernate-setup":"8babbf8d39364b19b65b53d9a90fd217a78320fe3048d0b99e191acfa20ca694","hxe-gcp-hibernate-spatial":"dd5d3f51aab9afc3a9f1451bb25edbeb0767a81df47b9fc84c65108a8a66a665","hxe-gcp-hibernate-text-search":"cc9e9803e36aae1f50251e531198567bb8603dca541286605cbec5e39489fcab","hxe-node-express":"5c15a474f468b36d0646828ca5b87f1caae8582c6040d2418a3b6705a5d27fdb","hxe-nodejs-setup":"934fb5f3b7549063f55a6befef99c8e193d87e5aceec5aae358b210ad6a7e03b","hxe-ua-apl-binary":"50db97b9d952f8532323a81daba02bb0a5de470b5bc7ace334107dd2a58190d3","hxe-ua-dbfundamentals-backups":"3daaed6e6125ef48cd36bbfa9da81f0a498cfe938806c4c84c38ba9e4652869d","hxe-ua-dbfundamentals-odbc":"81666198c514ab0ddc6449ce41933703de1a29f3069bdef2628431156a15ea19","hxe-ua-dbfundamentals-sample-project":"75a4486acd527fdbb1f03c3befea23fbf506cf0d9c70e558fb2a19b5344925f8","hxe-ua-dbfundamentals-tenantdb":"966e2a42008f25ea0ff641632789994b34ec06075dcc9f88592b736663c751e5","hxe-ua-download-binary":"3fe896351c89b5627e6f947c9f2e06b7a87fb1b809f53b250e921b7486ab14e3","hxe-ua-download-binary-xsa":"9f1bc17df52affc74185a27d29ff545713888a905431e3d81901030f07851b4c","hxe-ua-eml-binary":"03d0d945149b036618a98bb4d624f45d24cc7b1080a1221de7be98cb2d7f7aee","hxe-ua-hosts":"f7ac771267a11bdede4aa6f24e0d2b70012216d1502e66bd9ac78ee4339c2fe0","hxe-ua-install-hdb-client-linux":"00877c3ff6d3eedbc76ceed792bd3063c815050a9380def712b9cf0a32a848f7","hxe-ua-install-hdb-client-mac":"f4aafd38d9b6ea7b33dd99d04d386e4554cb8785d480c556dd1741d077787258","hxe-ua-install-hdb-client-powerpc":"5a8bf0b1365a57d4ced456b2e2ca77e02fabc438e1768aad38cda2631058097d","hxe-ua-install-hdb-client-windows":"9c281c1cf48e1aa1c5db0e359e213f15a6ed59266c5ff75d40fb5aa12a66a087","hxe-ua-install-using-docker":"43f4c2792d187c3a82898616489e4ef73122b36b364ba1be9d175bb7277bff6f","hxe-ua-install-using-docker-xsa":"036ee3761322cd743e3633cc290ed8feb803c7ab0938275c069cb35ba96c060d","hxe-ua-install-xs-xli-client":"53e4bc6ad032e1ea1f93366fc388f8a218857eca1ccbb40549a452cc66919678","hxe-ua-installing-binary":"748d787866ebcb6ef5a0c3a349153f7e43f4d0f229039a6ca85142ed719979a9","hxe-ua-installing-binary-xsa":"c48c51dbfc630c8c30fb67dba0732c17046f29b387354cd8a1e0f3dcba9136a0","hxe-ua-packages-binary":"36b3c30f1ba2454ec7d421413769b081cd0636c80f7d4a5ad7ac5567cb9dfe14","hxe-ua-packages-binary-xsa":"864497194e50b3381a703f5bf6eeb35f06a00675b2b567094ab748c10d5ed396","hxe-ua-predictive-afm":"d461a71be5c5db5a2b87b34150d831ebee880a68379daf6b210fd9bc6897b065","hxe-ua-predictive-getting-started":"bfba4f3dcb84a2c2027a061dd029376a494bcdcee3bdcf374cbc51fba86eaf26","hxe-ua-predictive-sql":"70d6e9c5c3058293ad57f3a88f655db6eaed2e6f25b0443d151ca876e4e872a3","hxe-ua-register":"91ee04b3b807338b8c2f432c7459e58f3532629ddee01432c7d3363bafbe62e4","hxe-ua-sdi-binary":"6454c0e27d92ed8ba089097210c2cf1d92ec8a35b113a3aad458811035918517","hxe-ua-troubleshooting":"ec853c4b622d6c1b0d0386e42f1ca70229728cf1ce5c5bdc978864d600dcf73c","hxe-ua-updating-binary":"7c05d5c0cc2bcfc231ba03116f2379355b3c0431c653f81eea75656ba2bcbf40","implement-subscription-callback-multitenant":"a441b4f3d2a6f21fdd82420c2a67ae5d17607baafffb229954235549c08d2757","integrate-with-work-zone":"937f75f4c19b4b40345d9dcd969e2ca0b0b7f35169021049ddd3576ede86df64","integrate-with-work-zone-kymaruntime":"3bb3b79eb9d8b9129e240188079a151bee525060ceda82fb54d744f93f5e719f","introduce-multitenant-application-development-kyma":"46a8922f2e535ddb775996945f55bce8a7de695747e60e142abad376cdf3c5d7","introduction":"c9f7bf8cc21ba3209de6fc7723dbd8428574c0716258202b62039134c0311634","joule-studio-agent-extension":"d8dd699f4fc20ecaca010fb77eca7b78a79d3508c5a46cc2be86da1f7cbdf7eb","joule-studio-bdc-agent-create":"bcd67616a77bc07cd222be5dfa6781ff3e40fe2a50dfd18a6b233f3516676cf0","joule-studio-codejam-0-overview":"bc2c32d6d1d330bbb1643037b5a36c2b91052372a756abdaba67bb67eca10232","joule-studio-codejam-1-build-lobby":"22923792905cf2d90e59fec157b7fa57846298f212ae63b9d35f6d3ae2f11002","joule-studio-codejam-10-wz":"a22d08155d54628f48a018ee6f4d77cc6fe071f781c9cbff4c160c222e98c177","joule-studio-codejam-2-private-environment":"c9616f2ef65d7c730cacb3be69b1241ef860309fcada89ccf2856cf890fb6220","joule-studio-codejam-3-skill-track":"016858f43c815a86c4743c27e0dcd5d8fc72fe0f35d4f0bb9fc61707d9a7ee43","joule-studio-codejam-4-skill-delayed":"17fa806b978eb01ce53b24005988f32b5a1280aecd22627f90cd41a360a00456","joule-studio-codejam-5-skill-create":"bb7c60bf8aec40017303b06d50b04ba7fa1fb1561c2572c131a6e120272dc3cc","joule-studio-codejam-6-agent":"ad3b3082d02300e1aa7f96525532737361977c2afd281b5b233853d745e095bf","joule-studio-codejam-7-test-agent":"a101280f880aa38a83d4e722120a9681ca93dabf4f5d751db68c0119fc4d571c","joule-studio-codejam-8-subagent-mcp":"dbaab641b02c3d36ac404a20c96c2eed74f6183d2dc3356162f45561d22fffc4","joule-studio-codejam-9-release-deploy":"19d572aa643bb197b4c31a7c427d26597246d7dffd055b02125568140ebf7909","joule-studio-cx-agent-create":"0ab9c433e8f04665ca0c99933e3628be1ab731d2a7cfde2b7c59ddbd91f984a5","joule-studio-fi-collection-assistant":"6130b71d2c548e390ea8b751803f5ecd4b79760382e06f5eb999793f07f58e0f","joule-studio-fi-collection-workbench":"e47178374692e2bc4f63593c22fb41136e0e68b8d52c13d0c9190943c1a06774","joule-studio-hr-onboarding-assistant":"79992ff8fcb30446931048cf61cfddcfe4cca99bd7b3bdfb8afa129c03fbc5c0","joule-studio-n8n-workflow-create":"87d72dc776f8147fe5ebbf05a005494a8f5294299f36898dcce2f0df023ecee5","joule-studio-scm-equipment-assistant":"926bbfc61a3a15b41b7797a76d1d21fc1316db411073af4e2fddc873022e6c8a","joule-studio-spend-supplier-assistant":"d0e96d737d11d7e7c6431a3ee20f399cf63601ea55e17f42b91a4c40c516d0a3","joulestudio-agent-create":"c7a9cf8c05a60f301f77825310bade36a4f7a80fcc616f33f8a1530e125e5a27","joulestudio-document-grounding":"5388a842d036819f7a60a458527103077de87d1075eb8a9938af755387707d6b","joulestudio-skill-action-create":"ce31456b583503da5f174b2f09772d065227c80eae87807396d4cb7c5453d89f","joulestudio-skill-action-filter":"1c1a8e9ee40421d29bf2f5ad16d935c243f0e339e01b60e89237da5b5b3e2766","joulestudio-skill-create":"b0a370b199299a9bc9624c143105125eaeeb39d6ccc9ec20177d89edcc7cbd86","joulestudio-skill-environment-setup":"ce5d9615eb7158f45e798725299c9467ea3559c8f40aef1c541802a9819c8ecc","joulestudio-skill-process":"0d3fd9216df43ec53361a752eff3798684fd60a9a8a9cba466c91dc1a9d4eb35","kyma-create-service-account":"673aa7dfd39065a8c3a7be1e529335fc31c5436875968241b92988f3d3bcdaf0","local-apache-kafka-python":"60678666af6eafd5a6cfeaad6d1483bb9cacb1deedc1d587d7045144a0c4ce7c","luigi-app-basic-setup":"15e5c65c9c161d426fb9358e8537598f4a1a770d244aa99c9a9773eed6429226","luigi-app-localization-react":"bbfab0848f7dc45d5d5c2594031d698cbf250a6da01a62867205bf644f83b2ec","luigi-app-localization-ui5":"3ca9d5954b04d7132bfe0e070e26cc25d512972417108a5c84ba8f58c8f37f05","luigi-app-react":"60f2bf306b00c8fa73d31676cba3981695d20185e9e0aec96bdaa2e2bf2bc543","luigi-app-ui5":"73f2554588629e60eac676238ecbd5a47ed2fb676b114e4ad82cea8e4f35e3ad","luigi-container":"772d70a1651689ed5e5f4d22aa99a78c5d84671b2d0f21859a03b9b6e5a8a82a","luigi-getting-started":"b143c366ea437e7d529506911b45049e679e1506a7ee84d66d2383835453ff80","migration-assessment":"8f43c9c372cca9b9c6c521f1cdcd2b2f334ecbdcdb298e8bb6309ef989c978a9","migration-assessment-enablement":"9e65a25758eaedc1961a3b713860436f95c4e4309e61eb06cc329b433fbb38da","migration-tool":"29273bc17f7b4c589ab23ce6d25e00867cdca7ec43dda08ad6c5b9e3576a4762","mob-app-mao-erp-app-create":"5949104763017d9c59e2711f018daad381c2ca0fa1ac2141ba6bf91c31732473","mobile-start-access-launchpad-site":"dfc8d53a3729de0c9efd45b40f02d8459466f3237c11a265cfb7248e78ceb253","modernize-rfc":"3190a321130bbcb668186751f6f0140699d840433a545f5021f66999d1f6bd15","modernize-rfc-receiver":"b8e94b0888eec8121dfc1493c73c20201ebfe29d87e82ad768c9cf7d38ad9e2c","nwbc-cflp-integration":"269a41d5ea9287b394542bc25556fda77e528c10f8c974b6894b32d07ab99c42","odata-dd-1-origins":"499c62ae6d95bf49871e2ed61b0458226505337402417d624362255943585194","odata-dd-2-standards":"e21efdeec15f34d4ae475bc5cc6ee193d3ae876d4081e849322b01c287a0e775","odata-dd-3-northbreeze":"62b1652ccaadd82af84af79a03840471846cac639d6856914bb10adedb70423d","odata-dd-4-metadata":"675ee679ce9c4716ed96c6c278a0e8d7d09fa054ab5030cb2ce037fd8bf58914","odata-dd-5-vocabularies":"1a47ecfd66b1e470e82c1f0925afc5befc803a0df453da238706ea07a0b9792e","odata-dd-6-annotations":"e12a7e139434bd59ac501e9d50f1115fc5f96267eb989a7f4500584b29bb3f78","opps-advanced-scenario-additional-bonus":"7822148172e95ef5e9d84f71b00f255abd8ebd40f7af754770e953d074566bce","opps-advanced-scenario-coupon-loyalty-points":"efdfe24c3f8b44d509e7bc2f20f13172d9103a87d3756bcd194a8dc8bc201895","opps-advanced-scenario-mixandmatch":"511cb1d3461896edb87c6cad134e5e2a571773d5faf07693738006dfcf133ba3","opps-advanced-scenario-singlecode-coupon-create":"69684211b28086a97a3b6c2c67fe55cc93acd7365d2ecd84712de576b231ac3a","opps-advanced-scenario-singlecode-coupon-redeem":"39eb81b1b15f68e02d980d8dbe2d8d561353cc9363a968d04aa770feaddc48b9","opps-advanced-scenario-singlecode-coupon-ui":"582805f0cfe74b16acfde3bc13ee777f512f42bfdba7c23ed088af414ba2b941","opps-advanced-scenario-transactional":"3c4a82b22fd3f124eec711f06dd137fbd34af7c45cbe5c9393c051169a08deef","opps-basic-scenario":"5495c1bcad18b88e238b1dbe90456dbb50a07366808e563a5ff37e09f45d9bbb","opps-basic-scenario-coupon-management":"a2da1cf9269111e9853f116d702dd1e3bb9b54c3d9617a406b82dde574b6e408","opps-manual-setup":"d72237b128bd8f90b8cea50cb82b7f74745ad0ca9e7c68b576a9c2b2420d5915","personas-access-learning-sys":"15616e5df6e09f844192d02d8c0cae4a89334919250dc1f82e43eb1257c35287","personas-mobile-workbook-build-flavor":"5a1d4d884a82f6826dd3aac645daa5f871865f8e313b7297819212f19bd22c36","personas-mobile-workbook-create":"0e49edab20eb1400c7380ad32aca5cdb3b44bf1a049d78966ef7ab338d44e47f","personas-mobile-workbook-optimize-mobile":"e5062b1c4538e4743075086827a74007de57947e146bc3d505d3b53e01cd76e9","personas-mobile-workbook-testing-flavor":"8e9b484ae4e511156ea1fe72d2fede02bfeaf7c878331a0a60c286cd1ca0fd66","prep-for-prod":"3b24d55610d88862281bff1811fb33c045d09c5081d33237c7a4ee7cfd18dc57","prepare-btp-cf":"8850dce63f1dc5285097e999a5fbdebdcb824719c331d6f1deeaef1ea12e8e95","prepare-btp-kyma":"08a10c084751341f2c28a46c9db7e910f08daeefe1d79c53b51095e526a074e9","prepare-hub":"3b7274d6e0fd2331e3414e5499dea00479fd8f921612748d8ceb8eedc876ab47","private-link-aws":"9edd9fb9e6a1e8803dc59417d2edda4bfdbda30bafdcf31580796a66d9ae3799","private-link-aws-kyma":"8ad768a9285db7fae3514a512fbc286c61f5a899e8a8182c1f6c70b1dbc43d0a","private-link-azure-kyma":"96af73b100c5aae42467c879cd9d2a6c94e985b5c566b99d38c0fb3ff8feabeb","private-link-gcp":"23c65f9cef16b309a99435c112bc1bbf2e25a708d0e1724da816ccc04340b533","private-link-kyma":"8a86a89135bbadd20433d2c58a7fa3e402f5a1e4a5413f475e847085467877cf","private-link-microsoft-azure":"e66460336872a8fbb350a86a9b06d83593e482d4e3760ff6902e0338b47847e2","private-link-onboarding":"fe072654be7ef64daa2c84c18499d56163977202d0f28e3324b29cad874d5cff","private-link-service-onboarding-aws":"6a4add3b447b9baf29b0d9c495c6fd65bd6f7de9e78058d8572d3b15f8efab6e","productconfiguration-ui5-app-create":"7865f50d37c7c4119a751b0cb7b8242565a406ce657c99ad274e1fefa6dc2d81","pubsub-outbound-topics":"210aadbfa1f16bb5bd7b86e14df2f3c3d7ec1b614aa7b8e20cf6b9491d7ad380","pubsub-queues-subscriptions":"27d075443a78eb37d371385b4151869924fc97bec7e1a9a1587ac51dc9584aa9","pubsub-view-events":"7f48e3619361315b514f3067ee72899aaa84346a62667c0c9ba666e55812c99c","register-multitenant-app-saas-provisioning-service":"d2efb6226f84c4bb5ae045222f26d91e328a51a4769f8b41ece49fb8b7885d79","remote-service-configure-connectivity":"b4eccf8318d294ec1735028c5b00ac5ae15e55f7afa0193045c576fc8eb1a86a","remote-service-deploy-to-cf":"c1a9f02b94a98737713731a41ed548c7741d50519be94136de5b4f9c1f58af30","remote-service-deploy-to-kyma":"1c1f82a7e9ac4bcd7159cff59f8d560f6706c91191ac2cd22fd618aa3b2a92f8","remote-service-deploy-with-mock-cf":"563303b8e28d27e8ec4617b127cde7841b373ab602afa18918073df9cf8c8e67","remote-service-deploy-with-mock-kyma":"486148f91912b3e1b056675a6dbc5d0265b976fb3b2a68ec27cb229cce906de8","remote-service-extend":"0e7792ed37908b20830841c22891f626bad5137d9d45f72a3ed3b5545a7dddcc","remote-service-intro":"f990a836bf379b1e8d77629cbe27b776d74acd6edbbfea5547b63eac0d160ff5","remote-service-run-dev-test":"658b2c7ece10d7c5518fa9808c7af62568c5b978457265819c65c881df784e6a","remote-service-set-up-mock-cf":"8963e452a5c91606c4a3ed1b0a5bc0dc237ef725e1d2d347c44752ee379b57b7","remote-service-set-up-mock-kyma":"0a1508371e46bb3d93883ebc7c036b74e854de80db63bf86f9753f5b4f08f8e5","s4hc-abap-environment-create-custom-api":"d992d7fe706d07f6fd77f717d8b6be2de61e81729389277c0c1acb7f4120b61a","s4sdk-caching":"c2196f11131ca3c2dafc16bd2d2b768eef16aa5956e8b85d0bde14bcd9b8e191","s4sdk-cloud-foundry-sample-application":"7fbf4b3236a401ad1d3dafc444e971d133fe272748265c6128fba157598387fa","s4sdk-odata-service-cloud-foundry":"22a28902972c8a961e290e51dcfaa85b5fd89827f6cda66306042e5b329e2509","s4sdk-resilience":"a4b414b9784c666a0e6c72ae647658d58d36cedae78450360fc4a1d73b8c5e53","s4sdk-secure-cloudfoundry":"9ea9d5bf8b2ae9077a484ca74753f7c15244a015e1ee51e005f3bd14def6efea","s4sdk-setup":"6fed58738b142d6cfd3401e42955c87b47c67c700467ef4da79a2778902e34cb","sac-guidedexperiences-getstarted":"8ae50da46a0b7eb7104dd274d629120bbc715c5fd3804470530dc6749f7733d2","sac-secure-oauth":"d4727e80dd29ee7d4a9f13bd275008faff70792920b6a450a971723d2be65c41","sapcommunity-start":"d015e4e6266d6aba3ae76f8680253220bc8414d00b08eb5b3fd355fb32d747be","sapui5-101-add-routing":"8bdc00741293730d0c23f7f9e54eda6a9a7300923f55113100e03ff2061c254a","sapui5-101-create-project":"fb76ba0da932aa37de3e2a4aa26141864466f83145e66fd4d5e52c376a00e258","sapui5-101-deploy-application":"8b3a9a4c26dd6b7a87f4bd3ec2be7ccd15f2ceb6f57d4b302f7198356e69a73b","sapui5-101-improve-user-experience":"9b246dca8c9320851d031a28e4b877d934523d910e6cf1266e93154528ae9ad7","sapui5-adaptation-application-publish":"fd23fe036212931898458cc183c4694c07c1324f7bf312aff7537fe8bdc300f8","sapui5-adaptation-change-variant":"1d74800298dc424f21c76d36726c58e9a8709100889a3d3ba5965339af5eb4d8","sapui5-adaptation-extend-variant":"caf68c5c56fa78a18ea03bc2ab1b5bc30a79b7e0288f36addaa73e0776f8c443","sapui5-appfrontend-create":"d06340e4d7f57f6c3d495547aec0ffe6bda8c02d4194faa595c3d5e9f64f12f2","sapui5-appfrontend-deploy":"ea5b41c2fc8261d8070e28e4a8aca1e4d7a94a4ca0f7de465913a87dd3b5788e","sapui5-fiori-cf-data-visualization":"c12ce2c65f00877b18750106e8c0c415ed8e741d949e827d1740a207a007ead9","sapui5-fiori-cf-deploy":"d4c3699143b58861fd1355e27d4e7c69e52c786e52e926fd877daa101e5767fc","sapui5-fiori-cf-display-data":"e72ec2fefc8921e50ba6176f571a083f347d509fc423685ebe76192f698cfc9c","sapui5-fiori-cf-fiorify":"0407b439b80a116b23a27e131c0f3fa7961b6a0e9e5ae6778d5eae438807d6d2","sapui5-flexibility-keyuseradaptation-1-introduction":"f296f5c4b36183cf8e90f93648a5186e5b521bf241336e257e40f31e2b6a1f66","sapui5-flexibility-keyuseradaptation-2-deepdive":"a130b237acee559f38902a46722f7c883697bcc7f3924edf41be3702b4c44072","sapui5-flexibility-keyuseradaptation-3-advanced-topics":"61dcfc71edebff10e7ce85c9e709fc4fc24b49cdbaedaa82c37f94e485610220","sdk-android-app-link":"d1e18d45f8faedc7072dfc39af3edac56b63d782bfb7688899f9b8e7b5ac82f3","sdk-android-flowjc-custom":"6af310659b95f32e048a8d90281e016e4a24e4ad98f3ceaacdaaaa8c0ef3bf74","sdk-android-flows-custom":"6460c9fde1c68a5ee6e501b50ee461b3369910977d7d1bb9e37b03c1090045e5","sdk-android-flows-onboarding":"36efed3e4975e9686f185d24a94c26702c19f897a515c7d8786a1f9c42d71b0f","sdk-android-flows-passcode":"4e1fa0f94d4c0809f233643be863dbd31b163c1b42d0e1158f90f554c5d3b7d6","sdk-android-flows-restore":"9a657bb0d4151a859f824dc25c6c7a30a7efcf312872a6447f2b5f0cdd6743d1","sdk-android-flows-theme":"ff4b4fe239270a414d8651323d1fd48f7ff57e732e58e5f374a63bf0f2efc8b9","sdk-android-flows-wizard":"8345552aa96be2040665a1ee740fd01f12f1a3513b514eed0117b0791ef91936","sdk-android-flowsjc-onboarding":"82cc81eb094d4c2455b14534b8e858a5af2fc3f27e50d0a768de6d9ff454f237","sdk-android-flowsjc-passcode":"79479ce2080b33174f26b1a20a55a3ed146c82776a6387bad0118c5f6cf2320b","sdk-android-flowsjc-restore":"a3675182a7dff929546dfcaa8f510d3736e434f2d887a1c6d08674bc08b912d4","sdk-android-flowsjc-wizard":"3a24daa09c800df3d227c67809d183f256ed169109374a1e32e69784a2c70720","sdk-android-wizard-app":"bef07f53f9bdb317670c7fc9df5ca13cda117b04d01965150c1b066140fa9377","sdk-android-wizard-app-customize":"1c2797a67c53dbd2a7abebdbcf9c31f71027cb907fa4898c082e99a0bc6433ae","sdk-android-wizard-app-logging":"d14183d3bdb020d42c321ad11ad927bd5877ae97f550657566c30f8a43964a8f","sdk-android-wizard-app-map":"a3507a88477c21e8290344409dec7af0f66453a5043d8dbc3c8ebfd40620510c","sdk-android-wizard-app-multiuser":"15c5b82ce46e627aeaaf0add9d32929f6c84bb0ce1244e15dfd56a2b970e63af","sdk-android-wizard-app-offline":"b9367aceb43449bb46b3f6c9c59facab7bf8fe6b316a63c848c8e2bc0b2c2b41","sdk-android-wizard-app-push":"767fb661da3cf37f612c64c65c799ceeba4fbed74a1dfcdbc19c9b276d41679e","sdk-android-wizard-app-translation":"c02b86a109042b00ac85421247f09d79b8cf2fcde0a9efbfd4a8f247ef363bb7","sdk-android-wizard-app-usage":"ffb4c33da1393b4fccfe8b70b62ad906de8eab9e685aa3f3a065210f4e46628a","sdk-ios-assistant-app":"c9a5ddf757a89a468329c3b0967a00f4e69e609b8dd9467a11ebcbc3b73e82d6","sdk-ios-custom-theme":"67e08b7cd9813e2c207761a04ea3be90301d9c50e9a1b25eb49b561fb7ddcde3","sdk-ios-logging":"592302e4293b730f2581ae52187cc29b0f26433988b63df8c57d275a21bbf9d6","sdk-ios-multi-user":"a6045bc779a86e5a82da518977aeeb6ed96070c23b038d2aed3cdbd0098f8d0f","sdk-ios-push-notifications":"abf8c775b81f6e9d22ff6daceeee55e613cbb93ce89c5d949940a1a9a2e6f228","sdk-ios-setup":"7e801f8212fb5df19ea03f2d8bdc6c77a62e6fdc5de4789243aad9b63b1e75e2","sdk-ios-universal-link":"8ead28b155cdbfe42008d5618f212209f14cac5c5b870a0f834dd4bf9c62c532","sds-part1-configure-streaming-server":"8aa97cc41022d460235ada36b88aaa8d2c8d64692921674e830887d6880a3a82","sds-part2-create-streaming-project":"2f69295fc8c9816779c955da995b938641726b001c9363fe5ddf020250b3aef5","secure-multitenant-app-xsuaa-kyma":"8ae8b1e2a9e3be48fd73608fb97b1efb3d41f15e0048ab244da6c9ff8c5c974d","set-up-bas":"1781aee3364fb7794d0ee2fb09d9870c49835ded9e69ddefb2e95d8f38021b02","set-up-cicd":"3382d3830bad73205674277fb0ce3e75bbd3bb0ddf0567c271acffeb97950f5b","set-up-cicd-kyma":"2c8fb2e716d766d5b5a8058f241b375fb87c7dac038bf3dd25eb4c759b5ea01b","setup-aem":"990f35952588a14eab4ff7ad5fea29fc0b49ba9b1f128c34cb8de3449c7292fd","setup-s4hc-aem":"05341374048e53c6567a24c21f2c987f1523c5df045a8bc2f43df426e7203870","signavio-process-intelligence-machine-learning":"dd8c4914640ed7df8ea510d69df971b481179147096c48307265bc6a89c88498","spa-academy-run-salesorderprocess":"bbd2071c963e1ffd04260f0b5c746eaefa0d9c6e66560c7a224ce56e982e7d42","spa-academy-salesorder":"105780d1b3eab75e45ef9dac271c285e7f3699ea7209bd7e2b0c96064219892d","spa-acquire-automation-store":"ef1e98bed489db584bff1cb60fd55357b5be64999a3783c92ac9f459f0fe8e2f","spa-acquire-businessprocess-store":"7c09156e9d453c20db8d9ef64131fb06a51f1a8f5cd2ccbe35b5fe20b5b49d06","spa-add-email-notification":"268014efd84f9bcec59e49d224ad8ccf760818684a7ba188d33a8fac0275bdc8","spa-add-links-forms":"547e6dd428f9515b0ca087ada56ba4654e5d1979a061c21c0b56d18232070e25","spa-add-list-input-decision":"b63994301eeca03e4765b474786f89e9e8ef0a8c52dfef379bad21ebbc126b65","spa-add-sub-process-automation":"fb552fae3ab43483d7ff6d04655385f0660df445f125264fd3a817c90e956990","spa-authorize-google-oauth":"141a8f4060914d2fb4b1b640cbc5540ae573fcd841032f5f9bea7799624a66c3","spa-authorize-google-service-account":"01b0e4ba9f8bd27c68551c4717da873d0d464a7383645f6fc36e1ab344bd3a3e","spa-automation-webservice-destination":"0ccdb9a2bd8a8d26463f4894448788268df1812f1f2fe835c4e59a42a6a06356","spa-bapi-actiongroup":"a959cdeb93037215764e52fbbc3112873ed7fd3cd9fab4ddfef1662cd10ff342","spa-business-partner-action-create":"a7f7d4e72d83d132db52a907d7fae155c89a2fc318bb3d74b0de0c1dec7ce6d2","spa-configure-oauth-google-platform":"b8eb659983be0a93259cbe48bd302079b14d8826a46289d6f8b37a6bfa8f031f","spa-configure-workzone":"cdd6fae911a91c84161a29f53494ea71e2f062209bcbe93926f9389f171f90bc","spa-consume-actions-cap-action-create":"c5e4ffe3df4d84265dc257addb842384366d233d9e1978caa0d4f4e52f7e55dd","spa-consume-actions-cap-process":"6ae65096a29ce2e5db65d9d352b50e1243180c08936c82ceb6ee6059770e42cd","spa-consume-actions-cap-setupenv":"75f9915c8d9662cbc7580b534e8bfe5238d612fa726577124784d47d9b84a0a3","spa-create-approval-notification-form":"6008e01eaac695a4b8ebc81d98f25c0019d42d168123176f5ceb4a3de055a809","spa-create-automation":"c727447fd4fc085d1a83457a60df58dc59e3769567c0c3cb857f16517402c417","spa-create-decision":"578e68b755244ff77a9375bad3c9c4ac506cc289d19c5c8ee251e0a292d0dfd3","spa-create-destination":"eb2d4dc011ec2e90a08419e8a838621047a9e519bb5e45eece84c40255b92747","spa-create-excel-automation":"1dd51f7e78e5045404a8c3dedd785cbb716d8ca84c0d016a55ba4a326a3cd22f","spa-create-forms":"4b408981ca99b157967d4c5cd9c082a2df0479a1f7145f066a615e477baee7dc","spa-create-outlook-automation":"440a245e02efbdfdef0c356943c056db441a849b1ae2f3bd5184e7f06ac22481","spa-create-process":"4aaacfd65ceed73f5ab1a51cd33c1ec141d4488ba7ee0218725ce4d40dedb3f2","spa-create-process-api-trigger":"c5da94a2ab13da5d07754b0327450192975969e5fcb913a7c946976119f6067e","spa-create-process-condition":"d56f13bb4952041da31cc351f516bb87973647a28f04fa3f0e3ca85572c2debe","spa-create-process-visibility":"ac7110a2a18bc3bff7d5353f75c74e5425bfc38f0757f0ae188f0faffdfe353c","spa-create-recorder-desktop-calculator":"a1643b76115176fff5d14f6b9b01f94f836694eaa7f086537d135266868e50fd","spa-create-recorder-desktop-clock":"b88b860e0b59392cc06d18409de167da3d83f0ec62828fe43470a6f544074192","spa-create-recorder-s4hana-cloudapplications":"13d8d3095edacedbf14744839f7b5b6acbd7d79cdec693dc9eb2989bdbee2c26","spa-create-recorder-win-gui":"1434cbe9080e937b7deabd8bdf6c764de15cce097475fd7d852ee0f953f5ca12","spa-create-sapui5-task-orderapproval":"96c426cf4511f13c28028d1723b9d92326cf58e8d7766221dd72179bf78540a0","spa-create-service-instance-destination":"8e6eb41dd462daa6a6932263509fa50c63462898eefaf98fc5bd9901082833b6","spa-custom-variables":"460192add8bc82c6e81a631444e6c6619ca56041fdcbff7bc1874420796633b5","spa-customize-win-gui-recorder-automation":"3a3396e33003311050e61a0dade379bb61752af1fd3a4cbd1e53179a7dd24b42","spa-dox-create-automation":"dca4c231082e656e6ad4c098ee0c196161fd81ce4a6ddda16a14e6246ebb1d01","spa-dox-create-decision":"a4e2e1db551b073b72e585b8506879f7159e76794e6646c505e9226383b75e3e","spa-dox-create-process":"ba38a42df25fe53b474fc5da81791f9d0353876e17b9768b46491515106a5311","spa-dox-forms":"61019737fa98f1f3aad1396de2a26ea9f0f896a7d30d4bcdccbce20628a680ab","spa-dox-run-process":"cbf4a3f98fcfaf58bf0c92f73157ef960e45941005c8d9cb443bc8c10ea354fc","spa-dropdown-value-help-filtering":"17c6b314f68a970f0925aeae6a6915d698f7508b8168061e99a463079ce0014f","spa-dropdown-value-help-filtering-setupenv":"881536b998d756da0717e1ec8a92aa21d87d8ee7147fdea69f53b293881da91e","spa-dropdown-value-help-filtering-test":"5e2cdafe11455f81b41acb40c73016b47274e0dfd845af4a96be10f6ea45b4ba","spa-extend-outlook-automation":"cff29dc96779b9bdf9e9889abc0e8e18d6b8297f22b5351986abe53abcb14c42","spa-forms-table":"4fbae74129df082f2d906a698f3359eb99a664cce4078e709575787a6b7832f6","spa-integrate-excel-outlook-automations":"a743c6166ea8baeea3e32a875635d44b132f36fc1df6080c7f7c2e8035f88f5d","spa-integrate-sapui5-task-process":"2ea13ebe943abffff43029a7ea630982a167c13cb3a1b5577e8fb734e849903f","spa-office-integration-agent":"2205ba8821176fe824332b6c5b218e51501c902f8c932cd6dec078c306340dc0","spa-order-management-int-1-recorder":"420c54ebc33a5eb8b3335a80bea99471b27c2791d1777c9d8603cc535a94aef6","spa-order-management-int-2-automation":"0580da761539f49b0db90a360a22dc16bd772749070524e076bb01df7158bb7f","spa-orders-management-1-capture":"4ea6b5b3b51f666ef595bbf916af8c029e15fde922ab8207cda82088d59ff355","spa-process-action-add":"20dca941d95ac357a570b320465eaddf7e443a86ec1ad9a1ca05a19150e884b0","spa-process-action-checkbackend":"2c36757a9fba81ab4cf83733dac3aff15f6528b3e72a383048183266f8f413cd","spa-process-action-create":"0ee453d6c35df1a9763c573d127319dfa6617e6eb8d692175913986f69c11148","spa-process-action-run":"61342f4a35b55d0faf8ce8b53624c56e262dc3199f98c252eda7c069b64ab1d2","spa-process-action-setupenv":"f691c0797219b3a9970a9e246cd1cbb87f5f0c76bc362f3b310f41ffa5a31228","spa-run-agent-settings":"885f755d1f03522f9bfadc4a097e6585b0410c03f3499783a5e209cff7c83c74","spa-run-business-process-business-site":"a87868485b8d1a0df3164218c10b7bb3c1671136a02a0d1b08633fd3398c6f02","spa-run-process":"a3c34f4847cfaffbeba83d102b29a7a3038bc16ae1bed21f19ba4475d95c154f","spa-run-process-api-trigger":"3347c79221c70644d005912bbd20d37699e3fb31ff041d7ec584c032996424ec","spa-run-process-automation-decision":"152556b7cd346e01b5a90bd614e1e52e4f0b789b5676396d1bd0174b657d7dfa","spa-sac-api-trigger":"c3cf5c124c05949767253f1550055f0fbdb8193823d0bb6ba3d3c054a9c33766","spa-setup-desktop-3-0-agent":"9b8810ac3cc384ce2d725edafec2098352b3872d714fe9239dffc5bec8f96905","spa-subscribe-booster":"9fdec3a1cf9b5fa4919c9b9a73e922047201f75a7f9d3f3630b4e3d4637965a9","spa-technical-events-automation-user-task":"25864b59c6399f2e3f58071f5e33725790e3a09f4a1845744947c3a83a7c0ec5","spa-technical-events-capture-declare":"92df9a7e92d02c922a07c6f40a18ba31d91df5821562b87cff8d90f4cf680cc9","spa-technical-events-release-deploy-process":"c5c8835a6da7f2b3010fa4395ad1d382cc593ffed68903be9dbe42fd998b6d2d","spa-use-google-workspace-docs":"b303860e4ccba7cf6caaaf734ee90c4aa6f845612c1726d8b5fc03cecbdf664e","spa-use-google-workspace-gmail":"c8971f4c71533cd3f86686d4c7cb5703bb46383bf704e1b8a2c742e666b6e0e4","spa-use-google-workspace-sheet":"7ec913bb98f7b9ef0e379a8fbd46874bbb57e1ef2bc5303a0ff32488b81853b7","spa-use-google-workspace-slides":"0a8c0ad58eb098191ff9e08ab65f47cb48fa42b3e0f2d69bae242094ce6739dd","spa-use-office-calendar":"78ce88a620e2f687c263390aac51ca5169e09f2ebcecfdc7dd06947dbb7f09c2","sth-add-text-fiori-app":"f150aa549ffe786c65f152903649cb8ea421e72aee9e09dc5d8360178118b7d3","sth-deploy-fiori-app":"7993fa1cf448a000f0073c90564d3c76a2f2cafadcfad570ca5795797bdd04ab","sth-document-translation-apihub":"d67588ae0d2b27a4cc8c736545f49af34f2fa790a0367b38d17fbb572a358e1c","sth-enable":"21de00ba898186a8e62981fb4b8cc4d98c270a81a332a0c9aacb12aa4703c2fe","sth-enable-document-translation":"8bb77f19e544531d122af55ac5668baecf596a23994e0d5fc1a2e8fe4ea4cee4","sth-enable-translation-plugin":"27dfb11ec5aa39a62d5c8ed4dfcad82e7ecf4076ed4ac137be9c87f1fda2e6c7","sth-prepare-fiori-app-translation":"56c632839b8e783e876b3108bc6482c9f0c58fedb18445bef97b44a710ee00c1","sth-translate-fiori-app":"1dc8e75419552bf1252412d436ac56675145582e6b73761d6431e60bece27b1b","sth-translate-java-app":"b8b61aec1e5c737606f635fced035f0e30b508855b7719ecdc20adae53172295","sth-translate-properties-file":"fabf9f915fc02b79ce73d2a219fd1ac11a958e420a689f35d6acf110de1b00a8","subscribe-multitenant-app-customer":"30c6cb10f3b46058ee6acbca3947aaa54ccf7c141256b99e6f1b2380b210e4f8","teched2025-genaihub-basic-trial":"4c3f9d7292770fd0ee9b0a0a1ef922a928ab6d0b5d822e087d19c6b6b16ae4b8","teched2025-sapbdc-basic-trial":"d87abd3dc85fd2ec52455867cb16a0a3aefe8e81ca3cd39dd1d78a0a7ce32b7e","teched2025-sapbpa-basic-trial":"592f900f742dc48110e0e4efe234cb8882e5ff43d630ace471850e631ed27aa3","test":"1b2250d1020537cf9312aa165439fe687c80e610669fe6be784b2aa70f8b2baf","test-tutorial":"4872db5be7cba47982d2af8385d8a66264c4b11b416a4c077fa41dfe68cfed9a","tutorial-first-steps":"c613b460223f26657962c537be4b818b2ae1121644bc8dd3b541c009f02b3ada","ui5-webcomponents-react-card":"f4ba79fb8a8b2a2d11c9e732cb348ad69ad190767798a590d93c4831f59a484d","ui5-webcomponents-react-charts":"eae482f181d069ce83fc635d328cfaa230bf593339be13bd2368dd6667488957","ui5-webcomponents-react-dashboard":"640c47f86b15f1dd65898f4bd1711064c2b0a373565decd4998898f66256e1fe","ui5-webcomponents-react-introduction":"b4bdf020d76291b7d323e69c6e610314d9ca89978983c58ce89f85048c301d91","ui5-webcomponents-react-routing":"46ba58e6eb8aea4aef01681099489ffc4600a141f1e9676340a273b7558952d3","ui5-webcomponents-react-styling":"0745d628d1a37ae40873bf64c30531b2afc4b58b76c6de961801e7f72d0186f4","use-local-launch-page":"46605ce9c47552c9996072476ab2e16aa8dbea6e3641b599bbea7a6d0d274fa5","user-role-assignment":"cde8503c22b3832daa92927f5b72f0c7effc51ec552e8d2115f8a9f167a940f3","webide-customize":"b93d14881cb72e42a78427b6dfb1a37e98dcd3ce991363f92ac158d274846b75","webide-github-branching":"1f2839b3d90caa8062c83198c47b15c9c28103d23ec3e6344e508a89548b2405","webide-github-create-git-repo":"d3d131c5f28789d49da723be542f2bddcc8bf19bde82c0882cf66125db216b6d","webide-github-creating-org":"01129603a8e0721c95424b61b1dc3fcab75f46b11717f27c7dd114660a5ec91c","webide-github-import-project":"7b9f449973c1ad26a4858ea0135e861bbc0f95cc52560c0f748160ddfccbfe04","webide-github-issues-milestones":"1e65260fca9f6f95b5670a5944bcf44c768abc0f628c6ef0ed0f315c7193f804","webide-github-merge-pull-request":"5fde4bcae4ef32e706cbf86d8c6f3ff12534f727fbfa956615088e922864ea82","webide-multi-cloud":"8680b5ab64d2e27634ae38e70a10cfe1a12706b98c47c969a61adc7e2638fc7e","workzone-access-sap-build":"543aebaaa557745df7ebcd7f8101ff65268e952a310148be7c123597106d3bf3","workzone-advanced-build-menu":"b3a9b67299fa3d26c78425a2e3d2997163cc8ca30c6606eb612dd76a33afde7c","workzone-build-1-homepage":"98f90a10fb7c50afa90fb22de4e284c45b78e0374149cf4029e56b93ddadeac5","workzone-build-2-workspace":"f5abb4bdada6ff6e30351162537ad308d59f3c73a48b477a89b974a845359c9e","workzone-build-4-sapui5-app":"e943fa940cfada802c903d50eac8d40f85e0001b5041fa7036cbf458888b6dad","workzone-build-5-url-app":"7adc5ba5e186591f08442605e18110d6377ea783bd821f5a118837d6773c0806","workzone-build-6-sales-app":"2a754c9125220a1e3dc4c73316143f5886a5c238cb498624f6f59d0db8bc7352","workzone-build-7-user-experience":"96218a68cb08c62cfa1fe45bcecf693e76e18601626363313778f40d98edefe2","workzone-connect-gateway":"6b3fcb06aa02d7eec515a829b926bb24a10e5f7c4c5b67e78ab8b2cac94c18d9","workzone-enrich-3-webdynpro-app":"41a64639d8a20fdbf1f2a644c07def9e3437c3060abbbd6de2865ce07662e866","workzone-enrich-5-integrate-card":"6233e0d7979763f500b0222117edafdc29eae11da91b5ecf51a1c89594a38eca","workzone-workshop1-access":"71133212422d24195d07fd77408cd023eb398f09742b08b5fc12ab81488f0c50","workzone-workshop2-create-workspace":"2294e178f2a9003c5cc041229f403814e978a7eb907ee93b96ce02f69c14d006","ws-local-configuration":"2c3cbe006da9812d0cd402411265e60f02da2cc2deca8b5d33ee793eae083928","xpa-sac-cnr-gettoknow":"205c7027a682cad8776c64f22c77fc3b13310b73380eadcd8709075ce616776a","xpa-sac-cx-add-new-sections":"6604f619da998436e6d4712c3006bddd831b76a50ede53e4235f534bc68f9242","xpa-sac-cx-add-story-navmenu":"c97dcd5566de8b504f5cf502c6c6afee96d4281b0eb2e6639df09407a3cef9a6","xpa-sac-cx-customize-default-settings":"95ee5567b11b8f47e4811ca1021a520c1632612d95f26c707c6c174375a7a279","xpa-sac-cx-customize-tablesettings-dialogue":"f23b6a1c03c7ae1b048d4723438fa40b1a7b295b41bb679b1b8fbbe70e1c0ef3","xpa-sac-cx-data-integration-setup":"0c741145b2b0ac6c0f01cb8b26e62fef2f6d2d8d6c6cae6a4d6506bc7e26783b","xpa-sac-cx-manage-data-loads":"a5f9c8aff8f6b4c7706f116f36dc14cda3c8974f4233d18ca4204d8afe273c87","xpa-sac-cx-technical-structure-stories":"992fd9a35b9186337e0c5c3cd59830454c26dcefaf18b4ff59851b0617f729dd","xpa-sac-cxmp-add-new-driver":"bc81c1d7d21fad1b4025fcd732c68a3e1562f4138b6afd16365ce1d0f4525ab1","xpa-sac-cxmp-add-new-version":"1a905ea37389149e6297bbc2251c4e857101a291f522f2dad9fc6221a6d73186","xpa-sac-cxmp-datamodelfundamentals":"15b7d1528fb4212c4cc2b82a1d704ea24167bb7780190203eb1ac4ce253ae4e0","xpa-sac-cxmp-extend-activity-dates":"4fd52db06ed5dbc08deccd50bf20b896ceb4871f44b1c7eb30a646b8a1567136","xpa-sac-cxmp-marketingplanning-gettoknow":"baea0c20e93a28cf25141b84c4891160cc60241588eff984941283c1d915110f","xpa-sac-cxpp-portfolioplanning-gettoknow":"9caf134c7c1b39939edec6ccf868504b01d983b325e0fcec83fa1e90db4a2c79","xpa-sac-cxsp-add-new-spendtype":"2a2e7c525a40119f5e911402ddc06ef0312cee3d6ab688649ff593b76bd5eee7","xpa-sac-cxsp-add-new-tactic":"e65b0ccee3927ae95191f8c7d2b57dc61b9ce14780f7cfa4842bfab47750b3bb","xpa-sac-cxsp-add-new-version":"fd07a34ca9fd5b3d8d39c6793e51a3dde1566397ff0fac1a1611b664991739e9","xpa-sac-cxsp-salesplanning-gettoknow":"859e42affcce7a7ecd6f4e65ab0a8a16e02b3187d0413246482200db0ddf2c95","xpa-sac-hxm-add-cost-type":"b98e8ab2de5d714036efbd613ea0f7adceb60875019995cfca43e7766c72613f","xpa-sac-hxm-add-new-version":"6b9e7a2134622f1f69c790fd7431caa1c6a338cfd8a13f54ee6d369c5e3a246a","xpa-sac-hxm-add-plan-level":"90a1e2c3b6f18990be697cb78feb3d304d00516c90bf785d38f39cc9f2bb8644","xpa-sac-hxm-create-predictive-scenario":"4aa066f9b0a8f7c3b3351af124b21e3062b3517321ce6a95afd1d54e71796483","xpa-sac-hxm-maintain-central-assumptions":"bc67a0fddbcbc294e68c0d2b789d9c667b078a4e447be497f872fa26ab448cac","xpa-sac-hxm-successfactors-writeback":"8fe8ab82a450de0c6f6da1b31a8d9cdef15b36fc7e948041cd24348134da9a40","xpa-sac-hxm-workforceplanning-gettoknow":"2d308af2dc1bcfc197ab17d7f2e370486770632c27a502c0ff01351c4a72796b","xpa-sac-swfp-gettoknow":"6d9f896c3872fd1d655120b85b0d5df56d5d9746b1c621796a62a9670ae6f62a","xsa-calculation-view-table-function-sqlscript":"d6776f51d429f3256c956e35cd869373ece2c44e2f9138e2204d3df54b7ae75b","xsa-calculation-views-anonymization-k":"59b0746f0aa757e86ba1b0f3af72f768fc8343500d71f10a91309c631200dadc","xsa-cap-add-uaa":"d73ec11446a249b97d4eecf6e02031022c817166ff11b15841d6b929e2f1085e","xsa-cap-create-database-cds":"42f30fd98a636d657e3bcbe91617f7345b5d021c33884a34a285f45a676876c6","xsa-cap-create-project":"ea9e444ffb8cbd2a6ec193abdb610528aab15bc1090cdf0f6ae2562371d1c2c7","xsa-cap-create-ui":"19895d17778e363aee90435cd55470c592ebdf1712229b139ab97ca7be2b6bc6","xsa-clone-repository-git":"13d9c15445f35a4bdd163a9324c3257aaa4455d6fc554e832bfe1f83167bbb41","xsa-connecting-webide":"50884d76e990af314c3d574d8c67d0f60a7eb4a7d7b24bc7cbacc299257be0d5","xsa-create-user-provided-anonymous-service":"2ad9fb614ee3e544712b5845cd2739ef9204306961366432b85dd3acba0c6a6e","xsa-cross-container-access":"e19db41542318d1a91af2065ee571640bbc66238974b0278338a7f4532398df1","xsa-debug-nodejs-xsjs":"828d8addd74af182d79669ab292e8f315e337588d46e542d7a8c9ae994aa155b","xsa-e2e-capm-fullstack":"d6644a8c2a0db5d147ecac02f959dc1edf85d7d200db238a1a174a01004195a1","xsa-explore-basics":"9d75105e0bf7fd881e266b13375f42ae91f31e18a672f04833b88af6ec632797","xsa-graphical-cube-view":"85f657950010f1b25f1f76d0b0af82da727778e020d39c3ed55e4e6679a58c6b","xsa-graphical-view":"b89ab7dc582a66dd9b5adfe7634f4ad3950545ba09bc59f5923fe815aa46f6a0","xsa-hdi-module":"59865742bd876cb40cdf47d413858c70e95550ca9d4662505df66ae6688fd7fd","xsa-html5-expand-module":"9657559b8c133118488a7893ae1b2b7cb15c9b6ea1de31b7171e3855157bd707","xsa-html5-module":"60a94133aa85ac7ed8cdfad040873bc29ff4e5aee48299794de9cfe3e9ae55ee","xsa-import-shine-data":"60d170e4a1579727e0f23feb8d58d1476aaf375c5618b0b0684ba08264be1f04","xsa-ml-e2e-github-mta":"f03c66287d4f9b2f93c270a8cc41ac98d501825baf2198dd42dcdb19499d161c","xsa-mta-package-transport":"c9c22f42f939a075f9f548cceee4d967e67c141471182263ea35ac8b615fe511","xsa-node-async":"1c1bbbf529de684dfe50ca9df708dd2a39dcbe7c8a3fd962576e4f4b222888d1","xsa-node-dbaccess":"9e230c74e8a561e3d4d451b9a396fed3fb3af1c9003d18cf165f0c2d0974e6a1","xsa-node-modules":"328516936766974de71e992827852955179dc0a74f87c6c8dffa7d1b4478e9e5","xsa-node-text":"9a028c7ab2c33ba715b88e2770182ec0003ef3c1699fb3c5089d9984f2bd005c","xsa-node-websockets":"619e992587c928efd839251e455d854d324b6f377c6ae0ec1352c3879a4e01cf","xsa-sapui5":"71b0a8622852ab3dd9225330c163167b1621813cce92b3e6381d882dc2607545","xsa-sapui5-consume":"97de6917aef31364cc242be3a689baa663dde2c17fc149bc144c03a9d0956493","xsa-sapui5-metadata":"b71e6b7be788b3e8538cffe1f39f09e46a800db2ab1f681228a7780e6960d24a","xsa-sapui5-odata":"171ee88b534e95dbc0f6a546148bf99f83ea0424f4daa0a526fafb50a3ea1c63","xsa-setup-new-space":"a4d03d742a9350013032679b768d042938af086fc987881054ead7660bc24a25","xsa-sqlscript-anonymous":"7675a079696709081553658d6955c7f7a6cb869f2172b9fbac5905a94af618f3","xsa-sqlscript-debugging":"d6fcd0c02bc4d4ff9c245144dda2d0823a808d8d56958cfe762476c0b5c0bce9","xsa-sqlscript-libraries":"3ef5fa775a0f5c02f0c4491ffe90c99540503b39daac954c083d9c55df737f0e","xsa-sqlscript-parallel":"c0e3dbcca78090d3b81b6c7fbac048dbafdb769c7e5994169b0290c41dc9e684","xsa-sqlscript-scalar":"d39765981613bdcdd2dd75ff4f86cd8835e9865511c89cc5272c330a421fb799","xsa-sqlscript-stored-proc":"21e17981685cc8cdb24f6ea36e63300191766245f835b1e7bfe4ed76b6b2b222","xsa-sqlscript-table-operators":"e13af5138cced93b8beefa66fd3e15f5ba92b4e4b1da13b44f6530aee8970300","xsa-sqlscript-table-user":"4dc9e2c819e760581ee7d83b2bdbd7e2875440b49ade30e7d9aaf40c527c0095","xsa-sqlscript-table-var":"54d11cec79cd2d58b860363c93ffd01e66ff57fca8830d74f30825b4f10f44fd","xsa-sqlscript-usingindexbased":"8c735de564cede866acae33f42d7c446d4eac851fbec68a0dd20c99f18f938e7","xsa-tenant-db-space":"52cddbe4c53751fbe91530053a5da41cfcb63a10a50ce0132dfdbf8661823dad","xsa-xsjs-xsodata":"2b8cf47ac547baf88fcdb75d7d84e0f385ef86c07da458ac108bdec6a1abcc3c","xsa-xsodata":"a43551136d80989c356ab3963f13316b5cb3f89405016f20cc762604bb15960b","xsa-xsodata-create":"77036dec2438360eafa08d2bf549b230e30b4752d432cc9686125f37fffb1995","xsa-xsodata-entity":"9435e843067468ecbc9ff52a1fd5581f6057d599fed89f01827f197e6efbfb08"} \ No newline at end of file +{"abap-cloud-ui-from-interface":"a96335fe57305a3bda319a59bfb4c7714c6e140aae27f1d8d8f714085fa1ddee","abap-connectivity-daemon-mqtt-bridge":"ae42854dbab60772c8da66aca0d3629ee494c2c7c72507827af8cd365cc59946","abap-connectivity-daemon-simple":"6e587ffc6465fb0e9ac30e2412637180bbdb2467a281b07c2e2d35f4e4b59c3f","abap-connectivity-mqtt":"c5498e5cbcb94ed7cc1eeea28348b8e508d3149922b06847042624a8721ad47d","abap-create-basic-app":"a862a2e5779a9001d577c374c636aeeba473a4933de8ea07a7e992db955327a8","abap-create-project":"a111d0a3b0c7cd01f22892d7b8ac2050bddeb716c0e26fe50f3d8ec6ea24af72","abap-custom-analytical-queries":"e98f219c1350dc322e2e8e6f2d82d4d35cebaa4390d69be1b79777b71c3ae5cb","abap-custom-analytical-queries-measures":"7d42bb8fbf2b3a120d87a5558d99ede2e51f8f5f2547aa9067d6e5f6112056d7","abap-custom-reporting":"44b9bf4aa621a2c380d30b2ff82357843b3700d8c7bc191f4b0ffffc0c13e759","abap-custom-reporting-analytical-query":"0877ed37b8ac6be6fa8283abed9fa6159604c23a41c1cbc0b1e8b0c50a35b400","abap-custom-reporting-design":"694a8fd63adad0a0847924c5d4f75478f209a70ffd99fcc3da6dfe29b13182d8","abap-custom-reporting-kpi-creation":"f895be653b18964adc0869e86d8f138eab36910b775e5a986e3334edf90a578e","abap-custom-ui-bas-connect-s4hc":"384266b21d8b300284f2806cb246b9ec48aa33078a265ccaae7c95540930f6f1","abap-custom-ui-bas-develop-s4hc":"0da0a16bef95402eefcbed2bfa81df4a2edb402e614b9bf0be7003578bbe419e","abap-custom-ui-business-object":"b54fade601d424201db67ad7be56ee4694fd598c0a5aa190f6fbaf9454706a61","abap-custom-ui-communication-arrangement":"d28b56b5b4bd67cf7f1b0d617025787be8234e1af4b38cc732947d7cc55f9dc7","abap-custom-ui-communication-systems":"232bcc17549d5c253c2f224dfdc7ca827db3093f210b10ff6f5eb4181c8ca448","abap-custom-ui-generate-tile":"dc2939cf7442ab71e0cd8200fbbd601440dc9c887aaacf5c339a0b6e9c1d89a7","abap-custom-ui-subaccount-permission":"0173f6d095757a07fcdfdd1a3ad6f39f61244035febfd9ebd0765aa5bccb0351","abap-custom-ui-tile":"c3b2ef9cc391c9efa39472bfa2245702cf7fb7670a364c755efdbca2bd66fdb5","abap-custom-ui-trust-cf":"dcb4ab843df3bd5c2dfe8cffce59c165274a094ad8246a06bf97ebb8a5c4da57","abap-custom-ui-trust-settings":"1b06129e47499f4a7d4aa27ad4219071e3274f77947c28d4bb043d89c6f41014","abap-dev-adt-create-cds-view":"cd3b7daf9c6098595c7bc2453e2222ada265049e8665a15d328f7c08f7f53772","abap-dev-adt-create-data-element":"0403af984c99bb82ab58abc65a48a7142b6c4b39db1ebabebca75f27048ae83c","abap-dev-adt-create-new-structure":"0fb344e90061d6823b61f94d1a31127db525468db570af39d90ee70f77533e19","abap-dev-adt-use-cds-view":"511c381b78fbcd322764ca1a4294bc0871381942eb8e034fea9037b98632eb08","abap-dev-create-abapdoc":"2e6a0c547c49e3f2cd30b44d957d40cbf7866fba67d838b58d9da31a140f7e8a","abap-dev-create-cds-view":"33e141394907a8bbe4f2223231f0cca3af478339b0062968cb16e7dac68bf6eb","abap-dev-create-new-class":"f804b35d13dc370f3dbcf4f7621496d1234900bc2f1268f635e65b0389780a8b","abap-dev-create-package":"ee5736f6adcf0a6fc1585448a9ec6a9d1e9cfad83dbbfa75f647438e3f3af7f6","abap-dev-create-table":"1dad1316aeb418f67355bf19d484df2a62cd0db8b406ebfeac2a57cdcd9b7bdf","abap-dev-enhance-cds-view":"5c1aa10a929f23413427f6bc7bb52975af34587338d17ffcd6aee17fa04e5f01","abap-dev-learn-ddic":"450e72e12a269dfb436e2ddb9f508706797becc44db4e77344ad391a8ebb3ec3","abap-dev-learn-repo":"f26fe8851c876a0cc1da1319a8ba9e1b97a7a62968d2463e2ab520f5e946b9fc","abap-display-data-queries":"521f1145e603bbf25996410d90f372a03a9ce1e26956f5c563105a2709cb03f1","abap-env-create-table-type":"1a4dc75f75f948bf01638bd9584f6fbf195c1dad53b49106150328954770b2da","abap-env-ddls-extend":"cb3e52c401bb5c7aa3486a7b2dc66be4979d5f45937bba41fdef9777df2d7f7e","abap-env-rfc":"b8afc56060192d6c7fda013d9262d74fab0d3022a6a2bc942228741223c62fbb","abap-env-rfc-scenario":"8bb552abde28e939374fb398ec7e1903f1393610394df8cea2fd82458a7d1013","abap-environment-a4c-create-custom-entity":"8f6ce1446f82fb982288fcfe91d596bb2eed68ae101af2f8f0f09102aaba2e4f","abap-environment-a4c-create-proxy":"ffbd6304067d59114d1089318552694ca67c4f9b53fbbc0a1a91b0f11b26ada4","abap-environment-a4c-inbound-communication":"1693fdbb32b15ee37a181c0744faffe714d1cbd5c09f5a6ae1a789792f4077e5","abap-environment-abapgit":"10a2f8c8b416f92851d8f2841aeaa13a74d6a215f34d8f6f1bb8caf9fc6b5043","abap-environment-abapgit-transfer":"6683b451bac68f5376973d3220ca366b2dadeb6340eaa74fdfc11911bdc0c535","abap-environment-access-mgmt":"3a42c97dc3b55fe213c5e1759fbf5a18b0399bf767f6018e8d51ad26a9c90c3a","abap-environment-additional-functionality":"3c1586665f95e2377f151da3faa8886dd94c9670a8fca41954332e165fed5372","abap-environment-amdp-profiling":"5df991a6f3b6499c5d3e93607f5eae378c1b810474384df8aea3f7bdc3c1f067","abap-environment-analytics":"9101a24520cc1559cb9107926384b4d2d075be3e0079e1e609dd8fa6df538699","abap-environment-atc-run":"b58b978e8d1c47564209f84167929d706687acc061a80f29891b56f2c8f126df","abap-environment-authorization":"5c9556ad85d7096728f0042674120fe741bd0056c06ee2bbdabb993ca142f251","abap-environment-authorization-control":"8c499d79d328c073f0535187714baec7203bf8f75c859c04dcee308c39e1ad51","abap-environment-behavior-definition":"c949945d9819e4be91102c58b1120761be724d1d16cb93e6b0825a50301f8159","abap-environment-booking-supplements-analytics":"e47780e321729c5154f5d8732a4deeb11c6ea97eff1209542f80f778ce496522","abap-environment-branch":"c4496806a43753684150eb87adfd5ed96a3d967ba026e1297dec46adf684cb36","abap-environment-business-configuration-object":"8076e730d942718001703b6fd54bd5f66a7a39e1134db97f53c897391c13734e","abap-environment-business-partner-basic-auth":"cce493c0d1f00fc3434c9af3d7d3ae432acc5cbebd6ca56387c84466c6061e0b","abap-environment-business-partner-oauthsamlbearer":"da8e9909087f3e297960d6198385213e4f8beeaf40ae39cc6029647f39faad5b","abap-environment-business-partner-outbound-call":"62fe01026f7959211a32f7f9fb81cbbd4bce24b0237a256f9870e43ab6942f75","abap-environment-business-partner-scenario":"cef75afc8edab9016815dd3ccd56a5d93896dfa2b304b076dffdbd74408f4c7a","abap-environment-business-service-provisioning":"bcf7a7d2b676c4034c44768a87fb35b9468610c06c2e42e3b85551195c2901a2","abap-environment-checkout":"fff72f2613c812bf4fa251812dda4cbe8274f5313b2712fb8aa45620a303501b","abap-environment-communication":"ff40c515b92f4caec7b05b2c752998b2047b072ccc04c75a1ba10a050a9ca62a","abap-environment-communication-arrangement":"12970ddb0d2802c06859b73b1009c33adf1b4cdf64e54f1c3900e9cc1d051f56","abap-environment-console-application":"f4bef3fada7bbe146549359c6383dab2ff329e82d0fa915dfff204471f34ae8b","abap-environment-content-provider-communication":"ea453d834a552a15684e3aa6a3f83c57c976ddc598fbe59e9dcd6bac8bf0afc8","abap-environment-content-provider-destinations":"ab778d7abdc0e7d548332a79cce05b89f1e756c0a442ac7954379d87d0baf058","abap-environment-content-provider-manage":"9706945c53406e56bfda40f71a33ef37ed348206256e797a49ec94dd67a5ce68","abap-environment-contentprovider":"d5da1b0cf89beb79348ac111af52b305f697de52cd32af72855ca742a35ad673","abap-environment-create-abap-cloud-project":"1e8faed7ddf6c8da01c34b55a2c1df00355cd3ec93a68f968805794976d5419c","abap-environment-create-abapdoc":"152acd50a71403697ce7af30e14e66e9402cd53af542c8cb81fa59ed7c28202b","abap-environment-create-cds-mde":"24cb49051c1498c76b7d8f7d5650f4349f3707dc0b5e1b6468162b0bad1f507c","abap-environment-create-http-service":"4e475bac26639ee6d79a1b7a942e260e243aea736fbc532540ae0777e0796c9a","abap-environment-create-rap-business-events":"7e1fe16718525d4ad65cf03e0fafcb2e4be782937207cbe336cae9164cfda022","abap-environment-create-role-collection":"672ab573760193e0862e2fc692cee9ee6833e62f6f8c16ecfb8b05e83a2f9431","abap-environment-create-s4hana-rap-business-events":"f4593db2753f27288d1f2acceb2d7e75ddef43dff6eb6d81cdf6a7731a6dc5b9","abap-environment-create-service-consumption-model":"c9920f954e68ce6cbfee669b4a9eb41f7060fa027d981c96e24b57875b2000aa","abap-environment-create-spaces-pages-template":"500b7adae56a901b72296cb018e3591c94e207fe9749186b5472e3d2aefa8eb7","abap-environment-create-tile":"c3bcfc7758809a5a588c8b6eb7499c7a188854569abd8a011247107dbaf6e134","abap-environment-custom-entity-debug":"c51fb2bb272c680e3b5f5c0a794143e0df7e544f186dcc9a42389cd7ae406124","abap-environment-custom-theme":"16ebc56fc964c198b32952f6a22b3a04ba7293d180027193738b11add507d768","abap-environment-deploy-cf":"c3534f27d17cec248d52552ab6cbcdfbecc8e3772ba9d7881ee21405560482dd","abap-environment-deploy-cf-production":"ff4d38875fbd4664acc5be6f7ab1e1ac11f3b50ea8d88b682919a41c180002d6","abap-environment-deploy-fiori-elements-ui":"a3b912321db68244fa053cc1dcd7d249fac803710750accf4a4cf0cb5f48306f","abap-environment-destinations":"d7ba1362b1e131d056807369830f7a7af4750255f9ec5a0f4abb31feec331123","abap-environment-developer-user":"9d9603a342035c0926e5f274eef4d089afd56143368fe705b3e5a218430426cb","abap-environment-enhance-bapi-invoke":"f63b1b145d304750ef18fc01974831b6adb894532bced1ac2fe3cda95ef8a475","abap-environment-enhance-cds-view":"cc2e496c32e933a0a534283cece9ed4e3c29d64396f46e44fbf5ec73df92b0cc","abap-environment-event-enablement-consumption":"2967928a6515520b5cf1816ba34591d5832ae783834f3874b1f13b3b9ad01d27","abap-environment-event-processing-s4h-onpremise":"ae2b9c31aea214e4cad7d94970cbbdde81c06002d32b3aedecb78137f919052f","abap-environment-expose-rap-business-events":"55ec0781fbecb5afcb64071ff8b9def48f8742c9eeaa65e034072983b12f2fd1","abap-environment-extend-cds-view":"ebfd69d1e99a82d06b1d64995b0599b72c9a3feb434484bf853ad2041ba98b6b","abap-environment-external-api":"f0d52b20d2b5e050930efad94307508e6bf2415aebb5db3fcc158e8a01c24d0a","abap-environment-gcts":"495c67837ef98094c96485149b04112ad862588574bfe35312f4653eafe3f208","abap-environment-gcts-byog":"d23421df4145dc2b5e8728587f8f7b6725e66a8128902ca3764ca9bc4610fb7a","abap-environment-generation-rfc-proxy":"7314ac820f9b64fe6ee033ddd1257074c2fee8d137471dcd5e923e0d06b5132a","abap-environment-integrate-app-into-flp":"4f2daa692cd7b6307671ffd7e4c738a189e3ffbbea188614cd5a6a9fdb3c38ce","abap-environment-ips":"f6e6d14f41a160f9ed63b020102d97f321f59abd105978f5df9c2931685619fc","abap-environment-lock-object":"d5acd653cfa1305bf9bec413948355e7631b70c4696b79338726d9fb43d3de9c","abap-environment-lp-service-content-provider":"b278ceabd725aa65cf853f074df00795936767fe199394f914568c0bb2069479","abap-environment-maintain-bc-app":"87ec2534804c924044752d15ce70cac0e9727b4d9e7924ea44fa1bd7877768ba","abap-environment-maintain-filters-outbound-events":"3db11735836ffcafe89a3cd048563cf8ccc093b64fbd78d7c5eaf02bbe169528","abap-environment-monitoring-calm-health-monitoring":"e02fb3c72e5c250563bb5c37d2efad4eef5319251c275d362ae1e97218485521","abap-environment-monitoring-frun-healthmonitoring":"b7e47b7d75a3ea3f1faa90f887c39e3e2704f1149cb9b7696709a526c6a5b325","abap-environment-portal-site-bas":"0eacdd326a59c90d42f486a9c66fd675d2076385879415395d6ac450a5081c25","abap-environment-portal-site-vscode":"c0efb589a9cd499c49f741aab067ac3052c3da3c13f839ba844de7e56500f6b1","abap-environment-rap-generator":"c80628762e4ffc3b9fef344fca6e4a030691c8cee056b25f1448189241ff2532","abap-environment-rap100-determination":"a928fa99c61760dcce9a05b6a820f8f66e92ad9253bfd5e029385f25dbeb0aee","abap-environment-rap100-dynamic-feature-control":"c53ea3139103902813559a889c20badf2cd6919be61366caf5463745133c8a56","abap-environment-rap100-early-numbering":"5e697be5a70e5091a1e7d13f0b346c83b4d88b993436bbafcbaf39ff0f3a8930","abap-environment-rap100-enhance-data-model":"5ee6a7ffeedd34487ebbdc22629045892ba37a9727cfd706427139a6da797909","abap-environment-rap100-factory-action":"e4712610b96b00c268abca02c10bca0c44c245cca8b5e52f920ee99ed87f4b33","abap-environment-rap100-generate-ui-service":"bfb607f910861d1c6e8891ead082b4f40c06323b093f9f09b7ec7841dea5009f","abap-environment-rap100-instance-action":"b48c1c60fe33bb0020a6df2e1075d9b1b3450e91c227c7dc8080489f1610beec","abap-environment-rap100-unit-testing":"a42a6439163443ce9996029ae63791b2884ddcd666ae4a1b0fda21159b460c7c","abap-environment-rap100-validation":"ce168f01e94cc66afc400c2246e229fe96f1bda1bd2c2b01515b9254fee1e7dd","abap-environment-restful-programming-model":"585f24217226944cb0445d6ac9cdf8c9028dc41b2a20fed3c97e1fceebdc09f3","abap-environment-rfc-custom-entity":"3519eaac438d0d420abe29e53a9f1f1ff0b36132261979fa13b29b013f9b0c67","abap-environment-saas-addon-build":"92bfa98aae52e29024c3179e015553e0b2c98b6de37ba4a85c25cfbb765ff93b","abap-environment-saas-addon-configure":"a6c693502e7428b313649286aa4bfb5ba9e7804bacefcb39df663e664ab13ab4","abap-environment-saas-addon-msa":"e68fd362796a6f41dbf29e142291764ab3b80524c8e6f13739e64041af788d8b","abap-environment-saas-addon-mta-product":"87bde050faca9705cb14f888d00b0f2cb033ea18da0fd477b1c162d348b35213","abap-environment-saas-addon-setup":"7401bf4e83c8575a368140fd79099b2e6bf8d5b9611024806c2cdc2d8d9c152d","abap-environment-saas-consumer-iam":"e4237cec350ee5d9e8c5b3e59a266c89bd4dc5598e043b42c8102269aa794059","abap-environment-saas-consumer-subscribe":"35cd46ad6d6c9f8b6502bb174beeebaca13045b3fed82f4757723789a39bb964","abap-environment-saas-mta-approuter":"c67866fe17a712c56dd25a081e3a483464d9fb88bef8b5e1b85e04e3f4f97167","abap-environment-saas-mta-bas":"5704d77765209d559e8e319c3b37d8cd24a209079075846c38d3958dd3261667","abap-environment-saas-mta-config":"c7407cc3e03dd2f723810ce8d5b9f4903b2bc99831dfb5310beedf96263f3bc2","abap-environment-saas-mta-deploy":"7945c41cfadd3bec3b7b3a42cad87f601e411155db0d3ce5030515e0fc6f1daa","abap-environment-saas-operate-tools":"c04033c425c0fc004116d7e97666e48bde8e826125086b604acbe302d5637500","abap-environment-saas-overview":"1167dcc9efc8e6fc294fd3673f70a2ee6203e4181ce7e8c5a889283cf68ffe0f","abap-environment-sbpa-workflow-action":"0a2e1b0afb6ac25713955d169427603ceb6a491fb1b66f45c79b69db93ab8252","abap-environment-sbpa-workflow-bp":"629d1dbffde2eb733501663ba281113729082366559d10a20af5e6782e117f95","abap-environment-sbpa-workflow-extend-rap-app":"5a7ffae0547de08dec1b78c140c501ac8ffea2acb56360a08e8252a268974bf6","abap-environment-sbpa-workflow-form":"9c3b5bbd573a6e3eb54ee26c3a2b3a831c6d67c485a2d4bad4c27d0d6782653a","abap-environment-sbpa-workflow-handler-class":"3b067e64594f29604522cc76a96db3b40b347bb0fa311204e00011e15a0d7df9","abap-environment-sbpa-workflow-integration":"e390e6a883682ee88ee1691c6c81510be23956a7973a33b291e7c06ac40eb18a","abap-environment-sbpa-workflow-release-deploy":"c797b7e1682b4f220f5356fc922bb902196a40f424a82733ffc193d1252fd73b","abap-environment-sbpa-workflow-run-monitor-troubleshoot":"56a90bbe537d355900ce6dfa7f7ec1ed348f01079252af8e926dc26df9ccf095","abap-environment-sbpa-workflow-trigger":"9d7e26f4fe5d4fa58e3f0742de945c43a68b597dccc4ecd73fb4b951fffcf12d","abap-environment-shell-plugin":"a3501b5483bbd8d6b338c4b17a973d30202518ae035a57c0d5aad1c218dc14b6","abap-environment-shell-plugin-enrich":"14a2cd3185353d9b54f4769e0c91218569a345e590a1e20d53daf165099a29aa","abap-environment-soap-web-services":"626b11429f7444bf5730b21b527fa893b7a9324f76652d5e098b3a0513715950","abap-environment-taster":"d58cd2e7628bdfcc0f8638b82b3c28c3465248069a8666a2891adb3dcfb66338","abap-environment-test-rfc":"6d7a02745a0a1b5ce5f94391f51e74661a99f1bcbdea70eaea8a91731a26989d","abap-environment-trial-onboarding":"67148f22887b15523417e42e5145c6c854e1246bbb7c18f520672208acc61cc2","abap-environment-use-factory-calendar":"3482e2ba90ac511c893fb2fedc1c646c4ede679231211e6a8ed3e3aaa916ce9b","abap-environment-vs-code":"dacf4115f679292cd90f2274c4fa1214da136e2d50a58542b45314b2e76c0619","abap-extensibility-cbo-create":"f35263569d2e34f9d46431eb9a5454c953c0c8935108c42d61557e5d77375abf","abap-extensibility-cbo-execute-outbound-service":"a5c22b9910a2b914cf8e93df5da6908d89f99f81a3634086f81fa58e1cbe6f2a","abap-extensibility-cbo-logic":"8bb80862e7b2aeb406e2d98050dd27e6b1629c7af8801b5fd13f3dff4657e077","abap-extensibility-cbo-rules-configuresystem":"aa58f86e51863b975426a5e5e5ade4cc9a1a29903ea86814d057951936e88a9d","abap-extensibility-cbo-rules-consumption":"f2327bc761dba0e3587a288cf6d00c955b4c2536fc0903ce145bf8e0bdb5bfab","abap-extensibility-cbo-rules-create-decisiontable":"c29a15fdc65dc9c7be59ac9e1ad3bbc7a7a6ce9a38a9042f4b74fdef925680eb","abap-extensibility-cbo-rules-create-destination":"df2952d3a2baf907db33f5f530e9363348173579ee4f28fb9dbbece8dd690ba9","abap-extensibility-cbo-rules-create-ruleservice":"8d7aaa9260a08431dd4e9a819181570e079ffa8f3d47e59db228e72f889dfc94","abap-extensibility-cbo-rules-deploy-ruleservice":"e314cc1256bb3853255823463e0e5cd5352791a0f7dcbad17c19570e773e159e","abap-extensibility-cbo-rules-import-rulesproject":"d3600e7303cd9e2c1ddfc6318290aa1ab52267bc3863f9b5cd8c25c22542f47d","abap-extensibility-cbo-ui-adaptation":"6f4628c19ab47a666f3f03756fbddac9adeba183965f7c33f9343f462dd95691","abap-extensibility-cbo-ui-generation":"78c0295a36e611f1596273cf338c4e1f1d91a1a118de280e99c388c56149ae55","abap-extensibility-custom-cds":"d0510cfb70bad9950b1e6cf3c5aca5969f00210181214639ea58e1ac305a8087","abap-extensibility-custom-code-list":"a46d648790d75fbc249a30b7460b4bc749e2157c793f3f3533cdf89e1c85312d","abap-flp-setup-content":"e4ebb0543814b316e0a799f4c9f1ba7e13ffacc28b038054f00b0e0498ae1d92","abap-install-abapgit-plugin":"d167fc2b3119c182ada53cf9f3bf2d89847dd3e8e0754303f86f3443f9741218","abap-install-adt":"0dabb2ee191299781ea69cc9f8efb12c5ef9857c8a79ef85fd645c28c091a93e","abap-islm-orchestration-service-consumption":"734cafeab7a6e53814bb565c2d1a1155fd6fd64b81c9d2f198a7165ffbb46a02","abap-islm-setup-mtls":"3c6ddc7d2251e96cde9b13ff6d768b07250417a97845b7bd70a6f7ce5d02082a","abap-islm-setup-oauth":"435665aebbd3438928922d23350a06a0c46f23441aeb5e57b17a04671d3d1cbb","abap-islm-setup-prepare":"49851178cc7c5bf9aaaf5545530c8a3a8c8fceb7e9581029568c21563937dc37","abap-islm-simple-genai-scenario":"d3f07723c4dbd4bad362cdcfbc400e0db1e701e4b4069487457a844108802a23","abap-s4hanacloud-login":"debe2f1883220970f818ce71997c393d844d5b166c70443d556a8e6d9229f2db","abap-s4hanacloud-procurement-purchasereq-checks":"cd4076ff5878f4a0fb6cb7eec547b5fb726579ec47db562c2d1d9396b378d45b","abap-s4hanacloud-procurement-purchasereq-contract":"8cc42fa0c7cdf9a6ec5d431c2b61f60b34bbe77ae1df45a46ec4c554bffbd59d","abap-s4hanacloud-procurement-purchasereq-fldctrl":"1253cc7e5038b6768bebbb3d3ba753ae6e6b8612059306424f6e86a9329769fd","abap-s4hanacloud-procurement-purchasereq-flp":"c004d59df435584eb0c5a32cb17cd3a5b1493dfe445ba7fa619ed0dcdf0a05dc","abap-s4hanacloud-procurement-purchasereq-shop":"8363a45d0201468fec5fbab7db9970c25b83aebec9dec16c4808c5095f86bc5e","abap-s4hanacloud-procurement-purchasereq-shop-ui":"eccaac71d8ba61bac313a485acb2e28cd2a1edc5967bae191b7c08d94cb2c73d","abap-s4hanacloud-purchasereq-connect-bas":"dd6f4974eddacdb85ef9a62156c70aa848cf1652e7b488299bba25a67a18f30b","abap-s4hanacloud-purchasereq-create-wrapper":"3c2c9048b642c255335febf0bf05342fbb770115c5a0ef94bb22f3d3e90ec1f9","abap-s4hanacloud-purchasereq-deploy-ui":"de7ca8bf071803751f63971a4ac471edb7516fb91e04267212d083dbe81f1509","abap-s4hanacloud-purchasereq-deploy-ui-tier1":"aa714c4b1fb755abaeaaf0b88035df7b4ea85e88b324ef721d7ddc35b520d62a","abap-s4hanacloud-purchasereq-enhance-shop":"01bfb5234326358719aa37219ea47e5d7dd3ec330f5f43a83342e9d94c74303c","abap-s4hanacloud-purchasereq-integrate-api":"0d89cc41c0464cfc0baeaa59f0bdce72b6cf2ef14f7e0a74f336e0418c156775","abap-s4hanacloud-purchasereq-integrate-flp":"61c9eb4b37d6fbd83383bff4f27f4e6e832f13d443a494ba8638332dd7cf70ad","abap-s4hanacloud-purchasereq-integrate-flp-tier1":"bf8ebf73caccba659883fbbb81d035e6a680447ba74501e67b87a2e46b128bf4","abap-s4hanacloud-purchasereq-integrate-wrapper":"6ec4392451df60f7a4e276c9e928fee5ffd920969a2369641318cced8031543a","abap-s4hanacloud-purchasereq-provide-authorization":"6d63bc81b6c776305e43907556b24db0e37f1354be443282bf44abe2cc5af8ae","abap-s4hanacloud-purchasereq-replace-wrapper":"17f4004cb8f6fe089023f994f77da83c322eda4153ccb8a0b538b2bb8d2055b1","abap-s4hanacloud-purchasereq-understand-scenario":"010a8688317d207e2776ae26dbf137b8d3e56c45d1de3be566a8c0c1068fe60f","abap-s4hcloud-procurement-po-customlogic-tracing":"66b521a385441ea0c60b33da9a49c6224cd1406a5483308f756a3c6e35340553","abap-s4hcloud-procurement-po-debugging":"86b09b4e311af3ca38c3688666d3aec275304d0b2fa23d4dda790f6435cc9dba","abap-setup-bc":"d8024715665d8f6cbbe59fda68c4a5d5b4c37da86427f14f5360ba75979829a9","abap-websocket-rfc":"36cd9bfb0c71e554f90b9db9645c9a7deeefae3c5adedccc113c906f592030b2","abap-websocket-rfc-bc":"cc41782e6a24f6fc5682d0fb2449316079af59c7b2d8b0aff6aced6e977d59d0","add-authorization":"63a57ff4b2a5f47e5756a2494d87ef862e83ae09f1ac0d995a957e4cbbb40ab4","add-cross-origin-preview-page":"f157ea5df05b36dfe4d3a18881ede39bcf11eca66e458df5135e7b98001c5310","add-custom-logic":"f82dd0a4c11514acfb0c7a4d736a1ae8a1c6a758639b108559d6f7f2d5cf41e6","add-fiori-elements-uis":"1d8c80d4daa741eeb3ff87a2c104d1dfe9530618dd023a141e21c5d49e0d6727","add-test-cases":"3c80f3d0795a809a8d038e20bf4bbaf8478b601f3c9129f9885a6d6264881f80","advanced-sql-migration-tool-ora-hana":"7baf6e64022b3a10299c18e45465f561f6d0b8c7283cf0af557b2b43c2fd99a2","aem-forward-events-sbpa":"3550834ca54d0096eb5a831e1a4a7549533db3fbe1323c2869281f421de24a53","aem-integrate-cloud-integration-iflow":"30ff864642c5e627987592c767992008f4bc78e3024f2f18fb7a7793b85b924a","ai-core-azure":"04c75836a6f735683612b64f9d9cd4509a574f8170824eeb86f174497489eb91","ai-core-code":"ab8a2acf8ba57ecbcf39ce81581dda10d54d3ce3efb0ca93735c14ede69970d2","ai-core-custom-llm":"b534fd59e39a8b5ef16551c320182503b7e4311b07620513060d8a32a88ae781","ai-core-custom-slm":"fd9f280dfe4833b99c47ec8c2ae6de905fc67b367e76bbc619009ca076f1ca02","ai-core-data":"ecb619ac02388c9f66a3ae9504b723a7f02b15d0d69fc04dd6a7c69ce823238c","ai-core-deploy":"dfadaf3b0497254b7364db3c43bb910bde80ce4b7c891e436627a3c70104230d","ai-core-genai-hana-vector":"211e72adcf70edbb22c04d9b5b43523b84d61adf447fbaf148fb9f125245385c","ai-core-genaihub-evaluation":"cf8f526f6168b6d0a6703aa8ff7e374122a28109452539d6dcbf88b0750fae6c","ai-core-genaihub-evaluation-comprehensive":"65836109a899e43a22533c07a33f59c031334756bf2c1764d10fc32ad6b9804c","ai-core-genaihub-evaluation-with-grounding":"410fc491efe87cba1fa19901454bb622385838461796c8284f44e805775ecc16","ai-core-genaihub-inference-observability":"95ad5738fac13bc8e32fd8c6cc1b6cd1fb551ebb359b1f7b548b9fb91931695d","ai-core-genaihub-multimodal-usage":"475facf2dd163be64201907f67b4a1f9a44a8e0193909677dd4c389bd87b21c3","ai-core-genaihub-prompt-optimization":"bfae46b8df32327f5fe44a6b5a659824d3066d11a88a2c8b04bfef5594bea540","ai-core-genaihub-prompt-registry":"645b0138a9b43aac3f3b2e28bb3123519a18f16aa58a062f417de9717cf6a016","ai-core-genaihub-provisioning":"a648f4b66e84776534d12d62cd921c267f56772a630968c29128276c33661cdc","ai-core-generative-ai":"154f8ce190abf5760ba5d6311f2262921ac530fea601f766d846c48bb4937c11","ai-core-gpt4o-consumption":"6830987dd333675c714d8cf1422cb1a0fcac7dd693cd3734ac801d21a50e4288","ai-core-helloworld":"c92b172586bde1655b882f38a95d1b9d0e3a44a13519ada9e89fda38ecbfbab7","ai-core-launchpad-provisioning":"e444fb61883f343f98984e3742444137a30674ae1ceb37905d3299151679892d","ai-core-metaflow-setup":"f9b793a983d1d7bb5eca8648b19eb2f38280cffd21e2d4453e1a92aa726b8cad","ai-core-metrics":"b55c5ed2c64697575831f2d40b047f97173ccf62adcb07d364df2275ed14ddd2","ai-core-orchestration-consumption":"9cc4c5c33ba77822045548f833390e884a48f78828f891f859884302e7a01d9f","ai-core-orchestration-consumption-opt":"4b6c4877032da5793474914b1b75da04f9f6051815a4fd5d59221ae7d745749a","ai-core-orchestration-consumption-opt-v2":"345f34e59828bad5c8e0a7ef8a0b97e9b4aab4aa011cd38a3574d5baec98cf7b","ai-core-orchestration-consumption-v2":"d606e146486dda61befb2751aa819bdcdcd0e92fffadadb7a5190fd75d612ca6","ai-core-orchestration-grounding":"b007f2eed0d5710226a24c978e44d3f8908f2a49a5a50e1e825d4317065f0e9c","ai-core-orchestration-grounding-jd":"29d0313308e0ccee266187ada29a00821c46064c65ddbf73a29c48b3313f9256","ai-core-orchestration-grounding-v2":"e4a82f55211a72afe6789851f33adac69cedb2221bfb96255462dcd043236d76","ai-core-setup":"ab3aa7fab8c97b30aa1ecaf99f6fa9672c55f7aa3c33cb8b587612b95d10f315","ai-core-template-wizard":"2f67230afebba1d3ba3061617c553fd11620a36488ea85f5c9621e4df66777fa","ai-core-tensorflow-byod":"2920e5285971f4629eea6bb59adad5bdda17186573dee40b4aea62db13215d00","ai-core-vs-code-toolkit":"ee72248be1e385f882547591fb0e6a4f7e376a402efe8c279708008e4b581cee","ai-launchpad-provisioning":"cf899550e22f19950d81919daef18a958b2275928d114145a7ae5426fa6d5269","aif-error-handling-custom-objects":"fef8f7d26064849819ccdb16315a45d8312c5852a17142f578940f3e4e667cd0","aif-error-handling-single-key-fields":"fe89511134250ed69d8ed51efa25ec0d3712ba60bcbc2feb0d4370f21cf4df3e","aif-error-handling-structures-fields":"fd94a9bb36ed90eb949977a747acfcff98e0af98997961b947f1b0fb5b507bba","aif-gw-odata-monitoring-interface":"20b9536a51add054e04c600f0705ae12d12c20035c8ad6d94e4ab909a078b82a","aif-idoc-monitoring-interface-create":"b5d6cb65b2642346f5b1db06b78e9eea8de0b5a14952b7369a07add6c563e04e","aif-idoc-monitoring-interface-customize":"0bd9b12b75a1870c95c7a6da5734491bc47d94da1e5d2f3132fd3c03c39fd951","aif-idoc-monitoring-interface-preprocessing":"18cb4bdbde6b3801158d79431cd55283132fcea39ed7c24907d1262d631b6f2f","aif-proxy-monitoring-interface-create":"b316a0ef3b96061808797c8a03113b2cff5955d392fa44c93a1164cce7deff19","aif-proxy-monitoring-interface-customize":"e39c82759aaee653e46a798cf57103605db986bdbc401eda81ffe9e622dd9490","aif-proxy-monitoring-interface-preprocessing":"005ddf444d3ab6ca501678e05a4b5fb6e65049de816a2a182a01564b87fec596","aif-recipients-by-key-fields":"9c89ae0c84365e19416bcf4a0c27e07ae7f151f52b3540edbeb91184c39987f9","aif-recipients-by-message-categories":"1b3d353f119136fe4059c4299c5a8b4846a32058ec00a5352ab450ded69888dd","aif-rfc-monitoring-interface-create":"4962b115cf0f3be469ba3f19fc3fd46d49985ca086eca5620e83a8c929db3400","alert-notification-service":"10ddadfb802faa435713906fb7b566b83c286cf83ac3a90de4f72df910d778d3","api-mgmt-isuite-initial-setup":"d42b97476ff7e8c6073cb6053375e5ec8c6602e269865e2d7642b9890f8327cd","api-mgmt-kyma-getting-started":"9b08fe5301c503fcb5b9097a42cbfea06fd8ddf4349df2621424d35bb6c1b49c","api-mgmt-revisioning":"5d09460fb6e0569d3e2961db912bc59a42a00949df3bed1f4c88da69f0e524d7","api-tools-postman-install":"f79ad1c2172e018ee3f835d48ce49c1f66679de9833eca1eae602f66dd80667b","appgyver-configure-camera":"52cda49e57a07cbe8ed00ffe47662224be508dcb2193cd3733eacfd68401dc23","appgyver-connect-publicapi":"91bf98484441f152cae2ec4ba48838ffd51dc4769ac5c8d43c7ca10970b70a78","appgyver-create-application":"1258bf80ae30cb7b87724e4b76180a2ec00e9d8c7348796025d630afb13804db","appgyver-display-information":"b201db5ef51e7685611c58a723258d868935097f2703defaccc3ee8806c1bb5d","appgyver-fetch-data":"dbdfb0364d366a6933ca33f9ac38dda4ce8325344bb5368b68c70b2143c6dc84","appgyver-subscribe-service":"b41258b20bec096e1e65bd319f83f1846f7dea2dfe2ee92fef5c854503693610","application-frontend-cli":"61ca3ed600ea4a87937d18d20e479fd0fc3ea16d3b122cc4ab2fb93dcf618ea9","application-frontend-mta":"98b6280cb531475bbf3e03727c19f3d13a1fa2d227fae7c744730b7202bd3238","application-frontend-trial-setup":"1a4beab6a43f51d10435064ea608fbe9d3cb7a14fd81d2c904150cd7223048a9","appstudio-cap-app":"fc9db51277ba11443b4ffcd241cefe2f7498611e5eada28592b9ed3d184603ee","appstudio-cap-java":"0037b2d1e9921456ca3ab4116b71773708240dbdf13d5037b78397d7848a847a","appstudio-devspace-create":"0b73c7636680b60c1534a34405eaff4d4cb42ef5229e9193fb3f3f3578a64d4f","appstudio-devspace-fiori-create":"77767055014bc9846416f09caa40742726d22ef5294c2769549be34b2a9675d7","appstudio-fioriapps-create":"86a7c4fabce8bab9ddee41996ef1fba73ebe4d7435f6784cedc766354ff794b4","appstudio-fioriapps-mta-build-deploy":"4dbecd0be6948c60f9890695072773ec5e2a13405a4bc956d9c97ab183543d37","appstudio-onboarding":"af1ee44097bb2b528957693023188d9a44c937451bea39a3e98091f8eec4239d","appstudio-sapui5-create":"c4673257262ddb8092d05f5e0a73876d94323e6f484ec2916708d86a63738f27","appstudio-sapui5-debug":"861bdc4044bcf744f7eed708990ac63ab75c46dfea38009673ec5419081bc342","appstudio-sapui5-integrationcard-create":"473a7f11523b533e49e3b1dc9d3cc8d4f8d3d0339fa6f143c6db893f43221660","basic-nodejs-application-create":"b0f418ed874194744d2844b26ed096294c0128b6db0d0192a2ac1f09def57fb0","btp-app-logging-neo-getting-started":"ace8432c485a0c3e44e12796341397ec10bb59295561fd89436604d83d42704d","btp-build-code-migration-plans-add":"3a502ddae93d4a950068bd238db0359ff9571ebf83438315b03b2b1037e45495","btp-build-code-migration-plans-mobile-service-build-code-plan":"fe0eb982f5d6ed52ebc5d389a16af95400ea1805a49038f8f52175ef647e853a","btp-build-code-migration-plans-mobile-service-plan-update":"5e53a892c5647517d1b95cf2ac448ceb096c38cca7eaf418fab8540cb909147b","btp-build-code-migration-plans-subscribe":"72ea54d32c42db2cbf8e448dd4b558b42a03982a934b437e54fa366ec92bffa2","btp-cap-beginner-bas-wizard":"021b4957da6f518ffcb56d332eac345224560759409bcdb7bfc550078e454adb","btp-cap-beginner-golden-path":"9018a310bfa7338b31b2740e31f1a54d3401aa7596e29f99b46bd62d6fd843b1","btp-cf-buildpacks-java-create":"7962b99d9c7e044d28b337fc9f0087cd34631528c2cd8569f0d44ec604200301","btp-cf-buildpacks-node-create":"db52917aa56ae5dd70b183b62be3246d6ac63e3b2fc4b068afe69a6e955a749a","btp-cf-buildpacks-python-create":"b2f086461ae6f0a3da6f1671f0dcbfd3c74064c8e51848027df8458bac4509f4","btp-cf-deploy-mta":"713c3844bbbbb037ef61c5dda6c20e495b5220b61f82b0899f4bb34aa1fc11bc","btp-cf-ext-s4hanacloud":"6b0646baf1bc17a06ad254f90d1493e8dcc381224c64a7fad11b5ec50d92d709","btp-cf-ext-successfactors":"69b08bebba7568b930cbc6f078bc120d1da785b11c31d7f15f40abc5e1c96a65","btp-cli-setup-kyma-cluster":"eb42fefb38403e0faec77284a7174fa4ce9f5e4a949c153ebf49261e99142354","btp-cockpit-cf-deploying-applications":"a24c28fab7e507e407f27ca9d1a133a280f84907029a23362bec1b1ebfe97417","btp-cockpit-cf-getting-started-with-cf-env-and-cockpit":"fcf7eb4c0ce0edb1ecffe15f4dc4b72c2c0de50778a824385c14b6323fa1b114","btp-cockpit-cf-managing-deployed-applications":"1704d84e29424c04a070eb1df9a6fc0c71da3eabc3f78f4a68b41046a49230d8","btp-cockpit-cf-managing-org-members":"5f3a21582150ba8aece1427c3a53ba830bb205718a78a1a1eed22084fb25a258","btp-cockpit-cf-managing-routes":"2dc2b1a353ef80528fcf49519645a0f4c602e6e08c70c97c8469e8527bd284fc","btp-cockpit-cf-managing-space-members":"3f507b4d19792e974a32640bef62d03e9a0d1bc0b785ff6c3707d6c70cfbb146","btp-cockpit-cf-managing-user-provided-environment-variables":"526d3cc9b5a1191cfc8174812ddf04a3297d2ecf601b7607ad58a03b946dd2f3","btp-cockpit-cf-monitoring-apps-and-spaces-with-events-and-logs":"1666b463f077c3d912405808d77a67f8f94c3d570a021785c3f0f405cfe2d8c4","btp-cockpit-cf-understanding-environment-variables":"a26eb34b018fc176f4988a458f26fb49f66dfdc39bf08f361074a27cca3983af","btp-cockpit-cf-understanding-security-groups":"04296ec2cb24da0c2194aa054809518a06f095f8137fcb9dea0304ffc2d4bb16","btp-cockpit-cf-understanding-service-bindings":"e47c86c3b830f3d53dc9a4d6d58074448ef2ab34d14b40ccf1f0d2e32eaf9adf","btp-cockpit-cf-understanding-space-quotas":"18382f2096383df6d507556c6eaba47a96c19c4ee59c8f0ffbd4ea6a62e89c86","btp-cockpit-cf-understanding-spaces":"0f9e71a492557b4a8909d6425bc0ae780b5ba5d3dd385bdfaaa813f9fa71112a","btp-cockpit-entitlements":"ecdd953a94ee4aea388df341bfd3d8b59143dd7fa822a4ed17ca11a0a85f8433","btp-cockpit-instances":"06477fdc8906cae9310d8174ca330406a66be946f0f0df33dd26f542cfea4c66","btp-cockpit-setup":"f40328d8a40d6e3f522eba9c8b5671eb5436f68dcf85446c689dceaafeea40a4","btp-content-agent-transport-mobile-apps":"d9fe802c268259c4d2ff73be1b3d89f988f7425bf4f56e257a477c6e71672bf0","btp-custom-domain-manager-getting-started":"5d74d970e199426da33a093a7f4d0310a229e5719bffc09ab16dafd8510ef2c8","btp-deploy-cap-app-with-ias-and-ams":"b5f7706e6ce10e37b71e9a91b3e5fe82989f8691b496c22924e0b91075d85130","btp-free-tier-account":"32456e9177f7e4bbd57d834918379c62dd1c0abb780e7e8c3dcee96708e7dfac","btp-hana-tenantdb-xsapp-create":"515d35c360be3bb2631cb5b7842d2c8943d00751b3e67ab65786b2e23003117b","btp-hana-xs-app-create":"4bd85ded1718c35c16282b253a2e7b20a1cd0db89566f65aee907619c22aeefc","btp-hyperscaler-extension":"1979b9c7edc1a03782982dd826681344149a40452d751fafa6bd33efbd9a4b83","btp-integration-suite-creating_data_type-message_type":"c44ac90723e9f4690a3f39877ad5944c8af246e0eabdb53f0c42ee98c17a7b75","btp-integration-suite-design-guidelines":"ee933bec596eadd5bf464caf6985cd5546ce96c1fb4bba4b5ac085c2c73fbbac","btp-integration-suite-direct-process":"84c50eab9e650865d01d83e70ca7714a429dc074b009a9ffd615c3ee2973dcfc","btp-integration-suite-editing_data_type-message_type":"36fb5860804ea58e0ff732660267814162f482130b6c04351975d5c3353fea60","btp-integration-suite-execute-batch-payload":"8baffbf9ad130b4d85c3e19f3a97d75a30606bba5645eb5fd6236a30be5c1a08","btp-integration-suite-integral-api-management":"cf4a5206c37bdb64542b3953e6c17946fcbd1adc8851ba0903d1eacc9af0cf33","btp-integration-suite-integral-appgyver":"6c8efb9ff7cc7d30513d6c0d4b4bc1b7b236f84226d822982421fdbbb5ec9b8f","btp-integration-suite-integral-cpi-tasks":"5381d3e41606b01d77ec943f17871d43f2f013efe349c3ff9ce6bc2f456efe0d","btp-integration-suite-integral-cpi-urlencoded":"54d3c42012f04c8bf3c167925b17b14bc518591f073af7d83211da036c92e55d","btp-integration-suite-integral-sales-core":"19b35e5c33873cb469a855285b0f49f45c5a287654266fe8db333ffc94d59766","btp-integration-suite-nonsapconnectivity-integration":"c11871ccbaae12bb5e28d1543c41aadab69bd54bf0885daa90d08fb23cdd972e","btp-integration-suite-nonsapconnectivity-openconnectors":"8e13a489fd28ae2fa69c9496d14a9b60f1cb0e490b35ae496ad3766d06cbd30b","btp-integration-suite-nonsapconnectivity-settingup-suite":"654856e1860bb80d724039586f2028286ad5484d160cf10ff90068d311abae86","btp-integration-suite-nonsapconnectivity-settingup-thirdparty":"2139f056e18b15c22dede00c1b1f7e1ebc970c4ed4f67ae735fc81b56e3170c4","btp-integration-suite-nonsapconnectivity-test":"2de680306146c5d81710416f1df4f5f4f97f4257ea3504d79f20370651245aa6","btp-integration-suite-nonsapconnectivity-usecase":"32a7b4cc8ef0c641a64d582afbf3d184ff203bea4cc8bcf51a5f6880cf5d6f3d","btp-integration-suite-oauth-integration-flow":"fd65018879243f20b92c41073362e9cc7f28306ecec9e83cb242b96819943eaf","btp-kyma-extension":"8d2ee11efc508cd84daebc5683d0e90bbd4b7ae8d76b45eebec3071878d92d4c","btp-sdm-gwi-create-destination":"9e9f6aa81cbbc9673b90120750e900308d9cca11022c262b170929f6e383ee00","btp-sdm-gwi-create-serviceinstance":"4cb0e49f61d1c0398a55097aad7e1a1d09d1af4637420ae2a0bdfd809e58293f","btp-sdm-gwi-crossdomain-mapping":"abf4d8d1144571c99d0e6d47b90476f7d37560d53e7f7d4505474f8c76cd5b4b","btp-sdm-gwi-hana-op":"5f8c0620284dc3099625d221922157fee3328d655ec67eca9c66551cd3e5fffb","btp-sdm-gwi-odata-publish-servicegroup":"8574ac1af3fd13985bd04aabb968275b1b73bcc778c198b47681fdfcf29e9e6e","btp-sdm-gwi-onboarding-repo":"eac5cb8d198d05ef432dfca63e632ca07df911f8d3c1f4ab865818a0e657cbb4","btp-sdm-gwi-onbrepo-jwt-token":"f1b454eda736cd3104e76774fd2c2fb0ca842ca70c42571cb6f54ffeab3b2a5a","btp-sdm-gwi-s4hana-export-testing":"895165ee409240a4425a08941a3128b53736c42b6db1b66c6b1530417d4b9969","btp-sdm-gwi-s4hana-maintain-businessroles":"f6744890c3cc0586ace6f76b39e785ff0beeeeada4d72b89d73b4a8ebd3a0935","btp-sdm-gwi-s4hana-protection-allowlist":"1fa688aeb9554862e090e91a52c3ab03e10b9bd7f7cfae43641ccc13e6a867e2","btp-sdm-gwi-s4hanacloud-create-com":"b5680ea3b7273117bad56e72dfb0f4b9fcc60a4390b4a0bf5e104e278f5e9efa","btp-sdm-gwi-s4hanacloud-export":"a7183e500105f42b043f7bd053f7e427e0ce51690e3d7f66ace48fbaf9a0949e","btp-sdm-gwi-user-management":"3aa527a908d722b93927d3515bc8639e7671b425e0ee6cbffeb783c946d7eddd","btp-sdm-mobile-onboarding":"7975a849216fe69e8361e4180fff0860b1e835218582931e7d60acbee9dbb52c","btp-terraform-get-started":"fadea3fb1e33232937929423a8747d5e26971668764384ed8fa75d832dc50bd2","btp-transport-management-cpi-01-use-case":"1531b67cdbcf0355730e41b6feaaf1fc255a4d84916316d815474b8ab4cc77f4","btp-transport-management-cpi-02-set-up-source-account":"45c3285443c5a54f6c44a2bc4d931902e7abaffc29ff0941380d2572cd778de4","btp-transport-management-cpi-03-set-up-target-account":"aedb0d9077e264baeaaa928c99074be12d68838eb8c2e51d8580ea1059b9b796","btp-transport-management-cpi-04-connect-source-and-target":"87017b376d75e374e005a797513ad441eb679fb60fbc78200b2e9b5cf221c3e3","btp-transport-management-cpi-05-create-ctms-destination":"391a05867d8943be17e6977426375a0706a7a1e9aa75a0dd60adc8e3876e1f17","btp-transport-management-cpi-06-enable-the-transport":"88f6c1a1a0c6a04e766dbca4325bf13ecbcc9456b6c75e533ba24bdec7cb2571","btp-transport-management-cpi-07-test-transport":"ce89d334454690dad8a2edccdde83c61d3d099e3b425fcd603d86dbfc6ef6e3e","btp-transport-management-cpi-08-cas-ui":"d33e2e09850ddee5d23563bbbe1e55253e8d3c217f50619eaf56e36d0b9e08e5","btp-transport-management-getting-started":"9f40caa8f776e6c156f1e786532d24f94380e1886ec63f5e79d489faf92bc6ef","build-apps-cap-app":"15f81617d54976e4d0c98920371f9eb645aa57a66b29a9fde40e6e071cbece53","build-apps-cap-expose":"663e467359cf96432ff49d8fcadeeab1716f47fdc15940114c57a1a63a8f7609","build-apps-cap-service":"fd5e59e8d20b9f5bdf055c1896bd3a079c04dac09f92970b7bdfcb56b9b21991","build-apps-offline-storage":"8ea7543c865b8e971f024a8b7caa3eca5a710f50b768125832c1d871b0a5a4f7","build-apps-s4hana-crud":"6d40535bdc438885d8e27ad59335a940412c907567b2a19f25ec4d61dc9499d1","build-apps-socialmedia-1-custom-component":"1c55a308796b2852536eb6159fc516e49e15bec18eb586d3ab724fd756db0eb8","build-apps-socialmedia-2-backend":"528d2466dd0f82af6e322ba560e255e67146d9b49e14ea22b4e5c05a0745ccf0","build-apps-socialmedia-3-product-list":"d06cd02dca4625446ef18046ddfbdec85be028e60042012509e27742c9f38ca6","build-apps-socialmedia-4-details-page":"74fc9277f4b1f255ec69b874884a12f0c68d23083d1b4140d9f1894b4622352d","build-apps-trial":"9812eb807db4fa02ddc0051163f0e43ae6a1f2bb185f006f3a724b16582161fb","build-apps-trial-booster":"b2a454cba07710e62016c18c97210f27390d312d0dc9e2928018cf1bd0d7947d","build-apps-workflow-check-status":"88cc62e553e30a37fbba260342a66b9194374711e3ac3910a9c0071f03692a2d","build-apps-workflow-es5":"e468a9c172886f965eaf9c5dcec78abb0097b4cb51a36781c80e5748ae4ab1fa","build-apps-workflow-trigger":"c5f83d48d1c2580e99924f4ceb41843453c8c8ce8cff8492a6c67c6a2c773f6e","build-cap-app":"8c1c65540ab3c319588f7b874dce09f28b4e01ae2675c72d55ed4d30b5819d6b","build-code-complex":"12247b3a7998e0932706919a8cce75d39b544bc1c2bd98b64106e695f1bf97dd","build-code-new-project":"180461173fecba66ab97dceea96649affc32b9a3594420e4a8412114c2f33105","build-code-setup":"613ed6de2e2b764af63daf3ae45fe0256a56cfe1690512544fbe7c0519e57afd","build-code-simple-git":"5e0ecd7ca5c0047c7a356c5a3c41463202f50af1404a27080d14da32b1d7e000","build-digital-coe":"e06b9ec258b262bd9942a98974e4e9c13eba40074f17f54d66166f235ed963eb","build-use-case-buddy":"c12bfc16eaa3183151593a9734e4253b21d6c4ddee75946576802a4c981eb5d5","build-use-case-buddy-connect":"901c1dad5e825e0d99de9fc2fdd5bf1141de48a78b0df4587b415fce55339990","build-use-case-buddy-customize":"e560fafe6af2e2bbbc99a1d3fb2342c2ebb76b5b0acf61bb4880df3bbbde64e0","cai-bot-getting-started":"ba7f615ace1d1d2f79f9b2e5249ee310ae30ac371759a6265622b23bf7cb22f6","cai-bot-shipping-1-track-bot":"5ee780b0ca3b1efac8fd7f61a984cc59a1ed801b7256697dc170cd1cadaa7c37","cai-bot-shipping-2-api":"7dab76e3f9140a4232e2b2c63fcaf31e5c81d883051d9de66c4971c547df3a08","cai-bot-shipping-3-price-parcel":"43e6282927dc9fab3b2bd88b63a68889f2e7d2b6a0c42fd6fbc7eae1e3ead6e8","cai-facebook-messenger-bot-create":"aa888a95a0eb5088bd348f98031862d2d110eaa164a1ceeba748ffd2891973da","cap-extend-sfsf-add-launchpad":"43dafcdd61617d6ead59e22cd722ca9faa39b3900b8ec5963e565c8657a944d9","cap-extend-sfsf-add-logic":"c236c59ffcf2855502731d0db3e934db69d6e6e5528325a9cf552477f43fd316","cap-extend-sfsf-add-security":"11466aceb3358766f1e4a4466d289fb3d30a596e850549b49d744aa5dfa0fac8","cap-extend-sfsf-create-service":"c63f0aa8f4117f3607d9a1ad7f988f39ace3ef03842b5ff89f9cfba0109cd837","cap-extend-sfsf-data-model":"f72b9ab44e3a38e0ca8a4bb92101c863b91a5f41efc96286bf99e3dc6ee30a1e","cap-extend-sfsf-deploy-cf":"e92aca65df234667198eeef2af0c62e976fb5d51d0b491bc3e0305ae530c35b8","cap-extend-sfsf-deploy-hc":"4c9ab5a92e3a61f8557d958875e9f25787c75e959951c5aec84766e283085fdc","cap-extend-sfsf-fiori-elements":"2c53487a05cae11efe6ba8abd28215d88c6aee9d525d8c273f6f5fccac37ba1f","cap-extend-sfsf-import-services":"d8efbbb475c5927dbde1cd8633155272d8f6e84153f2b9caace78a194761e69d","cap-extend-sfsf-intro":"5cef7f950037c5dd55c362c8fecc29744f8167ec79ec69193ceae4cbae55627f","cap-extend-sfsf-jumpstart":"6e113f436497b813d3be3bc0843381cc821eee08c168af5a18a1d88b3810e072","cap-extend-sfsf-ui-annotations":"d1eb8e3f912ee8f44e33b35e7fe935862ea1a296d7078fc0f76fd0356272b7c2","cap-operator-01-prepare":"1bbbd4c87d1f2865d4d7c29adea33695f0b49c966a081d22c691543d0ae8f540","cap-operator-02-tools":"a723fd0e651ac980cd995187cda6fd148b125a572f605987b7c60c2e8da49df3","cap-operator-03-add-cap-operator":"6d6aeaed2b47b17a033873831cfb466f2f1b730607958e71af5f4e7d2acb6d1f","cap-operator-04-prepare-app":"b3b4fd0cc2d5d885acf5068e981d7b06580551bdd24031da6b8d8cc3aa72559f","cap-operator-05-deploy-app":"9f8564d456c69e14f98cce66e39b3747894f3e67e79efe747e251da656df2c2f","cap-operator-06-subscribe":"041b23ef2b5e5ac385fc965c91499f12a5f2bbceebf8cfcbd62b3ed105f66b0c","cap-service-deploy":"f40b8acf832d5af599500ec92d92683145c4ce47a6e4ba415a98ce6b93a90ddd","cap-simple-nodejs-service":"42b2a110d3ca96d186a34b054f1a8f6cd5d0e4d7406e1e933883b0420a186265","cap-soap-service":"21330d50d6f3a0b6041ae4b552a72857598490540ee47b849dc7c711fe07b6f0","ci-jdbc-lookup":"7b67ff12e40162d506fa91bc651f9559e1ed5a4b639b89bff211253e4bc7dfa9","ci-rfclookup":"dd2f189ec0b2bb164a1b1696ba59a82698dcc21cde231f71088d8468ffc46f22","ci-sftp-file-polling":"25ef958e44346a56cdfb36a894c992e038c89c4be9bc6f3982b0c8c9984256c2","cicd-corporate-git":"a84d734fbd2a929ddee9ebaf54c4bee3b34edc20d38cba2db4aa0203cd1e1243","cicd-start-cap":"acd8d7bee02000bb641f12722175f3cb5739d7fc8eb27c616f1ad6e7330fd705","cicd-start-fiori":"a3f1319d1d2622418cf8e2b5912e199ea25cff61a9b43885fb008bdb62a1bab4","cicd-wdi5-cap":"e8d1ed4660d98a5f1df570977e3582aea8644102503fcfb2e377315754d1213a","cloudsdk-extensibility-type-safe-expand":"acbc8593c685dd60c1849842e6aefe630dcbfe675f48c92859815d171fa48279","cloudsdk-integrate-cap":"b9d70db7126958124226d67ab2c7961244015f3c6ab80dd772cb3cc6fc2e3bdd","cloudsdk-virtual-data-model-odata":"f78e42567ae369184394d4d97fbbb16fe1878fe48cb8709c7fe5b9774a16d569","codejam-0-prerequisites":"28ddb36f8345756df570299898882f2c707ef418b529f784ac946f46ba54b13e","codejam-01-homepage":"1b51c1e4d961d950224cd9b2db460fe0fda5426951350a239e418c9626e965c8","codejam-02-product-detail-page":"7117142264a3a9cf0a64ebbe0dbbe5e8dc6afec69ce34431eba59f8e9e7c26a5","codejam-03-cart-page":"871eee37d220c5bb550938191e9bfbf3c9324886a1db9edb4eee38f890be24be","codejam-04-spa-empty-process":"f077669dd7a6f024e251039981db6de425f885ec87a6792ebbaa4ba967a58142","codejam-05-spa-approval-flow":"79c2b58f0f375d462f7fae9b7ddbdde75b39eb87dbe3d96134630d308fe15c90","codejam-06-connect-app-process":"4f85ca5672dded1aaebbbe89ccedc844b0ef41cb83b64f28ae4b58987c590643","codejam-07-build-deploy-app":"81214904dfd49ae4b95252ccc881c2ecc31c7ab271b6512e41431585f2566b84","codejam-08-work-zone-app":"20ab103456fdbfcffbe7d285d2f7bb0ef00a8af89d0ca62ff341a5e6ee8ca56d","codejam-09-action-get":"3338c19cc3b7683110fc4fdc3c5c0307ccc3e699fd7fb52b17d3460f3f68e3a2","codejam-10-action-post":"0aafdb8dcc57592216c91ffef0d7d3b89b32badec43c36b67698d57ad0008f6d","codejam-11-spa-rework":"c94c1470bc7198c252818c676ebd85d790a2989b3c3d017a10ffe6b07690efab","codejam-12-scan-barcode":"5b7bb710af1bcc0e2ee2051c9da8d0a73a837fa6c5d8109e351cf60b5d48ae7f","codejam-13-filtering":"1c3884b99419f8468f7ecd5bf131dae4068006596f7f78e2ef7cd1fdf2b048f4","codejam-14-spinner":"e41e5b6049bafbf9e46a2eff4d594c791ca9cdfbf95e3d833b607f98b3c2f74f","codejam-15-conditional-formatting":"b1c04135ee44bfca9399f3c045d6311b488f1dde420b8552dce774a687d53d06","codejam-events-process-0-prerequisites":"37237c4fd9c7fb8bb888f533f4d1433ea08db17740038956faf946ab600b4ae9","codejam-events-process-1-bah":"71300f1d08dee0f0d08db08bcca446816fcb951dbf16fb28f33e737aa4f221e7","codejam-events-process-10":"307f14ad5cd035428a21627a3377c34790b9b143a7e349e18d891eceae6262f7","codejam-events-process-11":"b47e1efb8b434cb236a42fc7a6b1b18c4ca51537370a7ca6bd809811b5ff7717","codejam-events-process-2-eda":"4d76b32c1d4bf29880b2dc5d5ad5d78d33a4a2eee88735400b67918e45f6f2d6","codejam-events-process-3-aem":"938fa3c07c4fea1fc8403d7b67363386557bdff555842a38bf02bedbdcdbfefe","codejam-events-process-4-publish-and-subscribe-events":"bdb224c29c71d1753ff30865f6f2381f382f36043aa7547b95b789f841d11f19","codejam-events-process-5-send-events-sbpa":"de6707ccc26c717efa06c7f42516ce002b9a9058bafdf7f51e4d3a981592c06a","codejam-events-process-6":"0ce1c10014fb2fccf9c994e2904fac21de5165000c14c25a835e3e0189b14740","codejam-events-process-7":"033b5a5c2bb137f2137752fe4c4cb810a9df95fb845e746b39cceabdf262591b","codejam-events-process-8":"cae55cfe95c4e16c363e327ec9ffdbf90a11d2175f0ceb20bfc7054e0ae7608b","codejam-events-process-9":"d62ed9d2b7981674c2f530659946582855a1e7efd115f4ea83ec8281da12005b","codejam-events-process-introduction":"22a8f6343c3ed40a95e9bca412a11230c92d7d71126568066a698ee7639f73bd","community-2024":"dbfce7f15f5ae28fb6fc67b306835d99acc51953b18da9b94d2d055e117ff700","community-tour":"9e730e84a9f0567697d7fe533f75ade9af91c57268aa59fd790280f7535b9079","concur-calling-apis":"a552b5866a1674e58f6a81ba3384792af62aca83162af2d9923f2d2cc29b6679","concur-get-refresh-token":"2b3d19d959985951f6ba19a61b5b49c01696b9b54d0ae6d5a3edc606dce7309c","concur-refresh-token-management":"629232648e190d1ae06572fcafa77842e9fc82e6fda9198708aff86901d1e1df","conncet-private-link-to-gcp-service-connect-kyma":"99e9f16699611af0eae47a9823e6a1059594c25a353e0d13dc6d08bb2a173865","conversational-ai-api-oauth":"6c0d040d8094c62b51abb06b5e8053f39111176f1070e16208c9687485368a98","conversational-ai-api-oauth-postman":"2f82c58e1057310e2fa79b6bcab6294c831878ee9341b24d371f9b58fb06ab48","conversational-ai-client-apis":"41864def9853fe160c5e5b653d6fc8b4a1974474e28d82fcf258385557670675","conversational-ai-debugging":"f0a6e0f0d092a9eb185b2170f84416ee87c207fa401676e4c36e762287715bae","conversational-ai-deploy-slack":"4dcb38b3c4074e98b5eec5573cfd40c61673219aaa0264f19cf58ef1a5ab45a1","conversational-ai-deploy-teams":"27d5d738b0ef49806c876a1f0c5ce9279ac8beb7902821b959bd6b124dae5fc1","conversational-ai-deploy-web":"f5b03cc2bf7ddf5265c313aa9cb3ef504db3d4a75f7c6aed978887f141507935","conversational-ai-faq-chatbot-beginner":"120611c58f3c21cdd8c4513d8eaa80d4c5c4db2cdcda241b7734a8615803b5a7","conversational-ai-monitoring":"1e14f4d456a22acb1daf3a6dafc1e55ae8004a45eb6c779c809a0011f2c99b2f","conversational-ai-scripting-intro":"c4171e85b54f3fadeb860221d9400a14bd350d470937d360f542d4ef8b857968","conversational-ai-speech-2-text-recorder":"41ba13550e1df68f4e32c1a35771939171033b032cf80923a28f2c915792d9b3","conversational-ai-speech-2-text-simple":"184e9ce00c4330517f38dbae06f0df69057e6dac719516b7881517fd849335e6","conversational-ai-versions":"d0c288ec4c4bbec9ea893560bddd309837d01f78913d8cf8573671993d88d7ff","conversational-ai-webhook-api-call":"de0cfb244118b0fb0b82c991c2d0f7ea736bea2978ba7e7885dbe938792b3444","conversational-ai-webhook-script-python":"e28208eacfbfc2552a45813f312b449db55588d2856c570f1be96dd0bca2f32a","cp-aibus-ber-booster-free-key":"cc0d215dd67c6ee47a0388df7be375e683235910a668cec032a1126f1367dee3","cp-aibus-ber-booster-key":"634e1468fd1c050e97f55616c7d84da26a8314f5323a58bc20a27c82fd671d30","cp-aibus-ber-custom-data":"c676022d424c663b6a11db44a2fa9f002aef446a4eeb551afca8669a340bc3ee","cp-aibus-ber-custom-deploy":"aa376e89f756610ff460dc9fed257487e11db8c091f9fafdfd45d60224ef04ac","cp-aibus-ber-free-service-instance":"25c3f4d76d6c016f352bb1a76f9debc3de80d9554d24719242d5164197bb1fa3","cp-aibus-ber-python-sdk-setup":"0e29f11928b1246d042a6ba205d390dbc1e270b26159f1bc46d66f1abfd2fe82","cp-aibus-ber-python-sdk-usage":"f058eb0042c19852d348e97565cef8cf7a1e9092672c2aeb56c6d946f5f33e7f","cp-aibus-ber-service-instance":"96d548e9181761b459570445027378599638afd89ce3b74f4ad6a3c8d65f2803","cp-aibus-ber-swagger-ui":"8942fd9d1de5b96b49ed9f519f78eb9878c1f7f6ca0a56c074abcf8b84f8ee63","cp-aibus-ber-web-oauth-token":"d76c3d3a70d4a74afd023aab61f125a8b51c95c67cd9e2b00e9313bc9447f201","cp-aibus-dar-booster-free-key":"ace59764efbaa82574c594bf927c7ce681c53ea6ebd23421baabd7b2d7bd4da8","cp-aibus-dar-booster-free-postman":"fe790f231e92f31bbdc24bc0bfd177edd198f1a9f635956940a4c54cfa861700","cp-aibus-dar-booster-key":"9c06715db160028329615f2c6c615cbb1598491c5ca83409199ff6a32cf5b67b","cp-aibus-dar-booster-postman":"d298ab5be431f3c641c0294f58f33830caae60fe2044d0a2ed008e54b2fd5e61","cp-aibus-dar-classify-delete":"2e8ef37f38f6dc79ddbdf3b4c781008fc9f55eab66783584329dc4c3b4eb3bcf","cp-aibus-dar-custom-dataset":"02dac624e681476a2016cc5f690229329d43d657c0e6f01df2a2966c896ed26f","cp-aibus-dar-free-service-instance":"810e7e8e4691ba3fc76d96404d35be60646a529a52b93c3d8b7cc79c7c644df2","cp-aibus-dar-model":"c958b768e72c8ea5073f7b704d53a0822a0cdacf0395b78fa94bffeb117b0554","cp-aibus-dar-sdk-aiapi-usage":"c3693744310d08e656dd8958643c54b9458db37c681fbb7ed8ea0ead659cc114","cp-aibus-dar-sdk-setup":"d3502ec8980d44ae9a67aba40ab5a30f089903508d072885fc05a13a6a016075","cp-aibus-dar-service-instance":"fdd4d91d43e2d54e2e674a5fd152cc5c168e19d7c389b478f0b047e1fc727759","cp-aibus-dar-setup-postman":"3e1f1d20f756f5614e197a1c87ec0c0b8dc40b1e569b3061ab8705eaa228379d","cp-aibus-dar-swagger-ior-model":"907652a28bf57294dcc0238a00a239d4a8ae5cc6d33eb2c1424dde8e6026886b","cp-aibus-dar-swagger-ior-predict":"a7604c6ec60fa5f5a5e9cd625fcd6f8960eb34269aec37dfbfbc7aa0c71f9718","cp-aibus-dar-swagger-ior-upload":"aed08d5f1c3929fdf3b4dd1b99a6e34d443602910fe2e99c2d3e556fc25e09a7","cp-aibus-dar-swagger-regression-model":"bae7b3b7333c91a486c25ee81c594723b2cadef35c92556acf8cd0b82e786c6a","cp-aibus-dar-swagger-regression-predict":"784d9d356d6b8c9455679e8aba860b588538b26d3973f01f57ab3cfe639a2bd1","cp-aibus-dar-swagger-regression-upload":"24f1d9baa9c34eb347d74460fccb68f58b8a2f5407fa81d77854b3357495f432","cp-aibus-dar-swagger-soc-model":"1feaaf028e3ac82929f9228f6c5ca8da23bd72c2a27d819aa13f255fedb4cbaf","cp-aibus-dar-swagger-soc-predict":"8925ba0512251a687785cf3b0277699788be5b268fb601d9b626f7074b079731","cp-aibus-dar-swagger-soc-upload":"72c62cfa3a123bceed3632a2814c752e7d5664c6c867909b2d7e692318f01021","cp-aibus-dar-upload-data":"c84c56f634eee0dfd69f18f7c2d63af8a8ef6c8f03b3ad69fa348d01dfb109d8","cp-aibus-dar-web-oauth-token":"c651cdf56ffbc424bf11a886fefe894b5c394af9d0bfda594f553ccc4d757df6","cp-aibus-dox-activate-instant-learning":"92fb25ec79409493f26056c451c44c294eb93e43edb9df0076bff503c4608e74","cp-aibus-dox-booster-app":"2ade417393b749c48544ef7e519424e1abbaf5586e4402ff693fd5fbed28e06f","cp-aibus-dox-booster-key":"ddd25e7d1e89f69db5b104ce3df5489de4d089cb4f659f4d17b6feb2f590d377","cp-aibus-dox-data-api-bus":"1ee84e7f01dfa5ba36f223b352a382c7bd2a7cb186feb96c01045fb5a71bb0e0","cp-aibus-dox-data-api-emp":"c10f06aea2f41ae20e0885c7b4a436eccfe46e2b2b91a8262c5030ada5c1c248","cp-aibus-dox-free-booster-app":"d1a3f3f1da1cff9e25a9484af875130efe41d6bb2279e6b9d9496ecb7c93b59a","cp-aibus-dox-free-booster-key":"2aaaae9f943b4e3c63c949b04e1c2191fb94e68f0a00f33ec0ebfe5e974fd066","cp-aibus-dox-free-service-instance":"ecfa7deb6eae22d34f7147806c0899768cf2b15d5de67462a3e6f1f1d3b244ad","cp-aibus-dox-free-ui-sub":"d1adb564c2bc091d8f4e4a279456e77996ffdc5fd167d09497cb5417b1474d98","cp-aibus-dox-service-instance":"b3a88123dff5c90e4c31f9b5a3271ee8f21761542302779225e740a5cd30122e","cp-aibus-dox-swagger-ui":"930b9ab6f938915e3fddb54ed685ffe9cd6fb8251109d753ee6c0339de7414e1","cp-aibus-dox-ui":"2a14d5e6d792baa4eef332ab2b92463a472129339080bb571210c2efed68d902","cp-aibus-dox-ui-gen-ai":"ced99d8bf7ee251b95eb9ca830026e2ce4e91003ddb3ea9d698c45301d0ff6bf","cp-aibus-dox-ui-gen-ai-std":"42e282bb6259b51422826ff2ab71b2340f32dfb68a241672057b421cccac18e6","cp-aibus-dox-ui-schema":"1a2e4698739d4bada99768ebe8d93b3c4128612e684b0664e299740c11c69396","cp-aibus-dox-ui-schema-custom":"5630e6d7a0005b6b83bb06770d4dceef8b9e0e2ef71aeba786b3bb1b18a3c5f6","cp-aibus-dox-ui-sub":"c6680a499c742c04d89bb3a0e9f67faf64ec5b3726f2bf24e240572999cc6711","cp-aibus-dox-ui-template":"0b160a49ebfef12dfd59f857c9b3977b17c67f70771ce5fd497d3d116c46da59","cp-aibus-dox-ui-template-custom":"add95f356c87e67b58cc55a2ff4e853fa3d3c99bc1a82a43b569dd62ddc85f28","cp-aibus-dox-web-oauth-token":"80c04ac20311eb42f7f7d183e272d655088baa949c885ae47866fe26ba359078","cp-aibus-pr-booster-free-key":"f0229c9ac971939ac12d1ca1695fc524a1bea773588582816f7bbdccd2c8dcae","cp-aibus-pr-free-service-instance":"01044996b5fe767e36a1767f9d01095b05d04be2c58c8de3fe0ab58b0d4818ae","cp-aibus-pr-swagger-ui":"963b3907b61f12ca36074509a48cb7b9f7326897562751eb9286a42009adddb3","cp-aibus-pr-swagger-ui-custom":"384258c9eb96594b01df986a8245aedbcacc1db45514b138d3ad86e6f1008fcf","cp-aibus-pr-web-oauth-token":"ee623f23de81ff2b71a10edd5a292659c703156716e06f6226e005e322dc4014","cp-aibus-sti-booster-free-key":"ec3388de4da28054514be3e8b1c129fc1b87fe30bc39e1b732bdf940358c4a6f","cp-aibus-sti-booster-free-postman":"2aa7ea47aefa9d27e879d7a34dd0ba9ca6e7975bbbbdd1a45149f05584d326c9","cp-aibus-sti-free-service-instance":"c44dad446a0cd8062ca01a3a5247851bc28b8ea9b58cc26c1e664dae5590d2bc","cp-aibus-sti-jupyter-classification":"0c2c0979f5eaa5723147c93a2b2792433f28a7088ad7f9f9ffec73ab899958d1","cp-aibus-sti-jupyter-clustering":"efe4d30d66ceec748ddb465b0a12f53bbf6a7504db28a9d8abb2b68627d21c63","cp-aibus-sti-jupyter-recommendation":"434d4da8f78b52ac9905bd2cdc89e141c88bdb7c563b690b4ea55c2f6318971c","cp-aibus-sti-jupyter-setup":"ce8a3a11801d6b398437929b08ed63775ea9ac9a45e696c335e1b689f1d5df0b","cp-aibus-sti-postman-classification":"ad70f8ca4b1ffdbf90ec7d1cb23edbc15c718a1be3e87dee3d5d89c5c4d8dcd8","cp-aibus-sti-postman-rec":"f3f9a7e1323979a74521fedde9637515604a5575f5950544036e2a4c4c2327ad","cp-aibus-sti-setup-postman":"0bac793c7714dd43ac0043257ee48daa8a9c2e6c24020475c863d4a2aac43c18","cp-apm-nodejs-create-service":"1875361235d524ad8870bd0b16390be5a6accbf8508d792e3952bba9523ef739","cp-cap-java-app-studio":"15ddb0dba3cf380986210db61dd41cb53ee1c0a16d5bd0e24ed60f07677bae5a","cp-cap-java-custom-handler":"286c9934d6ec2bdc85d7b84193e94a2ea57452759d48d9118393d4f686b98762","cp-cap-java-custom-logic":"d5b17eedc6e714e9db0d6418bcbde68334a43146414bd09d081791dd569099f6","cp-cap-java-deploy-cf":"8ac9d0544448a7041bc0237186142b0e1c26aa8a32e9dea187d7a382507a9433","cp-cap-java-hana-db":"fcb27b6403a9c621824d5acb2c61d877256484b8749bbe3a1ef652c17b336944","cp-cap-java-reusable-service":"be00f7d4d36d619cb8129d213233bf0673bbbfaaa6f551b332f24b23a9a58212","cp-cap-java-security-cf":"1a8707ebf8d4480bcf34a94d86b0fa81694666a0d1ddecb505981707fb6e1d19","cp-cap-java-security-local":"8169cb3786e925b9580aeac4aabdd2831459c0045b4940791ffc2b06c1431093","cp-cap-java-service-reuse":"8ceff1e7a5399240f68c742b1f8024a3aadf6ab184079ce13aa3005cbe5838e1","cp-cf-application-health-check":"a311edd62e642d1c09c6659463f9f2453b3540f08e8e91612cd20726d12d4d1d","cp-cf-application-logs-overview":"84057eeea5e959127a5f2702027dc2adc88e844ed3862b08a0208e962a2d44e5","cp-cf-application-readiness-check":"f4046f8004600e61e07d434bb7ebd561c988d06de36d39e5e13ef8cdb70737e7","cp-cf-application-service-binding":"68574ec76fce5a465685ce06f0464bd9851d2972098c06b118f583863b7ac882","cp-cf-businessrules04-create-project":"b17ed39858e1834640e5e651a5061cf57d64b64a8966963a8fa2b90e4a01d14d","cp-cf-businessrules05-dataobjects":"d906069a02d08da30d66ebe0aac28dc5ae454cbf493c34f1be26bf05c00e2909","cp-cf-businessrules06-dt-textrule":"3404decbb32e209a74860c33cb4758848c586c2a7dd999674b6a6e95ec04962b","cp-cf-businessrules07-ruleservice-ruleset":"cf4134080b3b4c98f0a3078a5d6a085a2cedaf9969871a01e52beed101f15614","cp-cf-businessrules08-deploy-ruleservice":"fbdd21f3b17267aa0c7aa28c5f24f5ea92c78084502d91932cd50d8eab2a404f","cp-cf-businessrules09-test-apis":"5e16bd931590919dfc85d20edd7cc632e9f7f42cbb564f469904655f6e63f05a","cp-cf-create-destination":"aa0b75410ebe204bd28b2595efb97d96aed4f0657a4662014b034b96543b36ea","cp-cf-custom-metrics":"eb44e9209891ccfc702bf9d445f085431d79368b843d557cbce896d330229e7f","cp-cf-dev-01-prepare-app":"80c3294aa664666199eca07f68cb39a58dfd5d4c54f756e53c65149dd0deeccd","cp-cf-dev-02-deploy-app":"2ee1367e9af8a324315ad3a56914c2c88f2aa7ed1dbe4c998767c6816f33158e","cp-cf-dev-03-service-instance":"072638b28b000e04b02aa70ee5c1549128f1d92e384cfe6cc1b0180d077c7ee8","cp-cf-download-cli":"d7b24c018d0eef598cc1b164b669e2447fb4dce52750100dd40071470dda9b3e","cp-cf-events-overview":"d0aff2ba2094efb142c932c9b3b31d7bb829f210edf70e0e2cbf68970bc7cfd5","cp-cf-fioriapps-create":"e50d3835a2675f4e43ff803b591c98a1c245104a564c68360a0f4c3b87ad7bcb","cp-cf-forward-logs-metrics":"a3d57737dcb90e2259fb3523d37b021f4cbbd54776b9d3a3ebc5bc5e0fac2212","cp-cf-install-cliplugin-mta":"e04ab0ff0009b4430a772a6e4e50a104eba6ac7577a0e85e3df10ee77eba3b29","cp-cf-overview-application-metrics":"410a077fd2c4aac003eeafdc6ee29b2c5e5a64897973f64d407127661ee18707","cp-cf-processvisibility-config-leadtocash":"891a5186d84834c1e2ddab5093de63a33702b00e8b2f75358190d0103ec716ba","cp-cf-processvisibility-config-samplescenario":"2cda90296e59134d2e4a9a33726340d0aa81fcf67ede5e86f89acfd8124f2886","cp-cf-processvisibility-enhancebusinessscenario":"3dc9dbee4fa009d268e6ee7873f1c15e5ebee106355d133ffa2a75f7e9b130b4","cp-cf-processvisibility-model-accessworkspace":"47705086b1e5b85ea1591d9a76487c9e703932877e0cc5421887cc062de6124a","cp-cf-processvisibility-model-configscenario":"ff9dcdf9947c6962c25c163b77aa35c336645535473f58a65a88cb44c5d18aa0","cp-cf-processvisibility-model-manageevents":"733d23fa384ab0360808cba6352030879fe7b63720ed8741a7400a0e0726c50b","cp-cf-processvisibility-model-monitorscenario":"cc3237eddf723f47194c1f68b15b2a78ff42fa1c5cc052d3c864cdec757241aa","cp-cf-processvisibility-model-workflow":"d990be139461f190d9eb5a9b3aa072f3aa3a5d020be8a70399c7d01e6c604527","cp-cf-sapui5-local":"49176346034bc8c960711c00309f4545b963d29df7d8825af4a521b075deba79","cp-cf-sapui5-local-debug":"2d5f29cb992837adeee101be891195b4611908b758f48c3dba0a7a27c357682f","cp-cf-sapui5-local-setup":"d95f8047dbc948e70d781a52511172b3d67e77dec75461f34893aaefaa98f86c","cp-cf-security-xsuaa-create":"308209769fb4879c5141ae8872a8c1bfdfbd63537ada6032ec2b7bf28da86c22","cp-cf-security-xsuaa-multi-tenant":"d3e5c222247b04e6242e5745a724e0c07dee2c3a481b0a5dd0b6514648b31f87","cp-cf-understand-application-lifecycle":"15b94d65b9fb0f86497e530656fea35b6fb0b1ab7201bad81b7a98b95d305a8e","cp-cf-understand-docker-application-lifecycle":"bc0d9b57b78b3f36ec2a6000f0d3f9542a4ee03e70df0c3480679b8824f2811b","cp-cf-workflowmanagement-configuremd":"ccb904b443e8c8a78dfe76a479283e3d0961caad81b426af6b045bffc3de94f1","cp-cf-workflowmanagement-configurepv":"7d376470d63d8431ad9df6db7ae2290e8bbb84470a077d76e07aefc422cc19eb","cp-cf-workflowmanagement-discover":"d0eb7b34308dd536fea85514d9b31c97bf1bc76c922d4eb09569fd236778d77c","cp-cf-workflowmanagement-explorepvs":"a766c536a9e9e8aff760ec9f4222abb63c69c96d8b6ac04c89a2902cca0c4207","cp-cf-workflowmanagement-runcapex":"ad8b882f2b96e6c2f94cb5f70ae8169daf0fd24fa9542bb856e05d8767cab9a4","cp-cicd-systemtest-recorder":"f4650ef85b84644cd51de9de58efa803fa5d7f97419acd666df30fc12f2a9faa","cp-enterprisemessaging-instance-create":"c4c8f664970cd28f6729660b4d55df8b75e7c1999e0cde9d922ebeeaf3cdb1e8","cp-enterprisemessaging-javaclient-app":"711bc23e0144fb35e25c8997742a9abbc683ab79a1f325f97a013407f03b5ab6","cp-enterprisemessaging-learn-messaging-concepts":"5358bb6052c7a5309e74fca82fcf54c1429877e1b1b068b3f838357574e227de","cp-enterprisemessaging-nodejs-producing-app":"b9ba55a0acc1c28ae8a91cee138e0fb0e465f90ea87057ea211ce5b215467d76","cp-enterprisemessaging-nodejs-receiving-app":"6cf89f7c7dc775f04adf4acb45f3b81693cf5fd1619e0dad4e27e2db1d8dfba3","cp-enterprisemessaging-queue-queuesubscription":"fa3be00286c8b07b071a518e2e3b38380f8826cf2eaf7cfa6b5db23576169dc0","cp-enterprisemessaging-test-queue-sendreceive":"ebf4d75de59c1914410ef14e8b119be1cfeb4bb4d0fdb61f19bfb4f0ac673309","cp-explore-cloud-platform":"4f528a3e6317e096d38e03c1dad21d9529c75f69ce25143e4aab53bf239209ef","cp-hana-neo-saml-trust":"14a3c6c8973d8fc02be5dad6806d08c0ee180871f9f9aed595ecf2637a68b340","cp-ias-azure-ad":"77403f8ada775d244b3c12191fd44420d5d9aac3ce6fba5a708dd1439d52e861","cp-kyma-api-mssql-golang":"8e842488a5a2468a66c1cbbb582c5cad20894d5c19b189630e77ee4f4feee943","cp-kyma-api-postgres-golang":"08bd8f9f965759591e90be5617055342c968880697dcaafc606da58fdb6d7360","cp-kyma-create-function-cli":"166ca0bb4f497ae57db78dcc2bd1b0432c6c0070546078bb5a090a3ba6bb5633","cp-kyma-create-function-ui":"ee53157c29c22798e139f9ba17e4e4631601efaf39d3ac882db9d5caf6c62a87","cp-kyma-download-cli":"2a80ba973c7a03b2786bced0a2115f7ded5345e01626c7c89884f98ece3012b5","cp-kyma-enable-module":"8e0d9606135558538a31dc481697f604b933b1e6f111b21ed57353c3b7fca39a","cp-kyma-frontend-ui5-mssql":"e07e30f4795255faa8fd46d11de62d41fab664997743fcd445c8f8ee61f81c8a","cp-kyma-frontend-ui5-postgresql":"b2cae7778894f3aea74f0947ca4d8677b3653a0352997704f27bf728cdb97275","cp-kyma-gateway-api":"59f7d47e31a091e4aa57a98e18df352ebd683c9a867e7a0092f94d09bc353461","cp-kyma-getting-started":"df5ade3ca9707d0a2c99d62bab1debb98b7a94b49b24468455c11903ea1a2258","cp-kyma-microservice-trigger":"9726fd4c85391be5e6691c3405382bece7cfb7fc421ef6f260fafd7b7333794e","cp-kyma-mocks":"83386a8c1fe2619bec6091ac77f218810d6c760ff000998064dc013abaf86791","cp-kyma-mssql-deployment":"563208b76bf4593a2a855bca9bf6174d7f6d7dd6a36dc6cc17008b7b2ff150c5","cp-kyma-mtls-requests-egress":"c43cf2ea9972e9648e669d05825189c175d49a9b8c81b8e7786001bb498b1902","cp-kyma-postgres-cap":"ab5edb0764207cda3b2a612177892880bcbd862f41d5468a2551a2e439c7a2c7","cp-kyma-postgres-seed":"0fe257826ff396c681ddd0d6a25bad9f7c4deb5bdadf0cc305028fc7b9e7334c","cp-kyma-redis-function":"c605e95ea2787ecc97dbaf72b29e15d5c9e7dce6dd0ffe9d3154129512808f00","cp-kyma-requests-egress":"471ace3c7d61503074216a86a6af4eafa185da0af60b038c0be7f9c32b6b2900","cp-launchpad-federation-connectivity":"601344228bf4d86e02224364ce40dc9b8f8485dea8b10347610b71bd0b72c408","cp-launchpad-federation-consumption":"3992b9dfedb4de8c610445bad6932ea84921ca56dca850abbaec2f101ad038fa","cp-launchpad-federation-expose-content":"b8db66ec7a34b87500c97a87997800c6e9a1850443134c034e6dfd25f3899d19","cp-launchpad-federation-prepares4hana":"6e16a493acba7647e8a2c73c8c9cfdbf172d440d3a24c5081f792178d81a23b8","cp-launchpad-integrate-sapui5-app":"245d54875ab6beef369fc8c56a99edfef24535c9c6852b370243f71375f57ebd","cp-ml-primer":"f5ffe25c1b923f57db293ba8fc03680f2d5c352969a3830361c4455158065df1","cp-mobile-bas-setup":"e7eabf415bd87b752f720557e1d88e2ff80024981a89f98f4f2309be181d6a04","cp-mobile-dev-kit-add-validation":"1d3506a6455631269bc473b41eb4360023f584476fc39fe262582b2f9bfd05e1","cp-mobile-dev-kit-annotations":"bfa2315ed09b435f3f557eb43921850fde08368c9bcb2914fbc9dc18aa7a91a2","cp-mobile-dev-kit-build-client":"45d4e2ef60336bb0e0a6e7788966731ac57880ca4371a0119670d1c0769c7b52","cp-mobile-dev-kit-cbs-client":"12c31c44aa680c3dae4b15c492eaeeac925c0b98b28443b7c5baf3d72e3a0174","cp-mobile-dev-kit-cert-auth":"65dab3c0cc4565b22612a6b19318128d0337ae765dac36d62ac7ec03b573dc94","cp-mobile-dev-kit-create-customer":"111d287779e632381e60b9bc6747d69c31c2ab763e5c60c15b00712e38197960","cp-mobile-dev-kit-customer-order":"12ef6b2df0763c9b6a9d5cef6cb5cbbe50595378ca6690e1f558da04db9fdf94","cp-mobile-dev-kit-debugging":"a82d693625468fb550fdae314f2d295cd1565d68f5d4c05311bbe3a57845d9a6","cp-mobile-dev-kit-deep-link":"532b21b779bd9035fc3acb28fae08da6dbce2cfac8af24b779857f5507dd5366","cp-mobile-dev-kit-deeplink-intoapp":"c8fbbc0d2acd5dbba26edd88a888ba0c1d48f57033cf4a1412bf8276a4df3f21","cp-mobile-dev-kit-delete-customer":"f563c3065ea9cdf4664efa540a449a653cae5a7c91a89c039e22baf8f5b85bbc","cp-mobile-dev-kit-detail-page":"8f709c1e37b328f64d42bfae04cc67b2052f53cbd8118ed358a35bbe1fec85d1","cp-mobile-dev-kit-edit-customer":"ab6c7a270481b5416a5d9b2e8722a6ad1f1aba704c98a9f2ec338f69133c87b6","cp-mobile-dev-kit-error-archive":"6fe217404113af1ec64584b4b9dacb6e25eab59f53e0a613e4b4f6e78a832ebe","cp-mobile-dev-kit-i18n-localization":"586de7bdb55cad1292f2f6329e72a058af84553176c03384af76437e43c2d9e8","cp-mobile-dev-kit-link-entity":"30b7b8f11d672f5fa87c22891f3b5c6eabcfb09389285e319dce2be9453e82db","cp-mobile-dev-kit-list-page":"dbb00c7364078a64f1b36398fe669c3920ab715f7688dbde021f79cc23d0f51f","cp-mobile-dev-kit-map-extension":"cede26c478305fb9d768b7d21de8e0b8b1122bc9a472d7e6d6d40caf2864e919","cp-mobile-dev-kit-mcp-app":"6223280bce353bc085af88f512d22fce48af1e0c031c0e1cdb84f461e3f397b7","cp-mobile-dev-kit-mcp-enhance":"cec61125d6229f9a0b01163040f440146d921d38373d10a76066825e2de77732","cp-mobile-dev-kit-mcp-setup":"27b2d30cdd108b99ae2f7fc2a7b929fc0777edd4016fe66b3390b0580348e3c5","cp-mobile-dev-kit-ms-setup":"66995dd1ba085547e07b6cf9114635dd6ea0dc58e785409c198bba77a52f9eea","cp-mobile-dev-kit-multi-user":"103ac029584118686cc879aab78799dbd493794577a2f54e443b283834e85a65","cp-mobile-dev-kit-nativescript-geolocation":"71addb356b7831b470aa3c0cc0af2c8a586cf051f37cfe40613f8fe2d994daa9","cp-mobile-dev-kit-offline-app":"6c989a63fde00b5bc1e6323d9025d8ac35e9b146457c3aaa63344d5f0e3f7ad1","cp-mobile-dev-kit-push":"1b9019bc3aabc2171a87983b83fa1ed068c2ed0507d9486d0314c0f85941d2de","cp-mobile-dev-kit-push-customclient":"4624d2942b0b2c04eeb1e9f4a683cd47b4d2dd3231ef475b828cd7065e4e8265","cp-mobile-dev-kit-quick-start":"6963250436a550b33cc073e5ec23f69c739992ae3e42363fd63fea6a68757b2c","cp-mobile-dev-kit-rest-api":"465c5b742cf9ddb2831b331f9d438c461e3bc9681bd31a1a5c89aa56ed3e31a8","cp-mobile-dev-kit-slider-extension":"fb757e4f155a8cda4631ef7d8dccf5771d18055bfb21245c49818e5b71c9b8b0","cp-mobile-dev-kit-style":"ecf1d9be642f708185fe598f9682a238da93f279b2b492e40e669134190b6faa","cp-mobile-dev-kit-upload-logs":"49baf29426e6fb9e9923db95e284c9dbb7756ff9858cf0191e08330998745b9a","cp-monitoring-alerts-onpremise":"918f1e986e0b57978b45305614cb33e4c4a4ff88f1a5aa417b1570bbe3d7a2a7","cp-monitoring-dashboard":"031ba5cd75690b88da231cba74b9a7950cc066e5d4ae801b925dd6c9c295e7f7","cp-monitoring-notification":"29ec45be0b0aeaf3658c7b5c127533223b6985bd88087047122fb6cb8881d1f0","cp-portal-cloud-foundry-create-content-package":"d40e1c16340432f157e625e1758a03e84e455f2fee28c313798a42e70cead5d2","cp-portal-cloud-foundry-create-custom-domain":"566609f6b93cdafbadada9592f5b5d919ae5de26c9b0fedddcaff3a5bdfa638a","cp-portal-cloud-foundry-create-custom-domain-adv":"3377d49eaca8fd707242c4f4e421ba5a8f60f8a9aff7df6973c9a4a6386c72d1","cp-portal-cloud-foundry-create-sitelaunchpad":"914994ecf45edcf18ce0091a04fd1848336eafccca75ab082363344ebba912db","cp-portal-cloud-foundry-gateway-connection":"812d8c762cc215d6477ea47595845746ec8f62507326c45fc7b954dbb4aa529d","cp-portal-cloud-foundry-getting-started":"06605af8043c2b9372c76b9d74d81328e6db05d3e8820be4f94e11d2c37fc58d","cp-portal-cloud-foundry-integrate-card":"8e8be5430aa6d341bb9682758b359e9ad9d6ef10aa740fe2d4470e3d2b33072b","cp-portal-cloud-foundry-new-sapui5":"0993465561b156dc8b4c5225fe89975ac02333f3dae0190dc050722d710f3090","cp-portal-cloud-foundry-setup-freetier":"d2ed55778614a9a91f3a60bdea8f35158c8a8f35e8a0e9f5de63b282f1827988","cp-portal-cloud-foundry-spaces-pages":"338f9ec307aa01ade2c117b36b8ed235b625852717414566594e54f0d02ad340","cp-portal-cloud-foundry-url-applaunchpad":"d91b2c7dfa75f174055a4870be95097367000283a00ac239534666a29131b1ef","cp-portal-cloud-foundry-webdynpro-app":"72b108f9244437cf8222b300804d845d93a56c06a36307e215d915240fa698e8","cp-prepare-local-dev":"3d383cf0cc71d08379389f021dbcd66c567f71ea711f7819a1290ec05d36d574","cp-sapcp-getstarted":"6c249186d14efc291974fd4123b9b4f47168bce620656ed75276e1a962762488","cp-starter-ibpm-employeeonboarding-1-setup":"97059e9dbd87c71e36eb481717243e4d2bd40a8d53a3e637850426bef51e310c","cp-starter-ibpm-employeeonboarding-2-configure":"e51b7459157f669d76983aef56c3ecf0a2242f763d475b2f9ce6df51d7112e45","cp-starter-ibpm-employeeonboarding-5-run":"45324f2175a6b18d288df86389010b47bbc1f42581ed2035ab1b19ccf9c9c909","cp-starter-integration-cpi-design-iflow":"4edda4e7cb4d704273ba7fbd45ab0ba2d08f150e1299a9f73527425f3e8afbd8","cp-starter-isuite-api-management":"fc002173bd5dfe6b6e6fde55b856bc2c6740c779c71005f0090f21d59953a3bc","cp-starter-isuite-onboard-subscribe":"1c7b4f324a71c07368a5bf97fc41b6622e1833d4f00d73b766d020dc783b4dfb","cp-trial-entitlements":"9f40841df20b12dffedd83a61b29f26cc67d7f637b143222ffdb03e546066896","cp-trial-quick-onboarding":"1d7123baa1b2d2903ea2edc5368d33df5706c837afd0ac0c2143ab24f88cc748","create-configure-approuter-multitenant-application":"14144d8b9272800d4de4f2062927bd2c5797e594728271972c1bf206dffc45d2","create-custom-theme":"8534b7a33d10b659f3d94e7c0d2d793c746ab4a6125950d78c4c04b93574af30","create-hello-world-mta":"f603d925c7f20afd8466fc953b6c94440da0ef130cc30196d298234a7abd11be","data-lake-file-containers-hdlfscli":"bceecbe537384e89a55cd6c5edd0cf86a0e2fbb9cf285769d05caf59f0d7b2c1","data-lake-file-containers-restapi":"bae71f7136e1aa5d1204bc43a8b05ee80811df0e9f56a11c4f93dc4365ea7786","data-lake-file-containers-restapi-node":"9a71110dc5b5359fb6eb2fa76136039d811dea0cf6fe4d01af610a249f638b40","data-lake-hdlfs-python":"8ac57508d486b766e646aa9a8c735f231b17e5c7410f388c02e97e9b87c1ab82","data-lake-schedule-data-movement":"2d37d073a9b0bd11d9b157c2aaed7288a7f2b84aa581ff7fb7c11b7194a52974","data-lake-text-search":"3442a9530085bd326416161d5eda6869762d1c54d61b846924ba120cfda5b97e","data-to-value-conn-concur-part01":"a728b2c537fb855363e692b4e61d5b905504b9480524f3d591835fdfd3c2aec8","data-to-value-conn-concur-part02":"b78ea9031007569db12c003f79c9d9f3e24b5bf74df9b73a97f4aedb836ad0f2","data-to-value-conn-concur-part03":"bc876d0dec1a6651093e5f50069f631e692653c2edba1939ca214ddb045195f6","data-warehouse-cloud-1-begin-trial":"043112abc177015b982aed047c86ea445dcf21fe6165ed2f238719e6289b910f","deploy-multitenant-app-kyma":"1e77234f297242a6cfac6a6dd3a90cb6fbb7300826d8cfd59956de82e23b7c97","deploy-nodejs-application-kyma":"adfc74dbe06453fde30dba6989508eddd75a51244ef0faf7f43517a14e7fc6eb","deploy-to-cf":"11ce8d2b98ce34e03a2856d7fdf5d3cd2995d00ee5ae8b0af78fa10b8438ca75","deploy-to-kyma":"7c9011e8d70d115cefbba01d82d48f2913935f259a40516903480bcd810e7025","devtoberfest2025-abap-week1-session-validation":"b988537a781788885dac95f7cb62fb83e028000a65f5fee4cd084fe3d0c2a7ac","devtoberfest2025-abap-week2-session-validation":"d67bb2ae0bf7fd6dba9ae5b431e233fed884ca2ea90fcd4be33ff9fb5e5d4106","devtoberfest2025-abap-week3-session-validation":"5c630aabbe4bbc60cd1371215465ea22264d01b7d3fec300b55ea7ddb8260bbc","devtoberfest2025-abap-week4-session-validation":"ad27f9e6cf8acf42fcc415f4ddfce320d2701cd845ce84af8201054eb83076df","devtoberfest2025-cap-week1-session-validation":"84a8ea7e08baab58e124e373dbd438d13538b169a877fe0bafea0c4ad07833d8","devtoberfest2025-cap-week2-session-validation":"585a47e8cfa9008914eedd67c3e8881084754395b81aec233034de2067ff343e","devtoberfest2025-cap-week3-session-validation":"0c2b1ad5c797b8ce0cecbc7ddea91996a1922a20c0b66ec78788233a487c9d57","devtoberfest2025-cap-week4-session-validation":"a8e02c2f2dccce9fd986d20d439bc2dcbc69a8e6c2ec8b0287382efb52294a72","devtoberfest2025-community-week1-session-validation":"fed8af696e7a0ffb74a535370c077dc1aa8b9785e3ea1c6171898c47a77a65fe","devtoberfest2025-community-week2-session-validation":"8959dacdbb140773add8faeee715c45e30273cfe90901156be822c6a86deadec","devtoberfest2025-community-week3-session-validation":"13c663b75875076fe9f0a901706ffce76bf77b855024b138bf2fc546d1f50eea","devtoberfest2025-community-week4-session-validation":"ad5ee2b62604ecb7506970114a4b2ec54f4c968930e54fb9afa851fb2c587d4e","devtoberfest2025-dataai-week1-session-validation":"29005a5740c457e2072c4fa494b59b05fbf62d5bd754233a26aff3e419d6498f","devtoberfest2025-dataai-week2-session-validation":"7653e587e4bc7c87b53736abf4feeeda13c172c09a7f3f577e7d8773eb8e152a","devtoberfest2025-dataai-week3-session-validation":"e21f13836b4cca2cfbfc2ae70b09291e3aeba2d4aa05a315d6d7ee63fd03f82b","devtoberfest2025-dataai-week4-session-validation":"a6135d153a5ea331c9e8a08f9082b548d598746381b83fbb72d292f502c1d2a2","devtoberfest2025-fun-coding-abap-docu":"f053071b8891944c01860ee334b1cba3fe87184e9e86b23692c2a9b8b977f8e7","devtoberfest2025-fun-coding-build-docu":"7c201f95fc31c970c9c551a8b63f8077123b127ca23b9fd96f10734136798793","devtoberfest2025-fun-coding-cap-docu":"87edd61039930ffbb9215d02f8a055748d72605a6b3b5abbec2a9817d74da14a","devtoberfest2025-fun-scramble-codejam":"fb20466ac884faaf9e884d7a8fcd08837c3caaa092afec618ace6fafe5664de3","devtoberfest2025-fun-scramble-languages":"c2d4139101018f7c4360f2d0c43229213d370aefe3c91ecd1ed0369ce1551070","devtoberfest2025-integration-week1-integration-session-validation":"10fb77583747cee3a244f5bb2aae28dd03e1b7805accb4a8b1a8db30f3d6797e","devtoberfest2025-integration-week2-integration-session-validation":"512a4435e9306e04b0416fe88da6b7e1f7c221342fabb314f007724c6a2887ae","devtoberfest2025-integration-week3-integration-session-validation":"a695173dc627dd3aec50091e9d2631c0ef0a083f9370b003b8be6cb803492e37","devtoberfest2025-integration-week4-integration-session-validation":"d0bcc29b6236609ce191d31c2041f09ac58c0241df637db3e14019ed54837c52","devtoberfest2025-sap-crossword":"d7570c9b552f0e4eb65fbca4d7de1884c7fdc5fce6710239f94eea7bb1f9d071","devtoberfest2025-sap-crossword-bonus":"8d553bddfad657f22302ed6921131312e7b5dc384be803108404ae5d722942b0","devtoberfest2025-scavenger-hunt":"699d8943c0cde878903878396aa34cbe67dd193b2cc87c48f293c24a5a68cdd7","devtoberfest2025-scavenger-hunt-checking":"cb7672ec9bd07725e6fbd1b677c6c447537bbae8058c80d76558f138cb41d5de","devtoberfest2025-tooling-week1-session-validation":"e2e44cba0af4da5c0f878b44b6561c7a6f3c7d5c182b1c2553445bdbc275bb1c","devtoberfest2025-tooling-week2-session-validation":"e8bb92907d9611d3297875c0498d79b3e4cae4ebd428d9f1b60b323b41c815c9","devtoberfest2025-tooling-week3-session-validation":"089215f5d0af40843bf3572cb1e28d3f0d63c68ca8193fb4572ac2c29f531e4d","devtoberfest2025-tooling-week4-session-validation":"629e885212d35106050517ef4621a6d384b7d25bf8d5e9fb32e4ba79a7c29a7d","dt-backup-recovery-part1":"f1084e788afd3a74abd8b4b865490d9eb0ae8cf599ed481f7eff5ba06bcca7ae","dt-backup-recovery-part2":"7a9aeaca9636bbf27345d326bb0ec3c8300fd79a99b91907d659874277ae26b3","dt-backup-recovery-part3":"ca358815f9f8006b3c482dfe4c3a585093cffbeb5e43f1eb2be3cfc59adb19ab","dt-backup-recovery-part4":"2f59ecf4f1e2da9e5504b8eabe7e394763f1336d2913d8886460b9d33da24990","dt-backup-recovery-part5":"59b2f6a7d8174904a86e32a61cc6882336a87a1479d72ee19a748b59c4f25067","dt-backup-recovery-part6":"e23cd3b63f0070cfe53b9703e101c1c167b592c0e804604a1ef83e87622a1251","dt-create-schema-load-data-part1":"64e619db15e3a19f65e79ee719deb32ddf452017f78ed4213b61ceb1e2172c65","dt-create-schema-load-data-part2":"df9b459e661601842d056840dfa225920fdda12e6ace30c41f750181803c98a6","dt-create-schema-load-data-part3":"388f654bfcd60d86fc8c8bddc1e86dc4b1217fffd01f2cbf45bdb2da7a2702fa","dt-create-schema-load-data-part4":"e064dccccdd2263a056f84e131600a4b334ab96332cb928bed9b586155553e4f","dt-create-schema-load-data-part5":"be45639467c2e82d40da5c21dfcd278410565e69185ffc2cd2b77a949c8f26d8","dt-create-schema-load-data-part6":"38cc4acd54373550a9baa44716b21dbfd790d2300415155ee0337f638b07ce8c","dt-create-schema-load-data-part7":"4853e05962317e0cf16565683e49f8a9ad944f55735d9e41d00eaf90de660be9","dt-create-schema-load-data-part8":"3fcead910ad35f217b9a48ed12bc8bdf9285a3f9ee1ee7a32852a2b36c0cfcf9","dt-data-modelling-part1":"240800d97788afcdd15a5a160439eefb5fd573e1a3a4d54acaed3c6fb0c409c7","dt-data-modelling-part2":"95fc746b5eae2bf55b16663cf5fe83b11e1fcc7dd3aba5eb29fb695bb07b0a03","dt-data-modelling-part3":"941dcb56541e593a829c44bb180322ab257330d95620dfb9e8c2f2a9e2ff7eb7","dt-data-modelling-part4":"22cff1993e9833ac47cb0d4ec6f8ed27fd0eff535152e1583aad60d8eb5bdf98","dt-data-modelling-part5":"25e0fe32cfd9409511481f69c549a6a0683c3647ce538c987a4fda798412f4af","dt-data-modelling-part6":"ed54e48eaf9d984ad52aef58cdea225ace5ff6d1a11a1068d4f66d190825a23b","dt-managing-disk-storage-space-part1":"f34b2ed51c19c866b9cb5ea9eefee2edb4ef0eb5f0667efae48445f85c5496d9","dt-managing-disk-storage-space-part2":"4a44d8c91477b3f4d26cff52afcc4ef3b427e1dc3a575b6037b53d6ad5b6f22c","dt-managing-disk-storage-space-part3":"169d92a2b235f221975b26f46acc57abb56d942c7f7e6ee5f466e20cecf0454e","dt-monitoring-hana-part1":"935e6f0a8ae99ba202dc508350779e088369a6fe7b912d94f51615ac06366b88","dt-monitoring-hana-part2":"edbc0836a61984b1a0113c5a8609a3e1e1caa0844141c13dfb297f27fd36c218","dt-monitoring-hana-part3":"11f6b62c83ee2863176d8eb4e6b37b2a85a3f2389025e840ba21c813782704d0","dt-monitoring-hana-part4":"644f63c61b4dc25f4a0f56fc35ee6f5956c451822ce1d11c948a7b1b9882dbcc","dt-query-processing-part1":"59660286f305c9d8328ef122c86f41196e1351972e80a1251b87464bd8761576","dt-query-processing-part2":"b1e8c6ce8ee1ab8170cd784c0c682006bd40592dc06fbf3b31ac3f7737f2cffe","dt-query-processing-part3":"293cc7aa962cf55d2b557c9c3e91cf71bac1926360886f82a0c2b82950df7568","dt-query-processing-part4":"486c3b4520653833639d180c40e3ecf56aaa19ffc18a7c90618ff7e5d4290deb","dt-sys-replication-part1":"77e191fba892b7aea69e7b04e84410773c193aca26f49aff2e9733ef2b9102d3","dt-sys-replication-part2":"042e03005f81d9de371d16b515b01372605040963cbd97436235cf2c4e00a43e","dt-sys-replication-part3":"df80fb13c11e308b05d0b30f8ed86e120f6414e42edca0b073354deb244f762e","dt-sys-replication-part4":"9cc559ccbc67d3798188a25710f9f437e5cc84ecea1405bb1eed45f5cdd6b7b2","eh-basic-concepts":"2471154b24735d783f8ee7dac58e229ffd52f512ad965aca0fd4f3f846c0c167","eh-setup-aem":"fa01cd24d0381705b83464e3c453274c51c2ae7163456c866dfe265424939120","eh-setup-event-hub":"0414abe744ba2b11a49fef71f58c63be75da177032c1dbb91f9f35a93ec6221d","eh-setup-s4hc":"f1c2026e7da3f6135ca301036ce42900081bc67898e8f174c5336d0150f158a7","eh-setup-sbpa":"cda8aa6f627619c124ef29205bafb1ce157401ebafbc68b1338c6ec91ac1e171","eh-setup-success-factors":"391cd5ef2cd1c2f1681a8c44d742ed25ef1abb4e36a598d7d27d82da3906f0bb","fiori-ios-btp-fioriar":"36a2cc4dd5449ca4812b2aa4401ef83814d36db23f26280114c3bc70c1901c45","fiori-ios-hcpms-offline-odata-introduction":"b0131708761469b59509d7a028857a52eeb707d699dd262b824ddc9119b7b5fd","fiori-ios-hcpms-setup":"42b00f45fced66db32903d2fefc4cdf3ef7e16d719fccde4b502f40faf13cc15","fiori-ios-scpms-barcode":"facc0cf20041d2128206d3294fbc94550632558beab53452ddac981003a3031d","fiori-ios-scpms-custom-app-translation":"a41226c5b1d9152b50fbd918f5f1322922805f8b781f5648e8073302b2508153","fiori-ios-scpms-dataviz":"7e9da513bbcc8f33d53fdb750e31fdbd2452466eb323466498178869202195f5","fiori-ios-scpms-floorplan":"fd172bb62c7d7f1fe28dd62de090b20e9f13160fcbf8d78a73f54c937567ea87","fiori-ios-scpms-image-classifier":"ba39751fea6aa66a6af28dabf305ab258ba31e5b8e2644ea2fc7c9fb4470eaf5","fiori-ios-scpms-shared-keystore":"79e1c76f738029fc1cedcbc191e66031e3da33b6e0e66d685119e215923428dc","fiori-ios-scpms-starter-mission-02":"fda75325215f2217c47a997c273a35cb3974757a323043e875bf3a278b88a9c8","fiori-ios-scpms-starter-mission-03":"23ab5aeeaaa3cf8c312215dac19fa1ba7059e3225685d73cbf76aa7c97af1337","fiori-ios-scpms-starter-mission-04":"a16c4b3621b76ebe44fa05ed33fdadb81fb16e34e69bf5a864e238cdccd8285a","fiori-ios-scpms-starter-mission-05":"c24c9f0f9dc5eda2539f67b157d48435325c503572b29fc97e00b4ee9d71097a","fiori-ios-scpms-starter-mission-06":"d815495bfaff47050a18bc8f88b3e15badc613a9849aa8e15ea5221d76050198","fiori-ios-scpms-teched19-02":"5c721dabbb3451e9b99a9db61497e00a216d67e773f6f7fa078a0ca1bf87824d","fiori-ios-scpms-teched19-03":"9419d98e5791c16ff5796b17f45d0133852ef1e33be9e051da396bcc898fa657","fiori-ios-scpms-teched19-04":"faafad18606cca38934a764d949a8f91f6fe0865852b0c6a24836d213c80e62a","fiori-ios-scpms-teched19-05":"20cede4d9cde779fb737a183b556c6096871bc945f7d1a7aed13299452d540dd","fiori-ios-scpms-teched19-05b":"b50f227014b2c4f7b8e55390335cc06266669babcedfe7dbdc4293fefca28119","fiori-ios-scpms-teched19-06":"0276bf282dcf19b8947562065121bc1253c49e21f2acc9986a6c0fa6c7f6e39d","fiori-ios-scpms-teched19-07":"57069a37bc8a791d91b237cb21ccc34e449788290874670015e66d972cd051e4","fiori-tools-cap-create-application":"6502b7e0aa430c42a7a9236953c86a6f27ac09dfaff2aff520de7ec0682dcb66","fiori-tools-cap-modify-list-report":"0727375e3e7b1bd93ba9f4f8d5b47deb309486110d7539c757f932bea00c890f","fiori-tools-cap-modify-object-page":"fd9e94fbe9e32061875a420bf8ae6dda4282bc6b09403b12b3deb53115455407","fiori-tools-cap-prepare-dev-env":"27bd7170d9374adca7d7795f45040feb5bc9437237d46fc7d91c8518f5662996","fiori-tools-configure-lrop":"3ed9ae086349ca22dfc0e80dcd88e76d9694005699dcabb67aa76006ddae003c","fiori-tools-configure-object-pages":"173df9177ba9841aa7042ad8d6819952869bf7ba8fc743f2edc386d8bcb5aab4","fiori-tools-generate-project":"14fd4ee1ccb81643e0f8eba71e3c2c4c87d1b6dc8ed0dbcf102204e19bc145db","fiori-tools-mockserver-opa":"06d9c8bb22faa60251550b7ba69b533f4d66c00de67742e61f0b073dd00dd1b5","fiori-tools-mockserver-opa-testing":"785e6eac4e48559766ed41dd736bf230c2a3ad7ecb437c3595a65154fffef338","fiori-tools-rap-create-application":"34e5266b339f45ed99a6451b5b105595af8485d297e8167833012ee4efe2ca46","fiori-tools-rap-modify-list-report":"1b26b9fb7073a15850932ea4005d9856eb24dcc1bae2a39af2a67cc3f64741d3","fiori-tools-rap-modify-object-page":"2226c504534a464dc76711af8983d003f9a3a533fbc6b0ca8a1114fed124acdf","fiori-tools-rap-prepare-service":"7fe3829286e4f3b81ff6185ef1d9d0634c54d92c4a2e7770acbba27b3ea6ffc3","fiori-tools-vscode-setup":"78f3e057d8f995ded91e3eef58aacb6bfce4e732fbc92c4f42fb70d265f83f6b","gateway-demo-signup":"0b249e1816610a6433a62d24d5fc6b8b8d18dfb894f9add5fda7f2d9e46300d8","haas-dm-access-cross-container-schema":"a9f934f2db941abbdcec9d8eb8359422991be38f0e80a552dd88a34d43cc8f1a","haas-dm-calculation-view-differential-privacy":"48c896356c653b9e221be176ad1f8cb648a1bc5e39673f042600acc43fd8c8ff","haas-dm-configure-dev-env":"d54cb0fe230705169117a1cdd5cffb582e1f41cacc4e28c54d9dcb57b52705c1","haas-dm-connect-hana-cockpit":"b21a5cb8f13f852e5d9a6f7432851cff35ad033173dbc56227785a35b6d64d66","haas-dm-connect-sdi":"d3ae878b31b44f2c4c6b64fb05241a88ad084b50edc2c3e6ed68dfa28a2af16e","haas-dm-create-cube-calculation-view":"f4dc2fb7154253550754efae91b785aa6276da49e1a650c5720dc898486a8110","haas-dm-create-db-mta":"2d52bcb242a2f950aed1a755063e5d62a42b11d294934b75c971ccbd376d4104","haas-dm-create-flowgraph-sdi":"1e6ce3b28d8074b3443dc3bff41606631ef8dbac98fb9070d64707402771f8ef","haas-dm-deploying-haas":"92cf16ebd4a1675a202038ea8f2a79288256192209973e41b809bcfc7cedbe9b","haas-ecc-operational-reporting-sample-data":"12a15ae194825dfdb465cb5b07b8e963350c1719652b734e7ef64ce18e92c1ef","hana-clients-cf":"210eb85f42aed8a89069940e76e68f1c6a0ed1ff8d5436a820c8f95fe9517ee5","hana-clients-choose-hana-instance":"222d152528694411b5a15e667766160cb68ea2f0081f236c12d69bea99095513","hana-clients-dot-net-core":"8ab22819c6197fee0ebb6d3283300386e4c6b1ae2b06641bfdbeadc0df7fa1f2","hana-clients-entity-framework":"672748fcb539e7c93bac1f31438ff149a86de7b796c60714d4b7da6cd8ced966","hana-clients-golang":"baef6b579eb0bce3cc263681c29e2424fae1b181284deb76caa84340ecfcbaa5","hana-clients-hdbsql":"9ee750ab8a414bdb2ccecf6a0f28ea7cb93f5d4b3cddd66e84f58fef8d08d56c","hana-clients-install":"c6cb1f46d7de22f6da5809e2e863a5a28c8d87ab027e8cc238dd86cd250eb12e","hana-clients-jdbc":"76eaa66c4feb69846c3e00e4045ceb2d32ebaaba859b22af676a100de78c7194","hana-clients-node":"a6ce10cbd364f4023578eb72b8684fac840bce3df50ff843a7aedb0f13d39cda","hana-clients-odbc":"ca5113b53e3dd83eb0e75eddbfed4411be89fa580afd351baaf05df1c4003ed3","hana-clients-python":"d46e67e7440dc8d9080313e22caa2d2141caaa8670e7b1554b6851493355e8b6","hana-clients-routing":"02f0ed05b6cdd34e9d7aa83322ed41af00a58588fd30c5fe4105b2a43592321f","hana-clients-trace":"777b87658e9dd057478542ae2afc1602adaa4e671ad8d6d5b9935268b87e81b7","hana-clients-x509":"20925ccc9b8814310cf6e7bcc624208a054cf769ab286b72f69d22b938a1f704","hana-cloud-access-cross-container-schema":"34fc91161392e490d4bbd70ff1d567260f5871936fcff2fc5af71d925d540575","hana-cloud-alerts":"a1b8f2eb6d23f8f65b4f714d633726e769c76964976a242e03c8a447df2b1b18","hana-cloud-alerts-autopilot":"57c9f74fe6a1a558e0f556e2c60987d18e372ddf945e5d021cc94a8dfd0f7dda","hana-cloud-alerts-custom":"3a767d286f527ed2c974057e837233828332e7e19c66cec367eb542cbccf4650","hana-cloud-alerts-rest-api":"40d4fb619e4238b16cdcbeb32e2d306dc8cb5bc5cd838e30e65f76cf26d605b3","hana-cloud-analytics-cloud-consume-1":"621b16f0672e1e68f1b0f4135a01a2d857f574ca2458a4f3b350b36f68313bc3","hana-cloud-analytics-cloud-consume-2":"6e7f43ec6ffef657c2ebb83d695a977816bebdddece43890ab9c177fda239280","hana-cloud-analytics-cloud-consume-3":"743500c681070f22c071a912ce56c0b109afd6caeb033f4c67000d469ba6c1e5","hana-cloud-automation-cli":"8a297b3be91bf873901fdd7ba539b9590d4610a5ad6bd7ba5aeeca669f17ced5","hana-cloud-automation-pilot":"9b75fd37403f3fb9839206b1d1f569502cea8c943677c649e2d05d6f0144909e","hana-cloud-automation-rest":"096bbf4f4a4ae739f844e01d8d4dd00ca7363ed3ae73ff2829cc4c32725812d2","hana-cloud-automation-scheduling":"2524b3b4547a25793047fe2a365b8606a4f09714a5314e7f627dfbec76e4c146","hana-cloud-automation-terraform":"8778c2fb8273bbe170d8cf875b260794de7cdd7c8486ff218ca3f0b6fe0d76c9","hana-cloud-calculation-view-differential-privacy":"17a8a487d3704ce1493e2954dc286f8af0eb9ee0fcd6c70e15ba12c5dbd09457","hana-cloud-cap-add-authentication":"c7a3dbe09c20c045984fc44717554bc23821a693746e3f9966a36ec06d708ffe","hana-cloud-cap-calc-view":"0f5fef073e19df2e3f2ebe9a37137be0eeabb5675b16e4e3c6f308a01c7a45e7","hana-cloud-cap-create-database-cds":"422c4eda4ff9791d862c45ae95c2d9f608aac05b5227747079c77c3ce756cfaa","hana-cloud-cap-create-project":"99bf6f63447c1838c98dc4767f1968b96f61e0c18c3545a862ed5309120cf088","hana-cloud-cap-create-ui":"f8e326b901c51c65840a3708c9edad284aa234c892cbe8ce90b58cf8e8d17b15","hana-cloud-cap-deploy-mta":"973167498086fc7185a760dcffc5fb3c022546d6264683c9d6e73e40d58b20a6","hana-cloud-cap-stored-proc":"d8cce1f22d52a909a3d9c69bec84e5cbe8b420a7db64aafabcb955e51d9afb0a","hana-cloud-collaborative-database-development-1":"4d0e626b5756a91e1bcd79c5687041ce31c6b28883b41e11a391594db42533e7","hana-cloud-collaborative-database-development-2":"e8101a915c27f33697aa6afab9b0194c1bd9c424b97d5a2dba8b896139cba219","hana-cloud-collaborative-database-development-3":"8aeae925d0442081df8613494b5833dd8a3b7ebe80f5942e53b24c27f0b9e6f7","hana-cloud-collaborative-database-development-4":"6ab057b0bf967e1cb7c78d9aeaa03d65f5b535161cce39d642ccd5cb7b00a226","hana-cloud-collaborative-database-development-5":"a68ba772f63faefb3fd248e2b39e27785ac5f852e3fd75b5a98ecb95154695b7","hana-cloud-collaborative-database-development-6":"54ce921e6af895b26fbebafa5fc216df121a9ec5b650f5befff1dfc2e7c0a31f","hana-cloud-collaborative-database-development-7":"1750b1ab6209a00c5526bf5ac5d219583ee44b05e1eb59488913e396de5ada37","hana-cloud-configure-dev-env":"64960067d93bde1377bc0996ca70fd87112ac06706c7574743b6148733f2dc94","hana-cloud-connection-guide-1":"0e51f218eb5e6a60b238de006d67054a4c896215b6a58b8b4855e6a8123082b0","hana-cloud-connection-guide-2":"30cb7e9ab2fc75155aad35b99da4c4191d97dbb431507510d596f4cb3a2ec7c6","hana-cloud-connection-guide-3":"f2f2e57c028a5aef55b0b8ad783fe87b4a452d2aa6a7b7812ef4df43789debbe","hana-cloud-connection-guide-4":"30dc13278ec274bbd2acb5fc788839979aa56a652c2062747f6aa802ee708f18","hana-cloud-connection-guide-5":"1837dcccbbb9c0e58bee1c8d37ce6587bf6615e4b350ceac96f099136a943ae3","hana-cloud-connection-guide-6":"cdffbaef7dd83b444ad4791597fda2fc70046e9011675687bd30b4c36a3a3374","hana-cloud-create-cube-calculation-view":"ca8979d9e91caae5075a4853cbb34175be58d09738274a2d92ad493b0e0f8193","hana-cloud-create-db-project":"cd6c60cd77d336536896ee98dbf47e0242d45b3fd4a257f9635b8b736df85dc3","hana-cloud-data-anonymization-1":"925590f53ce3cfa8fc87c4239da74c0633d6f04ba039d44d10b7ed413659dd3c","hana-cloud-data-anonymization-2":"7aaad45b696a5b7d83e0904a398b88cb42738f312f61aa005c318f08e0c04f1d","hana-cloud-data-anonymization-3":"63b1175e5e214ed90b8c8969db5734f0eef53f23a476754e57bb2c13f18983fd","hana-cloud-data-anonymization-4":"44507e417a5e4f922ddca493fa351111fa4412b8c58b51b0d7cd820d6ff2adf6","hana-cloud-data-anonymization-5":"18978d7fc55f55607d10f11da2b1f65e731348a8d1d36e6eea1a988e6747d599","hana-cloud-data-anonymization-6":"b1aada4d761429011dc9944d6aa8af7e41c63e2757d0aca4531b407a794ec91a","hana-cloud-data-products-consumption":"0b2878475cad5da467aebd05d11b2ba8620ed155a20548be9bbef0d2eda4a27b","hana-cloud-deploying":"bf57aa3dfc4f7b64ac733cb8c071422b8fd3f18a1a725ace69a7975defa6f558","hana-cloud-dl-cap-app":"08ba5b09cfd12dcd8ccd789187ed29dab30759e33e039450a923dba1bd9905a3","hana-cloud-dl-clients-dot-net":"23485c2b1c8eb297e630dae46808a72b4b775bfeb4c1a0c82cfc47a12117a0bd","hana-cloud-dl-clients-golang":"8bb97aaa3822fa32ea09b11262c92997d6927720ca743a1adf60e1f5be50f590","hana-cloud-dl-clients-jdbc":"e4c05bafba803f7ebfdae28d6236d33b8e96437b12213454ed78c968d14cccaa","hana-cloud-dl-clients-node":"da96bef015c0ebe07f1cceeff96b1c6e03360504cf197578f4d380a68ac84ca8","hana-cloud-dl-clients-odbc":"7c19cb42ab39bc74a59202fc321f33db4d988c6bcbbd1b4a1510bbd55f27ae07","hana-cloud-dl-clients-overview":"a9510cd40e78f2a8a6a8b5cdd6677f7e124fcd5104d9b0b2037d50f13e99587e","hana-cloud-dl-clients-python":"92a7b64feb7b7c85a4823547181b42eb30cc352e9bc3597556c63db814a4293f","hana-cloud-ecn":"49c7878ba9e396c1e977164a8dc3ed953a463a934a3e8ad878d3d803c2b142c1","hana-cloud-hdl-getting-started-1":"a118d2553fe8bcfa19b6bcfc5e8bb029359abbde8890cc6504f2aaf3f564345f","hana-cloud-hdl-getting-started-2":"d653525510b1f68a151577b882e84e0eb056d896f5816a9859d9d43be35dfba9","hana-cloud-hdl-getting-started-3":"868c30f673a87c6ab47cc1670032b84fa7321e8cb3904db74b53fda346125251","hana-cloud-hdl-getting-started-4":"54e872749b91debc4a8e27c53a834a647adf6bca292a29aa1991121ceb1a24ee","hana-cloud-hdl-getting-started-5":"ba022b2fad89fde852ba19d1ba4eb7da2c9d50a56d541873c711225df248d518","hana-cloud-migration":"e47cd717c0f4862ea1896632b6871a384d20dbac1d2394a64b604e4b9aa7d8eb","hana-cloud-mission-extend-01":"18246b65da295c229e7bdff093bde70fa51525a812d21dbd3b83797b7a8aafe4","hana-cloud-mission-extend-02":"e97d0b0e271a62ea6439e80ced52fd329908c2926b4313a0ab23a2e11ff5c285","hana-cloud-mission-extend-03":"bde84747b3107bcb95ee6f0868b31a949a3a0005c4a556b2f2268787d8ffbb32","hana-cloud-mission-extend-04":"5bda36b866b92a60ccb90c7e428acbaadbcdb371b5a6363b245adf5d7d089a67","hana-cloud-mission-extend-05":"98339fdd2532125d3c7506c4448c7bc122dced43eeb4f8913bdcee16a4ea14b6","hana-cloud-mission-extend-06":"a90a264a248f8d8085c3d5e6710e5f2853379fd4b135abb9d4a4ccd7efb76d30","hana-cloud-mission-extend-08":"f62460aeed84eb3ad9cc1d81fc709e02eaf1e4ffec36dc485b1707cc55239c90","hana-cloud-mission-extend-09":"12e0443229e957804a0efe3a3ce2e0fcc3b5be37c6139942c8623801d99015b6","hana-cloud-mission-extend-10":"916c798ceed5bbbc56f69c06b74af427564eebc78b6bdc32b8aded8883e81189","hana-cloud-mission-extend-11":"948e95ff33938423989f581316feac5289e02c0eb9e864348d07d534d3a88e75","hana-cloud-mission-extend-12":"b155481a4479f36da692367bbd44e2a03d7620984815bdd5c891031f8c5a387b","hana-cloud-mission-extend-13":"b29dbe43325cb92d12c4a6b8279a9064c6b4e8968044d1417fbd008d11c8d819","hana-cloud-mission-trial-1":"e0dfe534ea4aa2b9724410a0b0383fc34128578dace6219ef9c0d9199e8fc2cd","hana-cloud-mission-trial-10":"5dd356e556d1bedee98616461f74683cddeb8f1942ed8ba9f1998cd5936a857d","hana-cloud-mission-trial-2":"b699f4807fabeba6c061ea72e6c9a31a7a85bbb12aa642f4331388aa55b49264","hana-cloud-mission-trial-3":"f6e29922215ccd145c08254dc49793e8641dbc3359729482867a618e59e0079b","hana-cloud-mission-trial-4":"f7bb4de86e3bddf172de3d73afea578e3999e84e872c946c75a81427421bf13c","hana-cloud-mission-trial-5":"75c074e85109dcf011fa74628d98768f8f5e9c41ea4b1c8f1be16c0f04e384ec","hana-cloud-mission-trial-6":"f91ffb25186204d039ad524bb898132ea157d2a7d026037ecfee1f727aa2719c","hana-cloud-mission-trial-7":"558939cd86cf0c6f7f0c574e1c0ee8de9f9cea6dc25e4cfa8fb998c4e0364523","hana-cloud-mission-trial-8":"3c357521f7d73f0ea6d8b949e1e0cdbfabb4cdd44826a64d98a6d2c384fb20d5","hana-cloud-mission-trial-9":"5cd7c966b1188e3d169079151c65689dc838b0d2c97c7c1bd325a11e6b02e86a","hana-cloud-python-analysis-multimodel-1":"e90fb6702a94029a7c281e51b5b500bed18e7280bdd0cbb64a44ef28f678b6ee","hana-cloud-python-analysis-multimodel-2":"cd618e89c4658ce8c95ca43362d3dd2bb0ca44018dd59c0d7e3ee2ecdc019e09","hana-cloud-python-analysis-multimodel-3":"7b49b5b15db9638c6427be3e0ce3b8d8157fd1a02332754d27279c992387bfba","hana-cloud-relational-engine-spark-connection":"1da95b19bc8540c41a584078edff8f2f54d597d29b55723db9dcc2bafb3f9ca5","hana-cloud-smart-multi-model-1":"28e17de7f945784ea8644b1c83d6d057ccfe7a38749ed03e9d88f56f8adb6cab","hana-cloud-smart-multi-model-10":"6c44d8353427808d50e696116cf1327939f15ec16c5ad421baf09b276a2a4e52","hana-cloud-smart-multi-model-2":"cf2abd4518c4a04769c2ce45ead124846596ed0a706578d57690fafbdf000a3f","hana-cloud-smart-multi-model-3":"33139fdbf8cdacd7d0c3a7be8c5749b771a2b5b1dcbf6b6c5340c50668a2c662","hana-cloud-smart-multi-model-4":"cf1a3a5afa160c731064d99bb000223b1711a8d8afc4cb54ef08e304b8dce16d","hana-cloud-smart-multi-model-5":"f91967769e8e19666b703c40e146d66bc960198e0138dc07bb2491bf5f1bd0ea","hana-cloud-smart-multi-model-6":"a6793840c49e0d1d0f09fe87eeac0271edacf9dbacbbca5613e26e3abdb2935a","hana-cloud-smart-multi-model-7":"78b1ceb4a41aeba67145efaf8ef64cfe2c306ad7963a4924b994a50cf09bebb5","hana-cloud-smart-multi-model-8":"4b31f71dd8594bdfc19d4cc8b57121b5ff85e54f30686b7cf412948adc7909b9","hana-cloud-smart-multi-model-9":"0bf916276d900cbb0bbe382f0a459ba43c1b66e4accb64536215a522f1189384","hana-cloud-spark-connection":"7ecf223f77fb199f982492ccb253b0f7764f745f4b6f026b6c2754fdb0d801c0","hana-cloud-sqlscript-anonymous":"34fec349467b94b13d49c6485b309d0c2e091cefd95e410e8f4eebd1677500ae","hana-cloud-sqlscript-debugging":"f4439055128d137aa3bdabaa64b79257fa13fc412eefea57686e435d30cc410b","hana-cloud-sqlscript-libraries":"a6725408e41ae80566b312122bf7ef03b3f0f3142f59768b3e08607e106d0ae0","hana-cloud-sqlscript-parallel":"f2bbff76219e9f4d5593ecfd45fa3e4cad7ef5cace26aee5a13de1ad3997f20d","hana-cloud-sqlscript-scalar":"4a13619e02141c21d235551a7cf54a24d0b8441cf370d10e38cf1b615e333dcd","hana-cloud-sqlscript-stored-proc":"800aaa546518abbb8b468401b90947322226843610cd3942f32260e323d9249d","hana-cloud-sqlscript-table-operators":"b50293930528e32e5ad8f4e9ce0331c3aff99f6bef5c4a6a0b935a5aa470fb9b","hana-cloud-sqlscript-table-user":"2e8f593f017485df68ccbf1b26d194e381aeddff189d9381075b2050fd04cff4","hana-cloud-sqlscript-table-var":"0abe7700beaf1104fb1cd1173c6e552e2e93d899174c3020a2a79e5083b52c49","hana-cloud-sqlscript-usingindexbased":"3736132303518f52bce8c4c4add53a75b6acef3ab7e4454b6dd8113e8081e637","hana-cloud-trial-basic-automl":"9f43665b70b9f432846031aafbb4e1535896852c8b8182fa4b442d32c616dda9","hana-cloud-trial-qgis-1":"7dd2da1c3ed1b311fed3164721e3f27b0343ff11c25c31b75c4faeb79e1819ae","hana-cloud-trial-qgis-2":"afab6fdf1de69903c19a4f236f8df84462d5d81870de6d9a06c7eb7a9b43ce93","hana-cloud-trial-qgis-3":"e8b34906d82ff71379992dc7da42108fefc32e7d8f4061c25b3754c1b2db29fa","hana-cockpit-api-getapi":"c570a44ec01eb594cfa85a7141630977dd2c5e67dae8ee1e43db513ae8fc30af","hana-cockpit-api-post":"64248ef51da754664d5e08b7d1611708e6c502561bdd920aabf9c2ee8e29b695","hana-cockpit-api-prepare":"bbc484960799905fdd8d48b4c7566fc36738a1bcd99cd9a23f4eb083e717d2c6","hana-dbx-browse":"147512f1ecb15ab46358d2407185c37f021b90a1a491b5855b8510053a0cec16","hana-dbx-connections":"e08141a4bb88aff50b43be04b49500d59d32c61176210edeb70551a0be3d4c6a","hana-dbx-create-schema":"49ae51ab105780906d6e8c3a3223298262f112612ea11620c5eb5fc369ca3e53","hana-dbx-database-objects":"a5228167ab8e9adb7536383bc7c5b5821e667df49b24875b66239ad5ff95a24e","hana-dbx-export-import":"e88654974af7256ff1851ae525976e5d05b85d4224796d65d24bd8afb4cf3c0b","hana-dbx-extension":"aa552e0d002c848e0e0cd35090f322dda86dee2cbef7880ab8ef29031bf583cf","hana-dbx-hcc":"ad805202dfcfd9c046dbe63d09c7d3761f78400b42ec81b0b3e4fec8b7706f20","hana-dbx-multi-model":"9ca1a70000ee617e83da8979e6dc382c346e42d576c8bf575018d1177d5b0667","hana-dbx-overview":"6f20ffba56c931ae4099e6aa35c20cab05c0aec2c49b42bf596a5f731725654b","hana-dbx-query":"3b12e99ec87ff80ebfb11d94f7c23af531ed6095a6bda67fac968d2adaefb72c","hana-dbx-remote-sources":"1c130db334768d59bb716154526c81a578ea7e2777e5cb0ff159ea9e554c93ad","hana-dbx-sof":"fb832969eaa532ded9b27583cedf9925e0a794b42bb83b63e940f2b8cef22781","hana-dbx-troubleshooting":"2dc03560a19ecf8a48b8a60cef8fe9ecfa5026c7e26e44eb37e779dd023a6872","hana-graph-overview-graphscript":"70b5d030ed7e5ff1113bc52613fbf160f88be21feeaf3bd8fa7d0640f9ef7636","hana-graph-overview-pattern-matching-sql":"6941e8402d59a02d56d60ba0b976ccc80fb7b4bccbc6c5bc77bb667034e70f63","hana-graph-overview-setup":"d963e80d5cf1e0d0b49779a69cd406a0da38119397549efb36e5343858affbeb","hana-hibernate-calculation-view":"694a780e70702113d14df2ab88a0896a36dbf689026b696ed34c1b9ba743d2b7","hana-hibernate-introduction":"1e77da1d850a51d4648c903471a6da2085874d4ce90679d1e31ee488717e845a","hana-hibernate-setup":"6b9667264d862b0c35956dc0e96b242e98723ec85cc6f792f8be0bb3b67fdc1f","hana-hibernate-simple":"9dc0325bf62bf85560ba08401acff40a54db05836ab25c50b7e36aedb0ba5e5d","hana-hibernate-spatial":"132b7c3bb091ddab97c9678137d5c905fe27c5ce77e505398750e1649e326e41","hana-spatial-intro1-point":"ba8643883c985a4389927e6dc156f1630e8a9d1675e61fe5a7b7a74408f6e94e","hana-spatial-intro2-string":"e2c6da9ce15585a473aa1a2c9e5e6540343e6fda1ebb03f9b385a75efdf69fa6","hana-spatial-intro3-polygon":"02240fdffd7b30d7d5c100aceda7b9ce8553a310f6f2413b27324e23c6b6331f","hana-spatial-intro4-columns":"ecb5803c31036f4f2a8869cfa65d7aa1f412ff28ec600b8548b34a14c4281925","hana-spatial-intro5-z-m-coordinates":"0f01472b635d4cb93bfc12c8908fcc4258232341042bc0bb3accb32b8ccfbac2","hana-spatial-intro6-srs":"e5f142f00c592b8cf80eb1e1f64138e52d408893c884df9b3a6f09b2e8e216e8","hana-spatial-methods-access":"f62b6967f193cbb4483d34354ca6d7457e3eae4fcaa6682fb87e03615e92ad5f","hana-spatial-methods-compute":"046506b95bcea2b1d004fbfa77d5d724c3413361b94ac0926203df7226af104e","hana-spatial-methods-transform":"7c3a2beed6aaf12cecc5243f4d75a18417c9859a2df6ca09a24a498ebcfcdbfc","hana-spatial-services-apis":"47d22e551c7b15e358803a0f0327db7d1115512fbe8cf98b05eee976e74f5123","hana-sql-advanced-analytics-events":"8b68f71e638f5c8a4b4334a73e231e34f5624e953473df2d50a08478d6bd7ae9","hana-trial-advanced-analytics":"79bd516d629a9c37ac4476beaa22fb2d6866310b80b552958907d02582aa96dc","hana-webide-dt-getting-started-1":"5a00a3341bbb24f7077a0817772d772f5778a10504ececd052bd1f5d91bd8d92","hana-webide-dt-getting-started-2":"00e7865926354aef13f388caa69356b99957f9164b8c29504c4d4c7a1dd29fc5","hana-webide-dt-getting-started-3":"ecfcc76b7889161401863420606e505705d040898437b47368572680148c5ed6","hana-webide-dt-getting-started-4":"ec1aee8786aa95061d69b97878c5382f63fc836909b6dbb3f7f92861888f7627","hana-webide-dt-getting-started-5":"0981c0daad3761e7b070b0a48000e7e0accf220c4f11f0bb5683400261e162b9","hana-webide-dt-getting-started-6":"930208d26cd519d2ba6c2397499594c02100e4b30708215daff936794fdcd21e","hana-webide-dt-getting-started-7":"d0227467e9b9ed80118edc17a1a7463ca0c7f8264e2ea64dd3a4433fd1d7a6e7","hcp-abh-getting-started":"8e2a1b018c3c96650140250b9b567dc1b3d72a2b0301fe8f0358597267d3bf3b","hcp-abh-test-locally":"5648f8ab598e61b48a12044e4d83a46d509dea391c50b0f38ee2ed67fb80d9a6","hcp-apim-create-api":"952f46849ce653c373870b9c57095259f523d0fb287d6c9f820d15ba6bb233c6","hcp-apim-create-product":"8df7669e9d0259eea6ea1d2a5258cb157f72689b57d20b5d75849d5a908f3ab0","hcp-apim-create-provider":"e40765f4f3c27467af181ad7e0642e22978c13b5574e4d94c4ae1ee5d41871a2","hcp-apim-verify-api":"535a9ffd9d78fafb69df70810589480133deb894ce0e72e3ebb3e5861ae1802d","hcp-create-trial-account":"154688fe585f3acd8fdbf3cc937042a55cdcbd5c1d84830064f2b419a6930fec","hsa-java-toolkit-adapter-part1":"cb96fcc33354716662e99321eac692c2ec7547e192175e1f9cf7f28020c732ce","hsa-java-toolkit-adapter-part2":"543e7fc3a81ab128e6e32265e8bfb3500ef0edb900bbb8077e341e47727dfbdc","hsa-java-toolkit-adapter-part3":"0806bb49be65040de0683fa51e8d0e5d92147daff68250a622ad95b8ad086dbc","hsa-java-toolkit-adapter-part4":"4fd6f1e8f1f9e218e2b619a165392feefbb497fef63ac5659d797c95b5765fe8","hsa-java-toolkit-adapter-part5":"21768a00b1a8fbca990cbe96032e4c6339950e9b77c2c268ab0a4c5c1249a43e","hsa-java-toolkit-adapter-part6":"05199482e51fb1a708fa20b48835f72e58ddf1582390c82c83ca38b01dbc19f5","hsa-java-toolkit-adapter-part7":"244a475970e7fcb8e33b4aac23971630b0c98e08a64be41d1e56c9b1f92e37eb","hsa-lite-custom-c-adapter-part1":"23e1bf8d1063f1c8537c01db5ddda5e097766a268bc261794d07d84ce9a789fd","hsa-lite-custom-c-adapter-part2":"f7145cda92555d7a4630eb9c381ebbedcc41e135e614f8b94f1d00513838fad2","hsa-lite-custom-c-adapter-part3":"00f511f519bff062a982d9c1a4a2da918a25543b147cc1fde6a7db678b9a1f66","hsa-lite-custom-java-adapter-part1":"ffbcae12c313c197926531625d873d6d3ff2cc9c0a7ec78336f0343b7aeadf05","hsa-lite-custom-java-adapter-part2":"a0b6fca42e0c6d258613d061cda399327149bc6cd87791445e40aabaa351d289","hsa-lite-custom-java-adapter-part3":"6057ee26cb0f855ad447ad38a363c6b405833f7113d3becd961b68dbd824d553","hsa-lite-custom-java-adapter-part4":"bfc119ab021b89818c1186599da35d4053a23b0ddb24d6d0fb01cdc6af0ba0a3","hsa-streaming-lite-freezer-monitoring-part1":"32c33e4d4d6b1754445be3143fa6be0291743cc7a44313931e2a19ba41f5a2f3","hsa-streaming-lite-freezer-monitoring-part2":"1304e70c920104d024df32fb0135f024b2bc6e6448d49fa22be2b031e1e192d9","hsa-streaming-lite-freezer-monitoring-part3":"eaa933dfb4a0b86a8c201e107c024a3e6a8ab36ef38fc77754823506ac318e26","hsa-streaming-lite-freezer-monitoring-part4":"612087a7c35fd9b49301c81089306b78d5b3078bdeca7bbe878df736a63485bf","hxe-database-server":"9f6c1c264f41d2f23ba088bf45e8b9f6db456e85a53428cc0d286955335af486","hxe-gcp-hibernate-cluster":"5ddc56dc5f42e72011b7e113a6bd0aab54bfae2213c8bffcdb67b9ebc2a74276","hxe-gcp-hibernate-setup":"8babbf8d39364b19b65b53d9a90fd217a78320fe3048d0b99e191acfa20ca694","hxe-gcp-hibernate-spatial":"dd5d3f51aab9afc3a9f1451bb25edbeb0767a81df47b9fc84c65108a8a66a665","hxe-gcp-hibernate-text-search":"cc9e9803e36aae1f50251e531198567bb8603dca541286605cbec5e39489fcab","hxe-node-express":"5c15a474f468b36d0646828ca5b87f1caae8582c6040d2418a3b6705a5d27fdb","hxe-nodejs-setup":"934fb5f3b7549063f55a6befef99c8e193d87e5aceec5aae358b210ad6a7e03b","hxe-ua-apl-binary":"50db97b9d952f8532323a81daba02bb0a5de470b5bc7ace334107dd2a58190d3","hxe-ua-dbfundamentals-backups":"3daaed6e6125ef48cd36bbfa9da81f0a498cfe938806c4c84c38ba9e4652869d","hxe-ua-dbfundamentals-odbc":"81666198c514ab0ddc6449ce41933703de1a29f3069bdef2628431156a15ea19","hxe-ua-dbfundamentals-sample-project":"75a4486acd527fdbb1f03c3befea23fbf506cf0d9c70e558fb2a19b5344925f8","hxe-ua-dbfundamentals-tenantdb":"966e2a42008f25ea0ff641632789994b34ec06075dcc9f88592b736663c751e5","hxe-ua-download-binary":"3fe896351c89b5627e6f947c9f2e06b7a87fb1b809f53b250e921b7486ab14e3","hxe-ua-download-binary-xsa":"9f1bc17df52affc74185a27d29ff545713888a905431e3d81901030f07851b4c","hxe-ua-eml-binary":"03d0d945149b036618a98bb4d624f45d24cc7b1080a1221de7be98cb2d7f7aee","hxe-ua-hosts":"f7ac771267a11bdede4aa6f24e0d2b70012216d1502e66bd9ac78ee4339c2fe0","hxe-ua-install-hdb-client-linux":"00877c3ff6d3eedbc76ceed792bd3063c815050a9380def712b9cf0a32a848f7","hxe-ua-install-hdb-client-mac":"f4aafd38d9b6ea7b33dd99d04d386e4554cb8785d480c556dd1741d077787258","hxe-ua-install-hdb-client-powerpc":"5a8bf0b1365a57d4ced456b2e2ca77e02fabc438e1768aad38cda2631058097d","hxe-ua-install-hdb-client-windows":"9c281c1cf48e1aa1c5db0e359e213f15a6ed59266c5ff75d40fb5aa12a66a087","hxe-ua-install-using-docker":"43f4c2792d187c3a82898616489e4ef73122b36b364ba1be9d175bb7277bff6f","hxe-ua-install-using-docker-xsa":"036ee3761322cd743e3633cc290ed8feb803c7ab0938275c069cb35ba96c060d","hxe-ua-install-xs-xli-client":"53e4bc6ad032e1ea1f93366fc388f8a218857eca1ccbb40549a452cc66919678","hxe-ua-installing-binary":"748d787866ebcb6ef5a0c3a349153f7e43f4d0f229039a6ca85142ed719979a9","hxe-ua-installing-binary-xsa":"c48c51dbfc630c8c30fb67dba0732c17046f29b387354cd8a1e0f3dcba9136a0","hxe-ua-packages-binary":"36b3c30f1ba2454ec7d421413769b081cd0636c80f7d4a5ad7ac5567cb9dfe14","hxe-ua-packages-binary-xsa":"864497194e50b3381a703f5bf6eeb35f06a00675b2b567094ab748c10d5ed396","hxe-ua-predictive-afm":"d461a71be5c5db5a2b87b34150d831ebee880a68379daf6b210fd9bc6897b065","hxe-ua-predictive-getting-started":"bfba4f3dcb84a2c2027a061dd029376a494bcdcee3bdcf374cbc51fba86eaf26","hxe-ua-predictive-sql":"70d6e9c5c3058293ad57f3a88f655db6eaed2e6f25b0443d151ca876e4e872a3","hxe-ua-register":"91ee04b3b807338b8c2f432c7459e58f3532629ddee01432c7d3363bafbe62e4","hxe-ua-sdi-binary":"6454c0e27d92ed8ba089097210c2cf1d92ec8a35b113a3aad458811035918517","hxe-ua-troubleshooting":"ec853c4b622d6c1b0d0386e42f1ca70229728cf1ce5c5bdc978864d600dcf73c","hxe-ua-updating-binary":"7c05d5c0cc2bcfc231ba03116f2379355b3c0431c653f81eea75656ba2bcbf40","implement-subscription-callback-multitenant":"a441b4f3d2a6f21fdd82420c2a67ae5d17607baafffb229954235549c08d2757","integrate-with-work-zone":"937f75f4c19b4b40345d9dcd969e2ca0b0b7f35169021049ddd3576ede86df64","integrate-with-work-zone-kymaruntime":"3bb3b79eb9d8b9129e240188079a151bee525060ceda82fb54d744f93f5e719f","introduce-multitenant-application-development-kyma":"46a8922f2e535ddb775996945f55bce8a7de695747e60e142abad376cdf3c5d7","introduction":"c9f7bf8cc21ba3209de6fc7723dbd8428574c0716258202b62039134c0311634","joule-studio-agent-extension":"d8dd699f4fc20ecaca010fb77eca7b78a79d3508c5a46cc2be86da1f7cbdf7eb","joule-studio-bdc-agent-create":"bcd67616a77bc07cd222be5dfa6781ff3e40fe2a50dfd18a6b233f3516676cf0","joule-studio-codejam-0-overview":"bc2c32d6d1d330bbb1643037b5a36c2b91052372a756abdaba67bb67eca10232","joule-studio-codejam-1-build-lobby":"22923792905cf2d90e59fec157b7fa57846298f212ae63b9d35f6d3ae2f11002","joule-studio-codejam-10-wz":"a22d08155d54628f48a018ee6f4d77cc6fe071f781c9cbff4c160c222e98c177","joule-studio-codejam-2-private-environment":"c9616f2ef65d7c730cacb3be69b1241ef860309fcada89ccf2856cf890fb6220","joule-studio-codejam-3-skill-track":"016858f43c815a86c4743c27e0dcd5d8fc72fe0f35d4f0bb9fc61707d9a7ee43","joule-studio-codejam-4-skill-delayed":"17fa806b978eb01ce53b24005988f32b5a1280aecd22627f90cd41a360a00456","joule-studio-codejam-5-skill-create":"bb7c60bf8aec40017303b06d50b04ba7fa1fb1561c2572c131a6e120272dc3cc","joule-studio-codejam-6-agent":"ad3b3082d02300e1aa7f96525532737361977c2afd281b5b233853d745e095bf","joule-studio-codejam-7-test-agent":"a101280f880aa38a83d4e722120a9681ca93dabf4f5d751db68c0119fc4d571c","joule-studio-codejam-8-subagent-mcp":"dbaab641b02c3d36ac404a20c96c2eed74f6183d2dc3356162f45561d22fffc4","joule-studio-codejam-9-release-deploy":"19d572aa643bb197b4c31a7c427d26597246d7dffd055b02125568140ebf7909","joule-studio-cx-agent-create":"0ab9c433e8f04665ca0c99933e3628be1ab731d2a7cfde2b7c59ddbd91f984a5","joule-studio-fi-collection-assistant":"6130b71d2c548e390ea8b751803f5ecd4b79760382e06f5eb999793f07f58e0f","joule-studio-fi-collection-workbench":"e47178374692e2bc4f63593c22fb41136e0e68b8d52c13d0c9190943c1a06774","joule-studio-hr-onboarding-assistant":"79992ff8fcb30446931048cf61cfddcfe4cca99bd7b3bdfb8afa129c03fbc5c0","joule-studio-n8n-workflow-create":"87d72dc776f8147fe5ebbf05a005494a8f5294299f36898dcce2f0df023ecee5","joule-studio-scm-equipment-assistant":"926bbfc61a3a15b41b7797a76d1d21fc1316db411073af4e2fddc873022e6c8a","joule-studio-spend-supplier-assistant":"d0e96d737d11d7e7c6431a3ee20f399cf63601ea55e17f42b91a4c40c516d0a3","joulestudio-agent-create":"c7a9cf8c05a60f301f77825310bade36a4f7a80fcc616f33f8a1530e125e5a27","joulestudio-document-grounding":"5388a842d036819f7a60a458527103077de87d1075eb8a9938af755387707d6b","joulestudio-skill-action-create":"ce31456b583503da5f174b2f09772d065227c80eae87807396d4cb7c5453d89f","joulestudio-skill-action-filter":"1c1a8e9ee40421d29bf2f5ad16d935c243f0e339e01b60e89237da5b5b3e2766","joulestudio-skill-create":"b0a370b199299a9bc9624c143105125eaeeb39d6ccc9ec20177d89edcc7cbd86","joulestudio-skill-environment-setup":"ce5d9615eb7158f45e798725299c9467ea3559c8f40aef1c541802a9819c8ecc","joulestudio-skill-process":"0d3fd9216df43ec53361a752eff3798684fd60a9a8a9cba466c91dc1a9d4eb35","kyma-create-service-account":"673aa7dfd39065a8c3a7be1e529335fc31c5436875968241b92988f3d3bcdaf0","local-apache-kafka-python":"60678666af6eafd5a6cfeaad6d1483bb9cacb1deedc1d587d7045144a0c4ce7c","luigi-app-basic-setup":"15e5c65c9c161d426fb9358e8537598f4a1a770d244aa99c9a9773eed6429226","luigi-app-localization-react":"bbfab0848f7dc45d5d5c2594031d698cbf250a6da01a62867205bf644f83b2ec","luigi-app-localization-ui5":"3ca9d5954b04d7132bfe0e070e26cc25d512972417108a5c84ba8f58c8f37f05","luigi-app-react":"60f2bf306b00c8fa73d31676cba3981695d20185e9e0aec96bdaa2e2bf2bc543","luigi-app-ui5":"73f2554588629e60eac676238ecbd5a47ed2fb676b114e4ad82cea8e4f35e3ad","luigi-container":"772d70a1651689ed5e5f4d22aa99a78c5d84671b2d0f21859a03b9b6e5a8a82a","luigi-getting-started":"b143c366ea437e7d529506911b45049e679e1506a7ee84d66d2383835453ff80","migration-assessment":"8f43c9c372cca9b9c6c521f1cdcd2b2f334ecbdcdb298e8bb6309ef989c978a9","migration-assessment-enablement":"9e65a25758eaedc1961a3b713860436f95c4e4309e61eb06cc329b433fbb38da","migration-tool":"29273bc17f7b4c589ab23ce6d25e00867cdca7ec43dda08ad6c5b9e3576a4762","mob-app-mao-erp-app-create":"5949104763017d9c59e2711f018daad381c2ca0fa1ac2141ba6bf91c31732473","mobile-start-access-launchpad-site":"dfc8d53a3729de0c9efd45b40f02d8459466f3237c11a265cfb7248e78ceb253","modernize-rfc":"3190a321130bbcb668186751f6f0140699d840433a545f5021f66999d1f6bd15","modernize-rfc-receiver":"b8e94b0888eec8121dfc1493c73c20201ebfe29d87e82ad768c9cf7d38ad9e2c","nwbc-cflp-integration":"269a41d5ea9287b394542bc25556fda77e528c10f8c974b6894b32d07ab99c42","odata-dd-1-origins":"499c62ae6d95bf49871e2ed61b0458226505337402417d624362255943585194","odata-dd-2-standards":"e21efdeec15f34d4ae475bc5cc6ee193d3ae876d4081e849322b01c287a0e775","odata-dd-3-northbreeze":"62b1652ccaadd82af84af79a03840471846cac639d6856914bb10adedb70423d","odata-dd-4-metadata":"675ee679ce9c4716ed96c6c278a0e8d7d09fa054ab5030cb2ce037fd8bf58914","odata-dd-5-vocabularies":"1a47ecfd66b1e470e82c1f0925afc5befc803a0df453da238706ea07a0b9792e","odata-dd-6-annotations":"e12a7e139434bd59ac501e9d50f1115fc5f96267eb989a7f4500584b29bb3f78","opps-advanced-scenario-additional-bonus":"7822148172e95ef5e9d84f71b00f255abd8ebd40f7af754770e953d074566bce","opps-advanced-scenario-coupon-loyalty-points":"efdfe24c3f8b44d509e7bc2f20f13172d9103a87d3756bcd194a8dc8bc201895","opps-advanced-scenario-mixandmatch":"511cb1d3461896edb87c6cad134e5e2a571773d5faf07693738006dfcf133ba3","opps-advanced-scenario-singlecode-coupon-create":"69684211b28086a97a3b6c2c67fe55cc93acd7365d2ecd84712de576b231ac3a","opps-advanced-scenario-singlecode-coupon-redeem":"39eb81b1b15f68e02d980d8dbe2d8d561353cc9363a968d04aa770feaddc48b9","opps-advanced-scenario-singlecode-coupon-ui":"582805f0cfe74b16acfde3bc13ee777f512f42bfdba7c23ed088af414ba2b941","opps-advanced-scenario-transactional":"3c4a82b22fd3f124eec711f06dd137fbd34af7c45cbe5c9393c051169a08deef","opps-basic-scenario":"5495c1bcad18b88e238b1dbe90456dbb50a07366808e563a5ff37e09f45d9bbb","opps-basic-scenario-coupon-management":"a2da1cf9269111e9853f116d702dd1e3bb9b54c3d9617a406b82dde574b6e408","opps-manual-setup":"d72237b128bd8f90b8cea50cb82b7f74745ad0ca9e7c68b576a9c2b2420d5915","personas-access-learning-sys":"15616e5df6e09f844192d02d8c0cae4a89334919250dc1f82e43eb1257c35287","personas-mobile-workbook-build-flavor":"5a1d4d884a82f6826dd3aac645daa5f871865f8e313b7297819212f19bd22c36","personas-mobile-workbook-create":"0e49edab20eb1400c7380ad32aca5cdb3b44bf1a049d78966ef7ab338d44e47f","personas-mobile-workbook-optimize-mobile":"e5062b1c4538e4743075086827a74007de57947e146bc3d505d3b53e01cd76e9","personas-mobile-workbook-testing-flavor":"8e9b484ae4e511156ea1fe72d2fede02bfeaf7c878331a0a60c286cd1ca0fd66","prep-for-prod":"3b24d55610d88862281bff1811fb33c045d09c5081d33237c7a4ee7cfd18dc57","prepare-btp-cf":"8850dce63f1dc5285097e999a5fbdebdcb824719c331d6f1deeaef1ea12e8e95","prepare-btp-kyma":"08a10c084751341f2c28a46c9db7e910f08daeefe1d79c53b51095e526a074e9","prepare-hub":"3b7274d6e0fd2331e3414e5499dea00479fd8f921612748d8ceb8eedc876ab47","private-link-aws":"9edd9fb9e6a1e8803dc59417d2edda4bfdbda30bafdcf31580796a66d9ae3799","private-link-aws-kyma":"8ad768a9285db7fae3514a512fbc286c61f5a899e8a8182c1f6c70b1dbc43d0a","private-link-azure-kyma":"96af73b100c5aae42467c879cd9d2a6c94e985b5c566b99d38c0fb3ff8feabeb","private-link-gcp":"23c65f9cef16b309a99435c112bc1bbf2e25a708d0e1724da816ccc04340b533","private-link-kyma":"8a86a89135bbadd20433d2c58a7fa3e402f5a1e4a5413f475e847085467877cf","private-link-microsoft-azure":"e66460336872a8fbb350a86a9b06d83593e482d4e3760ff6902e0338b47847e2","private-link-onboarding":"fe072654be7ef64daa2c84c18499d56163977202d0f28e3324b29cad874d5cff","private-link-service-onboarding-aws":"6a4add3b447b9baf29b0d9c495c6fd65bd6f7de9e78058d8572d3b15f8efab6e","productconfiguration-ui5-app-create":"7865f50d37c7c4119a751b0cb7b8242565a406ce657c99ad274e1fefa6dc2d81","pubsub-outbound-topics":"210aadbfa1f16bb5bd7b86e14df2f3c3d7ec1b614aa7b8e20cf6b9491d7ad380","pubsub-queues-subscriptions":"27d075443a78eb37d371385b4151869924fc97bec7e1a9a1587ac51dc9584aa9","pubsub-view-events":"7f48e3619361315b514f3067ee72899aaa84346a62667c0c9ba666e55812c99c","register-multitenant-app-saas-provisioning-service":"d2efb6226f84c4bb5ae045222f26d91e328a51a4769f8b41ece49fb8b7885d79","remote-service-configure-connectivity":"b4eccf8318d294ec1735028c5b00ac5ae15e55f7afa0193045c576fc8eb1a86a","remote-service-deploy-to-cf":"c1a9f02b94a98737713731a41ed548c7741d50519be94136de5b4f9c1f58af30","remote-service-deploy-to-kyma":"1c1f82a7e9ac4bcd7159cff59f8d560f6706c91191ac2cd22fd618aa3b2a92f8","remote-service-deploy-with-mock-cf":"563303b8e28d27e8ec4617b127cde7841b373ab602afa18918073df9cf8c8e67","remote-service-deploy-with-mock-kyma":"486148f91912b3e1b056675a6dbc5d0265b976fb3b2a68ec27cb229cce906de8","remote-service-extend":"0e7792ed37908b20830841c22891f626bad5137d9d45f72a3ed3b5545a7dddcc","remote-service-intro":"f990a836bf379b1e8d77629cbe27b776d74acd6edbbfea5547b63eac0d160ff5","remote-service-run-dev-test":"658b2c7ece10d7c5518fa9808c7af62568c5b978457265819c65c881df784e6a","remote-service-set-up-mock-cf":"8963e452a5c91606c4a3ed1b0a5bc0dc237ef725e1d2d347c44752ee379b57b7","remote-service-set-up-mock-kyma":"0a1508371e46bb3d93883ebc7c036b74e854de80db63bf86f9753f5b4f08f8e5","s4hc-abap-environment-create-custom-api":"d992d7fe706d07f6fd77f717d8b6be2de61e81729389277c0c1acb7f4120b61a","s4sdk-caching":"c2196f11131ca3c2dafc16bd2d2b768eef16aa5956e8b85d0bde14bcd9b8e191","s4sdk-cloud-foundry-sample-application":"7fbf4b3236a401ad1d3dafc444e971d133fe272748265c6128fba157598387fa","s4sdk-odata-service-cloud-foundry":"22a28902972c8a961e290e51dcfaa85b5fd89827f6cda66306042e5b329e2509","s4sdk-resilience":"a4b414b9784c666a0e6c72ae647658d58d36cedae78450360fc4a1d73b8c5e53","s4sdk-secure-cloudfoundry":"9ea9d5bf8b2ae9077a484ca74753f7c15244a015e1ee51e005f3bd14def6efea","s4sdk-setup":"6fed58738b142d6cfd3401e42955c87b47c67c700467ef4da79a2778902e34cb","sac-guidedexperiences-getstarted":"8ae50da46a0b7eb7104dd274d629120bbc715c5fd3804470530dc6749f7733d2","sac-secure-oauth":"d4727e80dd29ee7d4a9f13bd275008faff70792920b6a450a971723d2be65c41","sapcommunity-start":"d015e4e6266d6aba3ae76f8680253220bc8414d00b08eb5b3fd355fb32d747be","sapui5-101-add-routing":"8bdc00741293730d0c23f7f9e54eda6a9a7300923f55113100e03ff2061c254a","sapui5-101-create-project":"fb76ba0da932aa37de3e2a4aa26141864466f83145e66fd4d5e52c376a00e258","sapui5-101-deploy-application":"8b3a9a4c26dd6b7a87f4bd3ec2be7ccd15f2ceb6f57d4b302f7198356e69a73b","sapui5-101-improve-user-experience":"9b246dca8c9320851d031a28e4b877d934523d910e6cf1266e93154528ae9ad7","sapui5-adaptation-application-publish":"fd23fe036212931898458cc183c4694c07c1324f7bf312aff7537fe8bdc300f8","sapui5-adaptation-change-variant":"1d74800298dc424f21c76d36726c58e9a8709100889a3d3ba5965339af5eb4d8","sapui5-adaptation-extend-variant":"caf68c5c56fa78a18ea03bc2ab1b5bc30a79b7e0288f36addaa73e0776f8c443","sapui5-appfrontend-create":"d06340e4d7f57f6c3d495547aec0ffe6bda8c02d4194faa595c3d5e9f64f12f2","sapui5-appfrontend-deploy":"ea5b41c2fc8261d8070e28e4a8aca1e4d7a94a4ca0f7de465913a87dd3b5788e","sapui5-fiori-cf-data-visualization":"c12ce2c65f00877b18750106e8c0c415ed8e741d949e827d1740a207a007ead9","sapui5-fiori-cf-deploy":"d4c3699143b58861fd1355e27d4e7c69e52c786e52e926fd877daa101e5767fc","sapui5-fiori-cf-display-data":"e72ec2fefc8921e50ba6176f571a083f347d509fc423685ebe76192f698cfc9c","sapui5-fiori-cf-fiorify":"0407b439b80a116b23a27e131c0f3fa7961b6a0e9e5ae6778d5eae438807d6d2","sapui5-flexibility-keyuseradaptation-1-introduction":"f296f5c4b36183cf8e90f93648a5186e5b521bf241336e257e40f31e2b6a1f66","sapui5-flexibility-keyuseradaptation-2-deepdive":"a130b237acee559f38902a46722f7c883697bcc7f3924edf41be3702b4c44072","sapui5-flexibility-keyuseradaptation-3-advanced-topics":"61dcfc71edebff10e7ce85c9e709fc4fc24b49cdbaedaa82c37f94e485610220","sdk-android-app-link":"d1e18d45f8faedc7072dfc39af3edac56b63d782bfb7688899f9b8e7b5ac82f3","sdk-android-flowjc-custom":"6af310659b95f32e048a8d90281e016e4a24e4ad98f3ceaacdaaaa8c0ef3bf74","sdk-android-flows-custom":"6460c9fde1c68a5ee6e501b50ee461b3369910977d7d1bb9e37b03c1090045e5","sdk-android-flows-onboarding":"36efed3e4975e9686f185d24a94c26702c19f897a515c7d8786a1f9c42d71b0f","sdk-android-flows-passcode":"4e1fa0f94d4c0809f233643be863dbd31b163c1b42d0e1158f90f554c5d3b7d6","sdk-android-flows-restore":"9a657bb0d4151a859f824dc25c6c7a30a7efcf312872a6447f2b5f0cdd6743d1","sdk-android-flows-theme":"ff4b4fe239270a414d8651323d1fd48f7ff57e732e58e5f374a63bf0f2efc8b9","sdk-android-flows-wizard":"8345552aa96be2040665a1ee740fd01f12f1a3513b514eed0117b0791ef91936","sdk-android-flowsjc-onboarding":"82cc81eb094d4c2455b14534b8e858a5af2fc3f27e50d0a768de6d9ff454f237","sdk-android-flowsjc-passcode":"79479ce2080b33174f26b1a20a55a3ed146c82776a6387bad0118c5f6cf2320b","sdk-android-flowsjc-restore":"a3675182a7dff929546dfcaa8f510d3736e434f2d887a1c6d08674bc08b912d4","sdk-android-flowsjc-wizard":"3a24daa09c800df3d227c67809d183f256ed169109374a1e32e69784a2c70720","sdk-android-wizard-app":"bef07f53f9bdb317670c7fc9df5ca13cda117b04d01965150c1b066140fa9377","sdk-android-wizard-app-customize":"1c2797a67c53dbd2a7abebdbcf9c31f71027cb907fa4898c082e99a0bc6433ae","sdk-android-wizard-app-logging":"d14183d3bdb020d42c321ad11ad927bd5877ae97f550657566c30f8a43964a8f","sdk-android-wizard-app-map":"a3507a88477c21e8290344409dec7af0f66453a5043d8dbc3c8ebfd40620510c","sdk-android-wizard-app-multiuser":"15c5b82ce46e627aeaaf0add9d32929f6c84bb0ce1244e15dfd56a2b970e63af","sdk-android-wizard-app-offline":"b9367aceb43449bb46b3f6c9c59facab7bf8fe6b316a63c848c8e2bc0b2c2b41","sdk-android-wizard-app-push":"767fb661da3cf37f612c64c65c799ceeba4fbed74a1dfcdbc19c9b276d41679e","sdk-android-wizard-app-translation":"c02b86a109042b00ac85421247f09d79b8cf2fcde0a9efbfd4a8f247ef363bb7","sdk-android-wizard-app-usage":"ffb4c33da1393b4fccfe8b70b62ad906de8eab9e685aa3f3a065210f4e46628a","sdk-ios-assistant-app":"c9a5ddf757a89a468329c3b0967a00f4e69e609b8dd9467a11ebcbc3b73e82d6","sdk-ios-custom-theme":"67e08b7cd9813e2c207761a04ea3be90301d9c50e9a1b25eb49b561fb7ddcde3","sdk-ios-logging":"592302e4293b730f2581ae52187cc29b0f26433988b63df8c57d275a21bbf9d6","sdk-ios-multi-user":"a6045bc779a86e5a82da518977aeeb6ed96070c23b038d2aed3cdbd0098f8d0f","sdk-ios-push-notifications":"abf8c775b81f6e9d22ff6daceeee55e613cbb93ce89c5d949940a1a9a2e6f228","sdk-ios-setup":"7e801f8212fb5df19ea03f2d8bdc6c77a62e6fdc5de4789243aad9b63b1e75e2","sdk-ios-universal-link":"8ead28b155cdbfe42008d5618f212209f14cac5c5b870a0f834dd4bf9c62c532","sds-part1-configure-streaming-server":"8aa97cc41022d460235ada36b88aaa8d2c8d64692921674e830887d6880a3a82","sds-part2-create-streaming-project":"2f69295fc8c9816779c955da995b938641726b001c9363fe5ddf020250b3aef5","secure-multitenant-app-xsuaa-kyma":"8ae8b1e2a9e3be48fd73608fb97b1efb3d41f15e0048ab244da6c9ff8c5c974d","set-up-bas":"1781aee3364fb7794d0ee2fb09d9870c49835ded9e69ddefb2e95d8f38021b02","set-up-cicd":"3382d3830bad73205674277fb0ce3e75bbd3bb0ddf0567c271acffeb97950f5b","set-up-cicd-kyma":"2c8fb2e716d766d5b5a8058f241b375fb87c7dac038bf3dd25eb4c759b5ea01b","setup-aem":"990f35952588a14eab4ff7ad5fea29fc0b49ba9b1f128c34cb8de3449c7292fd","setup-s4hc-aem":"05341374048e53c6567a24c21f2c987f1523c5df045a8bc2f43df426e7203870","signavio-process-intelligence-machine-learning":"dd8c4914640ed7df8ea510d69df971b481179147096c48307265bc6a89c88498","spa-academy-run-salesorderprocess":"bbd2071c963e1ffd04260f0b5c746eaefa0d9c6e66560c7a224ce56e982e7d42","spa-academy-salesorder":"105780d1b3eab75e45ef9dac271c285e7f3699ea7209bd7e2b0c96064219892d","spa-acquire-automation-store":"ef1e98bed489db584bff1cb60fd55357b5be64999a3783c92ac9f459f0fe8e2f","spa-acquire-businessprocess-store":"7c09156e9d453c20db8d9ef64131fb06a51f1a8f5cd2ccbe35b5fe20b5b49d06","spa-add-email-notification":"268014efd84f9bcec59e49d224ad8ccf760818684a7ba188d33a8fac0275bdc8","spa-add-links-forms":"547e6dd428f9515b0ca087ada56ba4654e5d1979a061c21c0b56d18232070e25","spa-add-list-input-decision":"b63994301eeca03e4765b474786f89e9e8ef0a8c52dfef379bad21ebbc126b65","spa-add-sub-process-automation":"fb552fae3ab43483d7ff6d04655385f0660df445f125264fd3a817c90e956990","spa-authorize-google-oauth":"141a8f4060914d2fb4b1b640cbc5540ae573fcd841032f5f9bea7799624a66c3","spa-authorize-google-service-account":"01b0e4ba9f8bd27c68551c4717da873d0d464a7383645f6fc36e1ab344bd3a3e","spa-automation-webservice-destination":"0ccdb9a2bd8a8d26463f4894448788268df1812f1f2fe835c4e59a42a6a06356","spa-bapi-actiongroup":"a959cdeb93037215764e52fbbc3112873ed7fd3cd9fab4ddfef1662cd10ff342","spa-business-partner-action-create":"a7f7d4e72d83d132db52a907d7fae155c89a2fc318bb3d74b0de0c1dec7ce6d2","spa-configure-oauth-google-platform":"b8eb659983be0a93259cbe48bd302079b14d8826a46289d6f8b37a6bfa8f031f","spa-configure-workzone":"cdd6fae911a91c84161a29f53494ea71e2f062209bcbe93926f9389f171f90bc","spa-consume-actions-cap-action-create":"c5e4ffe3df4d84265dc257addb842384366d233d9e1978caa0d4f4e52f7e55dd","spa-consume-actions-cap-process":"6ae65096a29ce2e5db65d9d352b50e1243180c08936c82ceb6ee6059770e42cd","spa-consume-actions-cap-setupenv":"75f9915c8d9662cbc7580b534e8bfe5238d612fa726577124784d47d9b84a0a3","spa-create-approval-notification-form":"6008e01eaac695a4b8ebc81d98f25c0019d42d168123176f5ceb4a3de055a809","spa-create-automation":"c727447fd4fc085d1a83457a60df58dc59e3769567c0c3cb857f16517402c417","spa-create-decision":"578e68b755244ff77a9375bad3c9c4ac506cc289d19c5c8ee251e0a292d0dfd3","spa-create-destination":"eb2d4dc011ec2e90a08419e8a838621047a9e519bb5e45eece84c40255b92747","spa-create-excel-automation":"1dd51f7e78e5045404a8c3dedd785cbb716d8ca84c0d016a55ba4a326a3cd22f","spa-create-forms":"4b408981ca99b157967d4c5cd9c082a2df0479a1f7145f066a615e477baee7dc","spa-create-outlook-automation":"440a245e02efbdfdef0c356943c056db441a849b1ae2f3bd5184e7f06ac22481","spa-create-process":"4aaacfd65ceed73f5ab1a51cd33c1ec141d4488ba7ee0218725ce4d40dedb3f2","spa-create-process-api-trigger":"c5da94a2ab13da5d07754b0327450192975969e5fcb913a7c946976119f6067e","spa-create-process-condition":"d56f13bb4952041da31cc351f516bb87973647a28f04fa3f0e3ca85572c2debe","spa-create-process-visibility":"ac7110a2a18bc3bff7d5353f75c74e5425bfc38f0757f0ae188f0faffdfe353c","spa-create-recorder-desktop-calculator":"a1643b76115176fff5d14f6b9b01f94f836694eaa7f086537d135266868e50fd","spa-create-recorder-desktop-clock":"b88b860e0b59392cc06d18409de167da3d83f0ec62828fe43470a6f544074192","spa-create-recorder-s4hana-cloudapplications":"13d8d3095edacedbf14744839f7b5b6acbd7d79cdec693dc9eb2989bdbee2c26","spa-create-recorder-win-gui":"1434cbe9080e937b7deabd8bdf6c764de15cce097475fd7d852ee0f953f5ca12","spa-create-sapui5-task-orderapproval":"96c426cf4511f13c28028d1723b9d92326cf58e8d7766221dd72179bf78540a0","spa-create-service-instance-destination":"8e6eb41dd462daa6a6932263509fa50c63462898eefaf98fc5bd9901082833b6","spa-custom-variables":"460192add8bc82c6e81a631444e6c6619ca56041fdcbff7bc1874420796633b5","spa-customize-win-gui-recorder-automation":"3a3396e33003311050e61a0dade379bb61752af1fd3a4cbd1e53179a7dd24b42","spa-dox-create-automation":"dca4c231082e656e6ad4c098ee0c196161fd81ce4a6ddda16a14e6246ebb1d01","spa-dox-create-decision":"a4e2e1db551b073b72e585b8506879f7159e76794e6646c505e9226383b75e3e","spa-dox-create-process":"ba38a42df25fe53b474fc5da81791f9d0353876e17b9768b46491515106a5311","spa-dox-forms":"61019737fa98f1f3aad1396de2a26ea9f0f896a7d30d4bcdccbce20628a680ab","spa-dox-run-process":"cbf4a3f98fcfaf58bf0c92f73157ef960e45941005c8d9cb443bc8c10ea354fc","spa-dropdown-value-help-filtering":"17c6b314f68a970f0925aeae6a6915d698f7508b8168061e99a463079ce0014f","spa-dropdown-value-help-filtering-setupenv":"881536b998d756da0717e1ec8a92aa21d87d8ee7147fdea69f53b293881da91e","spa-dropdown-value-help-filtering-test":"5e2cdafe11455f81b41acb40c73016b47274e0dfd845af4a96be10f6ea45b4ba","spa-extend-outlook-automation":"cff29dc96779b9bdf9e9889abc0e8e18d6b8297f22b5351986abe53abcb14c42","spa-forms-table":"4fbae74129df082f2d906a698f3359eb99a664cce4078e709575787a6b7832f6","spa-integrate-excel-outlook-automations":"a743c6166ea8baeea3e32a875635d44b132f36fc1df6080c7f7c2e8035f88f5d","spa-integrate-sapui5-task-process":"2ea13ebe943abffff43029a7ea630982a167c13cb3a1b5577e8fb734e849903f","spa-office-integration-agent":"2205ba8821176fe824332b6c5b218e51501c902f8c932cd6dec078c306340dc0","spa-order-management-int-1-recorder":"420c54ebc33a5eb8b3335a80bea99471b27c2791d1777c9d8603cc535a94aef6","spa-order-management-int-2-automation":"0580da761539f49b0db90a360a22dc16bd772749070524e076bb01df7158bb7f","spa-orders-management-1-capture":"4ea6b5b3b51f666ef595bbf916af8c029e15fde922ab8207cda82088d59ff355","spa-process-action-add":"20dca941d95ac357a570b320465eaddf7e443a86ec1ad9a1ca05a19150e884b0","spa-process-action-checkbackend":"2c36757a9fba81ab4cf83733dac3aff15f6528b3e72a383048183266f8f413cd","spa-process-action-create":"0ee453d6c35df1a9763c573d127319dfa6617e6eb8d692175913986f69c11148","spa-process-action-run":"61342f4a35b55d0faf8ce8b53624c56e262dc3199f98c252eda7c069b64ab1d2","spa-process-action-setupenv":"f691c0797219b3a9970a9e246cd1cbb87f5f0c76bc362f3b310f41ffa5a31228","spa-run-agent-settings":"885f755d1f03522f9bfadc4a097e6585b0410c03f3499783a5e209cff7c83c74","spa-run-business-process-business-site":"a87868485b8d1a0df3164218c10b7bb3c1671136a02a0d1b08633fd3398c6f02","spa-run-process":"a3c34f4847cfaffbeba83d102b29a7a3038bc16ae1bed21f19ba4475d95c154f","spa-run-process-api-trigger":"3347c79221c70644d005912bbd20d37699e3fb31ff041d7ec584c032996424ec","spa-run-process-automation-decision":"152556b7cd346e01b5a90bd614e1e52e4f0b789b5676396d1bd0174b657d7dfa","spa-sac-api-trigger":"c3cf5c124c05949767253f1550055f0fbdb8193823d0bb6ba3d3c054a9c33766","spa-setup-desktop-3-0-agent":"9b8810ac3cc384ce2d725edafec2098352b3872d714fe9239dffc5bec8f96905","spa-subscribe-booster":"9fdec3a1cf9b5fa4919c9b9a73e922047201f75a7f9d3f3630b4e3d4637965a9","spa-technical-events-automation-user-task":"25864b59c6399f2e3f58071f5e33725790e3a09f4a1845744947c3a83a7c0ec5","spa-technical-events-capture-declare":"92df9a7e92d02c922a07c6f40a18ba31d91df5821562b87cff8d90f4cf680cc9","spa-technical-events-release-deploy-process":"c5c8835a6da7f2b3010fa4395ad1d382cc593ffed68903be9dbe42fd998b6d2d","spa-use-google-workspace-docs":"b303860e4ccba7cf6caaaf734ee90c4aa6f845612c1726d8b5fc03cecbdf664e","spa-use-google-workspace-gmail":"c8971f4c71533cd3f86686d4c7cb5703bb46383bf704e1b8a2c742e666b6e0e4","spa-use-google-workspace-sheet":"7ec913bb98f7b9ef0e379a8fbd46874bbb57e1ef2bc5303a0ff32488b81853b7","spa-use-google-workspace-slides":"0a8c0ad58eb098191ff9e08ab65f47cb48fa42b3e0f2d69bae242094ce6739dd","spa-use-office-calendar":"78ce88a620e2f687c263390aac51ca5169e09f2ebcecfdc7dd06947dbb7f09c2","sth-add-text-fiori-app":"f150aa549ffe786c65f152903649cb8ea421e72aee9e09dc5d8360178118b7d3","sth-deploy-fiori-app":"7993fa1cf448a000f0073c90564d3c76a2f2cafadcfad570ca5795797bdd04ab","sth-document-translation-apihub":"d67588ae0d2b27a4cc8c736545f49af34f2fa790a0367b38d17fbb572a358e1c","sth-enable":"21de00ba898186a8e62981fb4b8cc4d98c270a81a332a0c9aacb12aa4703c2fe","sth-enable-document-translation":"8bb77f19e544531d122af55ac5668baecf596a23994e0d5fc1a2e8fe4ea4cee4","sth-enable-translation-plugin":"27dfb11ec5aa39a62d5c8ed4dfcad82e7ecf4076ed4ac137be9c87f1fda2e6c7","sth-prepare-fiori-app-translation":"56c632839b8e783e876b3108bc6482c9f0c58fedb18445bef97b44a710ee00c1","sth-translate-fiori-app":"1dc8e75419552bf1252412d436ac56675145582e6b73761d6431e60bece27b1b","sth-translate-java-app":"b8b61aec1e5c737606f635fced035f0e30b508855b7719ecdc20adae53172295","sth-translate-properties-file":"fabf9f915fc02b79ce73d2a219fd1ac11a958e420a689f35d6acf110de1b00a8","subscribe-multitenant-app-customer":"30c6cb10f3b46058ee6acbca3947aaa54ccf7c141256b99e6f1b2380b210e4f8","teched2025-genaihub-basic-trial":"4c3f9d7292770fd0ee9b0a0a1ef922a928ab6d0b5d822e087d19c6b6b16ae4b8","teched2025-sapbdc-basic-trial":"d87abd3dc85fd2ec52455867cb16a0a3aefe8e81ca3cd39dd1d78a0a7ce32b7e","teched2025-sapbpa-basic-trial":"592f900f742dc48110e0e4efe234cb8882e5ff43d630ace471850e631ed27aa3","test":"1b2250d1020537cf9312aa165439fe687c80e610669fe6be784b2aa70f8b2baf","test-tutorial":"4872db5be7cba47982d2af8385d8a66264c4b11b416a4c077fa41dfe68cfed9a","tutorial-first-steps":"c613b460223f26657962c537be4b818b2ae1121644bc8dd3b541c009f02b3ada","ui5-webcomponents-react-card":"f4ba79fb8a8b2a2d11c9e732cb348ad69ad190767798a590d93c4831f59a484d","ui5-webcomponents-react-charts":"eae482f181d069ce83fc635d328cfaa230bf593339be13bd2368dd6667488957","ui5-webcomponents-react-dashboard":"640c47f86b15f1dd65898f4bd1711064c2b0a373565decd4998898f66256e1fe","ui5-webcomponents-react-introduction":"b4bdf020d76291b7d323e69c6e610314d9ca89978983c58ce89f85048c301d91","ui5-webcomponents-react-routing":"46ba58e6eb8aea4aef01681099489ffc4600a141f1e9676340a273b7558952d3","ui5-webcomponents-react-styling":"0745d628d1a37ae40873bf64c30531b2afc4b58b76c6de961801e7f72d0186f4","use-local-launch-page":"46605ce9c47552c9996072476ab2e16aa8dbea6e3641b599bbea7a6d0d274fa5","user-role-assignment":"cde8503c22b3832daa92927f5b72f0c7effc51ec552e8d2115f8a9f167a940f3","webide-customize":"b93d14881cb72e42a78427b6dfb1a37e98dcd3ce991363f92ac158d274846b75","webide-github-branching":"1f2839b3d90caa8062c83198c47b15c9c28103d23ec3e6344e508a89548b2405","webide-github-create-git-repo":"d3d131c5f28789d49da723be542f2bddcc8bf19bde82c0882cf66125db216b6d","webide-github-creating-org":"01129603a8e0721c95424b61b1dc3fcab75f46b11717f27c7dd114660a5ec91c","webide-github-import-project":"7b9f449973c1ad26a4858ea0135e861bbc0f95cc52560c0f748160ddfccbfe04","webide-github-issues-milestones":"1e65260fca9f6f95b5670a5944bcf44c768abc0f628c6ef0ed0f315c7193f804","webide-github-merge-pull-request":"5fde4bcae4ef32e706cbf86d8c6f3ff12534f727fbfa956615088e922864ea82","webide-multi-cloud":"8680b5ab64d2e27634ae38e70a10cfe1a12706b98c47c969a61adc7e2638fc7e","workzone-access-sap-build":"543aebaaa557745df7ebcd7f8101ff65268e952a310148be7c123597106d3bf3","workzone-advanced-build-menu":"b3a9b67299fa3d26c78425a2e3d2997163cc8ca30c6606eb612dd76a33afde7c","workzone-build-1-homepage":"98f90a10fb7c50afa90fb22de4e284c45b78e0374149cf4029e56b93ddadeac5","workzone-build-2-workspace":"f5abb4bdada6ff6e30351162537ad308d59f3c73a48b477a89b974a845359c9e","workzone-build-4-sapui5-app":"e943fa940cfada802c903d50eac8d40f85e0001b5041fa7036cbf458888b6dad","workzone-build-5-url-app":"7adc5ba5e186591f08442605e18110d6377ea783bd821f5a118837d6773c0806","workzone-build-6-sales-app":"2a754c9125220a1e3dc4c73316143f5886a5c238cb498624f6f59d0db8bc7352","workzone-build-7-user-experience":"96218a68cb08c62cfa1fe45bcecf693e76e18601626363313778f40d98edefe2","workzone-connect-gateway":"6b3fcb06aa02d7eec515a829b926bb24a10e5f7c4c5b67e78ab8b2cac94c18d9","workzone-enrich-3-webdynpro-app":"41a64639d8a20fdbf1f2a644c07def9e3437c3060abbbd6de2865ce07662e866","workzone-enrich-5-integrate-card":"6233e0d7979763f500b0222117edafdc29eae11da91b5ecf51a1c89594a38eca","workzone-workshop1-access":"71133212422d24195d07fd77408cd023eb398f09742b08b5fc12ab81488f0c50","workzone-workshop2-create-workspace":"2294e178f2a9003c5cc041229f403814e978a7eb907ee93b96ce02f69c14d006","ws-local-configuration":"2c3cbe006da9812d0cd402411265e60f02da2cc2deca8b5d33ee793eae083928","xpa-sac-cnr-gettoknow":"205c7027a682cad8776c64f22c77fc3b13310b73380eadcd8709075ce616776a","xpa-sac-cx-add-new-sections":"6604f619da998436e6d4712c3006bddd831b76a50ede53e4235f534bc68f9242","xpa-sac-cx-add-story-navmenu":"c97dcd5566de8b504f5cf502c6c6afee96d4281b0eb2e6639df09407a3cef9a6","xpa-sac-cx-customize-default-settings":"95ee5567b11b8f47e4811ca1021a520c1632612d95f26c707c6c174375a7a279","xpa-sac-cx-customize-tablesettings-dialogue":"f23b6a1c03c7ae1b048d4723438fa40b1a7b295b41bb679b1b8fbbe70e1c0ef3","xpa-sac-cx-data-integration-setup":"0c741145b2b0ac6c0f01cb8b26e62fef2f6d2d8d6c6cae6a4d6506bc7e26783b","xpa-sac-cx-manage-data-loads":"a5f9c8aff8f6b4c7706f116f36dc14cda3c8974f4233d18ca4204d8afe273c87","xpa-sac-cx-technical-structure-stories":"992fd9a35b9186337e0c5c3cd59830454c26dcefaf18b4ff59851b0617f729dd","xpa-sac-cxmp-add-new-driver":"bc81c1d7d21fad1b4025fcd732c68a3e1562f4138b6afd16365ce1d0f4525ab1","xpa-sac-cxmp-add-new-version":"1a905ea37389149e6297bbc2251c4e857101a291f522f2dad9fc6221a6d73186","xpa-sac-cxmp-datamodelfundamentals":"15b7d1528fb4212c4cc2b82a1d704ea24167bb7780190203eb1ac4ce253ae4e0","xpa-sac-cxmp-extend-activity-dates":"4fd52db06ed5dbc08deccd50bf20b896ceb4871f44b1c7eb30a646b8a1567136","xpa-sac-cxmp-marketingplanning-gettoknow":"baea0c20e93a28cf25141b84c4891160cc60241588eff984941283c1d915110f","xpa-sac-cxpp-portfolioplanning-gettoknow":"9caf134c7c1b39939edec6ccf868504b01d983b325e0fcec83fa1e90db4a2c79","xpa-sac-cxsp-add-new-spendtype":"2a2e7c525a40119f5e911402ddc06ef0312cee3d6ab688649ff593b76bd5eee7","xpa-sac-cxsp-add-new-tactic":"e65b0ccee3927ae95191f8c7d2b57dc61b9ce14780f7cfa4842bfab47750b3bb","xpa-sac-cxsp-add-new-version":"fd07a34ca9fd5b3d8d39c6793e51a3dde1566397ff0fac1a1611b664991739e9","xpa-sac-cxsp-salesplanning-gettoknow":"859e42affcce7a7ecd6f4e65ab0a8a16e02b3187d0413246482200db0ddf2c95","xpa-sac-hxm-add-cost-type":"b98e8ab2de5d714036efbd613ea0f7adceb60875019995cfca43e7766c72613f","xpa-sac-hxm-add-new-version":"6b9e7a2134622f1f69c790fd7431caa1c6a338cfd8a13f54ee6d369c5e3a246a","xpa-sac-hxm-add-plan-level":"90a1e2c3b6f18990be697cb78feb3d304d00516c90bf785d38f39cc9f2bb8644","xpa-sac-hxm-create-predictive-scenario":"4aa066f9b0a8f7c3b3351af124b21e3062b3517321ce6a95afd1d54e71796483","xpa-sac-hxm-maintain-central-assumptions":"bc67a0fddbcbc294e68c0d2b789d9c667b078a4e447be497f872fa26ab448cac","xpa-sac-hxm-successfactors-writeback":"8fe8ab82a450de0c6f6da1b31a8d9cdef15b36fc7e948041cd24348134da9a40","xpa-sac-hxm-workforceplanning-gettoknow":"2d308af2dc1bcfc197ab17d7f2e370486770632c27a502c0ff01351c4a72796b","xpa-sac-swfp-gettoknow":"6d9f896c3872fd1d655120b85b0d5df56d5d9746b1c621796a62a9670ae6f62a","xsa-calculation-view-table-function-sqlscript":"d6776f51d429f3256c956e35cd869373ece2c44e2f9138e2204d3df54b7ae75b","xsa-calculation-views-anonymization-k":"59b0746f0aa757e86ba1b0f3af72f768fc8343500d71f10a91309c631200dadc","xsa-cap-add-uaa":"d73ec11446a249b97d4eecf6e02031022c817166ff11b15841d6b929e2f1085e","xsa-cap-create-database-cds":"42f30fd98a636d657e3bcbe91617f7345b5d021c33884a34a285f45a676876c6","xsa-cap-create-project":"ea9e444ffb8cbd2a6ec193abdb610528aab15bc1090cdf0f6ae2562371d1c2c7","xsa-cap-create-ui":"19895d17778e363aee90435cd55470c592ebdf1712229b139ab97ca7be2b6bc6","xsa-clone-repository-git":"13d9c15445f35a4bdd163a9324c3257aaa4455d6fc554e832bfe1f83167bbb41","xsa-connecting-webide":"50884d76e990af314c3d574d8c67d0f60a7eb4a7d7b24bc7cbacc299257be0d5","xsa-create-user-provided-anonymous-service":"2ad9fb614ee3e544712b5845cd2739ef9204306961366432b85dd3acba0c6a6e","xsa-cross-container-access":"e19db41542318d1a91af2065ee571640bbc66238974b0278338a7f4532398df1","xsa-debug-nodejs-xsjs":"828d8addd74af182d79669ab292e8f315e337588d46e542d7a8c9ae994aa155b","xsa-e2e-capm-fullstack":"d6644a8c2a0db5d147ecac02f959dc1edf85d7d200db238a1a174a01004195a1","xsa-explore-basics":"9d75105e0bf7fd881e266b13375f42ae91f31e18a672f04833b88af6ec632797","xsa-graphical-cube-view":"85f657950010f1b25f1f76d0b0af82da727778e020d39c3ed55e4e6679a58c6b","xsa-graphical-view":"b89ab7dc582a66dd9b5adfe7634f4ad3950545ba09bc59f5923fe815aa46f6a0","xsa-hdi-module":"59865742bd876cb40cdf47d413858c70e95550ca9d4662505df66ae6688fd7fd","xsa-html5-expand-module":"9657559b8c133118488a7893ae1b2b7cb15c9b6ea1de31b7171e3855157bd707","xsa-html5-module":"60a94133aa85ac7ed8cdfad040873bc29ff4e5aee48299794de9cfe3e9ae55ee","xsa-import-shine-data":"60d170e4a1579727e0f23feb8d58d1476aaf375c5618b0b0684ba08264be1f04","xsa-ml-e2e-github-mta":"f03c66287d4f9b2f93c270a8cc41ac98d501825baf2198dd42dcdb19499d161c","xsa-mta-package-transport":"c9c22f42f939a075f9f548cceee4d967e67c141471182263ea35ac8b615fe511","xsa-node-async":"1c1bbbf529de684dfe50ca9df708dd2a39dcbe7c8a3fd962576e4f4b222888d1","xsa-node-dbaccess":"9e230c74e8a561e3d4d451b9a396fed3fb3af1c9003d18cf165f0c2d0974e6a1","xsa-node-modules":"328516936766974de71e992827852955179dc0a74f87c6c8dffa7d1b4478e9e5","xsa-node-text":"9a028c7ab2c33ba715b88e2770182ec0003ef3c1699fb3c5089d9984f2bd005c","xsa-node-websockets":"619e992587c928efd839251e455d854d324b6f377c6ae0ec1352c3879a4e01cf","xsa-sapui5":"71b0a8622852ab3dd9225330c163167b1621813cce92b3e6381d882dc2607545","xsa-sapui5-consume":"97de6917aef31364cc242be3a689baa663dde2c17fc149bc144c03a9d0956493","xsa-sapui5-metadata":"b71e6b7be788b3e8538cffe1f39f09e46a800db2ab1f681228a7780e6960d24a","xsa-sapui5-odata":"171ee88b534e95dbc0f6a546148bf99f83ea0424f4daa0a526fafb50a3ea1c63","xsa-setup-new-space":"a4d03d742a9350013032679b768d042938af086fc987881054ead7660bc24a25","xsa-sqlscript-anonymous":"7675a079696709081553658d6955c7f7a6cb869f2172b9fbac5905a94af618f3","xsa-sqlscript-debugging":"d6fcd0c02bc4d4ff9c245144dda2d0823a808d8d56958cfe762476c0b5c0bce9","xsa-sqlscript-libraries":"3ef5fa775a0f5c02f0c4491ffe90c99540503b39daac954c083d9c55df737f0e","xsa-sqlscript-parallel":"c0e3dbcca78090d3b81b6c7fbac048dbafdb769c7e5994169b0290c41dc9e684","xsa-sqlscript-scalar":"d39765981613bdcdd2dd75ff4f86cd8835e9865511c89cc5272c330a421fb799","xsa-sqlscript-stored-proc":"21e17981685cc8cdb24f6ea36e63300191766245f835b1e7bfe4ed76b6b2b222","xsa-sqlscript-table-operators":"e13af5138cced93b8beefa66fd3e15f5ba92b4e4b1da13b44f6530aee8970300","xsa-sqlscript-table-user":"4dc9e2c819e760581ee7d83b2bdbd7e2875440b49ade30e7d9aaf40c527c0095","xsa-sqlscript-table-var":"54d11cec79cd2d58b860363c93ffd01e66ff57fca8830d74f30825b4f10f44fd","xsa-sqlscript-usingindexbased":"8c735de564cede866acae33f42d7c446d4eac851fbec68a0dd20c99f18f938e7","xsa-tenant-db-space":"52cddbe4c53751fbe91530053a5da41cfcb63a10a50ce0132dfdbf8661823dad","xsa-xsjs-xsodata":"2b8cf47ac547baf88fcdb75d7d84e0f385ef86c07da458ac108bdec6a1abcc3c","xsa-xsodata":"a43551136d80989c356ab3963f13316b5cb3f89405016f20cc762604bb15960b","xsa-xsodata-create":"77036dec2438360eafa08d2bf549b230e30b4752d432cc9686125f37fffb1995","xsa-xsodata-entity":"9435e843067468ecbc9ff52a1fd5581f6057d599fed89f01827f197e6efbfb08"} \ No newline at end of file diff --git a/hugo/data/whats_new.json b/hugo/data/whats_new.json index bb956944a..b1b509852 100644 --- a/hugo/data/whats_new.json +++ b/hugo/data/whats_new.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-11-01T12:18:20.851Z", + "generatedAt": "2026-11-01T18:24:27.644Z", "repos": [ { "key": "tutorials-ims", @@ -8,6 +8,110 @@ } ], "entries": [ + { + "id": "tutorials-ims#2971", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2971, + "title": "Startup preflight check for draft cascade constraints", + "summary": "The server now verifies that all 26 draft tables have the required ON DELETE CASCADE constraints at startup, logging a warning if any are missing so operators can catch constraint drift before it affects users.", + "category": "Maintenance", + "mergedAt": "2026-11-01T18:19:06Z", + "week": "2026-W44", + "weekStart": "2026-10-26", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2971" + }, + { + "id": "tutorials-ims#2970", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2970, + "title": "test(hybrid): draft DISCARD reconcile on real HANA (#2909)", + "summary": "Added a hybrid HANA test that proves draft DISCARD correctly reconciles Mission/Group rollups on a real database with cascade constraints active.", + "category": "Maintenance", + "mergedAt": "2026-11-01T18:07:22Z", + "week": "2026-W44", + "weekStart": "2026-10-26", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2970" + }, + { + "id": "tutorials-ims#2969", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2969, + "title": "fix(test): apply draft_admin_integrity cleanup to 2 missed tests (#2909)", + "summary": "Fixed two test files that missed the draft cleanup pattern update from the draft_admin_integrity adoption, restoring a fully green unit suite.", + "category": "Maintenance", + "mergedAt": "2026-11-01T17:46:12Z", + "week": "2026-W44", + "weekStart": "2026-10-26", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2969" + }, + { + "id": "tutorials-ims#2967", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2967, + "title": "Optimized draft deletion with CAP 10.2 draft_admin_integrity", + "summary": "Enabled CAP's draft_admin_integrity flag so draft activation and cancellation now cascade-delete child draft rows at the database level, reducing round-trips and keeping draft tables clean automatically.", + "category": "Performance", + "mergedAt": "2026-11-01T16:20:36Z", + "week": "2026-W44", + "weekStart": "2026-10-26", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2967" + }, + { + "id": "tutorials-ims#2966", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2966, + "title": "Upgraded to CAP 10.2", + "summary": "The platform now runs on CAP 10.2 (cds 10.2.2) with updated @cap-js plugins, bringing the latest bug fixes, performance improvements, and compatibility with upcoming CAP features.", + "category": "Maintenance", + "mergedAt": "2026-11-01T15:22:13Z", + "week": "2026-W44", + "weekStart": "2026-10-26", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2966" + }, + { + "id": "tutorials-ims#2965", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2965, + "title": "Retired btp-onboarding tutorial repo", + "summary": "Removed the 7 decommissioned btp-ea-onboard-* tutorials from the fetch registry and content hashes; they will no longer appear in browse results or be fetched during builds.", + "category": "Maintenance", + "mergedAt": "2026-11-01T13:47:55Z", + "week": "2026-W44", + "weekStart": "2026-10-26", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2965" + }, + { + "id": "tutorials-ims#2964", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2964, + "title": "release 1.41.8: CF staging fix + event-app improvements", + "summary": "Promoted 1.41.8 release to production, including the CF buildpack staging fix and event-app improvements.", + "category": "Maintenance", + "mergedAt": "2026-11-01T12:35:09Z", + "week": "2026-W44", + "weekStart": "2026-10-26", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2964" + }, + { + "id": "tutorials-ims#2963", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2963, + "title": "chore(release): bump MTA version to 1.41.8", + "summary": "Bumped MTA version to 1.41.8 and refreshed the What's New digest with 15 new entries for the PRs merged since 1.41.7.", + "category": "Maintenance", + "mergedAt": "2026-11-01T12:34:56Z", + "week": "2026-W44", + "weekStart": "2026-10-26", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2963" + }, { "id": "tutorials-ims#2962", "repo": "tutorials-ims", diff --git a/package-lock.json b/package-lock.json index 146233b58..b40da7d93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,18 +13,18 @@ "dependencies": { "@aws-sdk/client-s3": "^3.645.0", "@aws-sdk/lib-storage": "^3.645.0", - "@cap-js-community/websocket": "^1.11.1", + "@cap-js-community/websocket": "^1.11.4", "@cap-js/ai": "~1.1.0", "@cap-js/attachments": "4.0.0", "@cap-js/audit-logging": "^1.3.0", - "@cap-js/change-tracking": "^2.2.2", + "@cap-js/change-tracking": "^2.2.3", "@cap-js/data-inspector": "1.0.5", "@cap-js/graphql": "0.14.0", - "@cap-js/hana": "^3.1.0", + "@cap-js/hana": "^3.1.2", "@cap-js/mcp": "1.3.0", - "@cap-js/ord": "^1.9.3", - "@cap-js/sqlite": "^3.1.0", - "@cap-js/telemetry": "^2.0.1", + "@cap-js/ord": "^1.10.2", + "@cap-js/sqlite": "^3.1.2", + "@cap-js/telemetry": "^2.2.0", "@grpc/grpc-js": "^1.14.4", "@opentelemetry/exporter-metrics-otlp-grpc": "^0.222.0", "@opentelemetry/exporter-trace-otlp-grpc": "^0.222.0", @@ -32,7 +32,7 @@ "@sap-ai-sdk/orchestration": "^2.12.0", "@sap-cloud-sdk/connectivity": "^4.7.0", "@sap-tutorials/cds-alert-notification": "^1.0.3", - "@sap/cds": "^10.1.0", + "@sap/cds": "^10.2.0", "@sap/xsenv": "^6.2.1", "@sap/xssec": "^4.13.1", "@socket.io/redis-adapter": "8.3.0", @@ -67,7 +67,7 @@ "@cap-js/cds-test": "^1.0.2", "@lhci/cli": "^0.15.1", "@sap-theming/theming-base-content": "^11.36.4", - "@sap/cds-dk": "^10.1.1", + "@sap/cds-dk": "^10.2.0", "@types/sanitize-html": "2.16.1", "@ui5/webcomponents": "^2.23.2", "@ui5/webcomponents-fiori": "^2.23.2", @@ -104,7 +104,7 @@ "yauzl": "3.4.0" }, "engines": { - "node": ">=22.12" + "node": "22.23.4" } }, "app/admin/accomplishments": { @@ -891,14 +891,14 @@ "license": "MIT" }, "node_modules/@cap-js-community/common": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@cap-js-community/common/-/common-0.5.0.tgz", - "integrity": "sha512-Ll8kEM24PlWTM9LWeVQsZG3+9uzItCdQSm4MhdNQ0j1a4BxiBa/ZZkIU6SJzBQsuJNRmKeHKI9igOkl+v9YHxQ==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@cap-js-community/common/-/common-0.5.5.tgz", + "integrity": "sha512-ey5MwBRZcpW2hiR8JctZKXNEuv3SSwkqNgqdQiSV6eyP5oIqnktY8KaO/3AH31yUuaN42J4gk/RuyZVr3j29JA==", "license": "Apache-2.0", "dependencies": { "commander": "^15.0.0", - "express": "^5.2.1", - "redis": "^6.0.1", + "express": "^4.22.3 || ^5.3.0", + "redis": "^4.7.1 || ^5.12.1 || ^6.3.0", "verror": "^1.10.1" }, "bin": { @@ -914,15 +914,15 @@ } }, "node_modules/@cap-js-community/websocket": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@cap-js-community/websocket/-/websocket-1.11.1.tgz", - "integrity": "sha512-THiim6SlkrRL49GpBFaPfB4S8xRII/lptFVgilXkdwzBIuVLXFRZUEtG0SiyCrN0dl8d8pCWxuQBtN1LceYRpg==", + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@cap-js-community/websocket/-/websocket-1.11.4.tgz", + "integrity": "sha512-FeIVxkjuTzm+TidX4A8mcGRnLl0mIAOZr93Or2sXS4KfRsAVLXpI0CLE9IU8fai7HAXLIavln7+DDbb1K++N5A==", "license": "Apache-2.0", "dependencies": { - "@cap-js-community/common": "^0.5.0", - "socket.io": "^4.8.3", - "socket.io-client": "^4.8.3", - "ws": "^8.21.2" + "@cap-js-community/common": "^0.5.5", + "socket.io": "^4.8.4", + "socket.io-client": "^4.8.4", + "ws": "^8.22.0" }, "engines": { "node": ">=18" @@ -1009,9 +1009,9 @@ } }, "node_modules/@cap-js/change-tracking": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@cap-js/change-tracking/-/change-tracking-2.2.2.tgz", - "integrity": "sha512-ENS9YWEM4PJOZkT9/Z6Bk/PQwXyIJblwBuY9FtyidHy2qpq5THy+XsZoBUCIz67dFkpbUjqxj0MOGeDmJTM7IQ==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@cap-js/change-tracking/-/change-tracking-2.2.3.tgz", + "integrity": "sha512-rqpjvmIktNH+2ciUwCZV+1FwFGTmGbuuVZrsd1nhdVkRd1fSEST4HLN5OgrfVJ/xJ1gUNTtgqCJmPSb1tBpj2g==", "license": "Apache-2.0", "workspaces": [ "tests/*" @@ -1042,9 +1042,9 @@ } }, "node_modules/@cap-js/db-service": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-3.1.0.tgz", - "integrity": "sha512-CabYQlrT8O2n8aWnvjBhk94KlkpwowUzqnxwJFtokEBiHIVemu1+Kfvoo1djwpX6MB/4TV2j3xQf0DnLiLMUeA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-3.1.2.tgz", + "integrity": "sha512-cEjDCQZX2NDqiOYRioCzx31rlz+VD8ViTwg04dxiI4SBK6Sz19i59W3e8rVdlpK3cFTr95R9cJ1S/cPMtFbLCQ==", "license": "Apache-2.0", "peerDependencies": { "@sap/cds": "^10", @@ -1073,13 +1073,13 @@ } }, "node_modules/@cap-js/hana": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-3.1.0.tgz", - "integrity": "sha512-tq9O7QqXQTLtdrBsnKap45P+5gDP9/CwL7NJ4L75fJPqUlVmxv4EA0Ax+k9k6Z2lN3IUY4QlsAJumji/Bfw7Ag==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-3.1.2.tgz", + "integrity": "sha512-QkF+oHkt/6M9uk5Bha1hYPPpi7eMnuyXwDvPzK7BJQ5MU7oYs7gvOex/IHKwSlpmPWn8maWxTQJIQn5vLq6qkA==", "license": "Apache-2.0", "dependencies": { - "@cap-js/db-service": "^3.1.0", - "hdb": "^2.29.6" + "@cap-js/db-service": "^3.1.2", + "hdb": "^2.30.1" }, "peerDependencies": { "@sap/cds": "^10", @@ -1120,9 +1120,9 @@ } }, "node_modules/@cap-js/ord": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@cap-js/ord/-/ord-1.9.3.tgz", - "integrity": "sha512-Mh5gZkZwPa9uWKxGjaiEcy+3kcdXr+myOCmOQIjJNz3+ITMm/AF8CwSE98ir3wAuKt300rDdO/+aiFNVUJGxbw==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@cap-js/ord/-/ord-1.10.2.tgz", + "integrity": "sha512-cdyWS9XSlObRZyr95SQr+Ux5GMnLqHpO/MrQVuvUHDwEkciffU8EDb6zCqeNZU6GWWHTq5iAfbwIci2S4B1uXQ==", "license": "Apache-2.0", "workspaces": [ "xmpl", @@ -1145,12 +1145,12 @@ } }, "node_modules/@cap-js/sqlite": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-3.1.0.tgz", - "integrity": "sha512-wcTMQqaGlIq+WkuvQ/p7+I9xoCUGxzYF8TFnrtl78MClBukTrRBWc29xvwznFlifJUVdF3NVhcIabep5+ancHA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@cap-js/sqlite/-/sqlite-3.1.2.tgz", + "integrity": "sha512-QrKtgX4UhlzQdwixy4w9jVDMyK1a+vY64QADwgoMiAuYfuP3vNm272R4d17wreDiqsTb5uyY9w9wA3TyDhdtOQ==", "license": "Apache-2.0", "dependencies": { - "@cap-js/db-service": "^3.1.0" + "@cap-js/db-service": "^3.1.2" }, "peerDependencies": { "@sap/cds": "^10", @@ -1167,16 +1167,16 @@ } }, "node_modules/@cap-js/telemetry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@cap-js/telemetry/-/telemetry-2.0.1.tgz", - "integrity": "sha512-9MVm4OgdLM8FQg7jr1RoTzHTnv8aexxvYos6ZMpS8Mzweb+K7V4ePaaRTXvG5wTPueHDC7iQui+hxszIpq7tXw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cap-js/telemetry/-/telemetry-2.2.0.tgz", + "integrity": "sha512-pcgV8qDsDK7cS8MhGh76iOqmzIj7a8HAFG0xeiSgKJ4+hPgyuzwEzzrtT51mQHjbxBtFyWmsd5F8juS2Jsaa+g==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.9", "@opentelemetry/core": "^2.8", - "@opentelemetry/instrumentation": "^0.219", - "@opentelemetry/instrumentation-http": "^0.219", - "@opentelemetry/instrumentation-undici": "^0.29", + "@opentelemetry/instrumentation": "^0.223", + "@opentelemetry/instrumentation-http": "^0.223", + "@opentelemetry/instrumentation-undici": "^0.33", "@opentelemetry/resources": "^2.8", "@opentelemetry/sdk-metrics": "^2.8", "@opentelemetry/sdk-trace-base": "^2.8", @@ -1902,15 +1902,15 @@ } }, "node_modules/@hono/node-server": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.1.tgz", - "integrity": "sha512-ELuehkj5VCBdgEw9zs+ivkKwyzzUCSQuE96YmiPvn1ECBoZCczbFXJLeEGMTYjphP6gydh4pHMqEYPVMYUVgQg==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.5.tgz", + "integrity": "sha512-MgP/I06GdvsilDspMk/qmRzpk8LOUStP6jFAbSRi40W09DhoyUn+Mj7eyKICPqeYKybOjVFLVIAQzvu1bfIa7Q==", "license": "MIT", "engines": { "node": ">=20" }, "peerDependencies": { - "hono": "^4" + "hono": "^4 || ^5.0.0-0" } }, "node_modules/@iconify-json/simple-icons": { @@ -3097,9 +3097,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.30.0.tgz", - "integrity": "sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA==", + "version": "1.32.2", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.32.2.tgz", + "integrity": "sha512-SWsVtH/0vULSQStoZ6xxH2K09Li8fXYTMC64ZeogCdpZ3XSi1eCPOByV1OpuJxuI3OcmHhosDWYyii07tpPsLw==", "license": "MIT", "dependencies": { "@hono/node-server": "^1.19.9 || ^2.0.5", @@ -3522,9 +3522,9 @@ } }, "node_modules/@opentelemetry/api-logs": { - "version": "0.219.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.219.0.tgz", - "integrity": "sha512-FFx7YnaYJlIjqWW/AG/yAZ0L/NEY724PipXXXQLdtZPbLwBGbUMTGL1i/esI56TWfTUXxhLfpgrnWJCG8aUJyg==", + "version": "0.223.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.223.0.tgz", + "integrity": "sha512-Oepm6etVPFCn0VWB1t833iOTgz1eYBDUPxcrOR/XvwzD1+Ag9VzSPSrrKAFNJ/haatj+8CXbG47pZXvdNQKDJw==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.3.0" @@ -3694,12 +3694,12 @@ } }, "node_modules/@opentelemetry/instrumentation": { - "version": "0.219.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.219.0.tgz", - "integrity": "sha512-X5t7I8GyIO9rmGHwoedZLREpQqrF1WW2nxzNNym6HOKpFiE+rvqV3ngC0xcZVO2YwIGf3KKmRdWrYwdwz3H9RQ==", + "version": "0.223.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.223.0.tgz", + "integrity": "sha512-tttBo88TbwK1zpsH6VeJoxLQopxOjW3cnrP50fsQJRZftkSKDDwjolXXBvow2jy0LKXlNRkDQh0NT6yI/q+BEQ==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.219.0", + "@opentelemetry/api-logs": "0.223.0", "import-in-the-middle": "^3.0.0", "require-in-the-middle": "^8.0.0" }, @@ -3711,13 +3711,13 @@ } }, "node_modules/@opentelemetry/instrumentation-http": { - "version": "0.219.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.219.0.tgz", - "integrity": "sha512-nNt1fqpyah/OKjNHdEOu8xLwISppRU2qJuF8aR+fCcftVwdFkPgtworBLA+TI1HU2iF508jcQBF2gerWczJAXg==", + "version": "0.223.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.223.0.tgz", + "integrity": "sha512-lQkvLeRjEHwDjc2NEEAPUlk4x/0qfjhbZh0U5d2/5rPPRQ7TNvMmOtd/ForpVVPGUBfhtEDrWhqumr7vLMjBtA==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.8.0", - "@opentelemetry/instrumentation": "0.219.0", + "@opentelemetry/core": "2.12.0", + "@opentelemetry/instrumentation": "0.223.0", "@opentelemetry/semantic-conventions": "^1.29.0", "forwarded-parse": "2.1.2" }, @@ -3729,9 +3729,9 @@ } }, "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.8.0.tgz", - "integrity": "sha512-hd1Lfh8p545nNz+jq1Ejfz+Mn1hyLuxYn1YzTfFNrxr8urEWMNQLPf1Th8kjOH+HxwawCrtgBp8JpBUR4ZSgww==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.12.0.tgz", + "integrity": "sha512-1HsSAuvT4/my0QrXWsyXFdWjKaPeCHsismKZgEEIb8NK13LP6DrMRlsUbvD/0F9mDWK3xDom9AMv3IscxgOnOQ==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" @@ -3744,13 +3744,13 @@ } }, "node_modules/@opentelemetry/instrumentation-undici": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.29.0.tgz", - "integrity": "sha512-SnA+0XgGc595jtnwFVfWy7Vgfr5hle4D5YKIlm0U4z8aK9YoCZVUn1xAkVZ2evaJyykiDF50FBzr1XZ0uj8CPA==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.33.0.tgz", + "integrity": "sha512-eR4Y9kApgnKmiIoygMtyfABTL4bwAUlt00/Nxkkr5FSC28kcM6MxzTp5mNw+KD1XcVt6dBj3Sz5aoekbTqY9GQ==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.219.0", + "@opentelemetry/core": "^2.9.0", + "@opentelemetry/instrumentation": "^0.223.0", "@opentelemetry/semantic-conventions": "^1.24.0" }, "engines": { @@ -4186,25 +4186,22 @@ } }, "node_modules/@redis/bloom": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-6.1.0.tgz", - "integrity": "sha512-Rzascjd9J9bJsM45T/Z9CTg1QY/B63B6YO8QorLVMeXnbBDsKiSCVR/+GQ061hYPk8FpTzWmPY8tAv2sT+JEtQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-6.3.1.tgz", + "integrity": "sha512-dpF9j2yJDoPzSCaZn0MSB3xzmnXQVJeTSAWJcQVcgbmluwhpFeemmII0cF1t+WYfoVS+shEFq79+MmUItgzJLg==", "license": "MIT", "engines": { "node": ">= 20.0.0" }, "peerDependencies": { - "@redis/client": "^6.1.0" + "@redis/client": "^6.3.1" } }, "node_modules/@redis/client": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-6.1.0.tgz", - "integrity": "sha512-7u1LefkezJF0HESlhO7ZFLEPfyY+NejP3SGv+Z4pGaT3oM5GVVLa0u3f4rDLUrcw+SRo8IlX9Y8JAONeDdg1Ag==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-6.3.1.tgz", + "integrity": "sha512-masbfVKULdoAofwddepZxRhWa4w6zvBHn6TRn90TRPrRkVIlGCur3pFqwWaCbMxtYI9twepkz63e/T/tEH8GjA==", "license": "MIT", - "dependencies": { - "cluster-key-slot": "1.1.2" - }, "engines": { "node": ">= 20.0.0" }, @@ -4222,39 +4219,39 @@ } }, "node_modules/@redis/json": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@redis/json/-/json-6.1.0.tgz", - "integrity": "sha512-/GFjQA6bu5pG9ClCJAI5Xx4bNXe7UTpxBBlIupBNTrn1+nY860apGnYJuaSCDV2BmEbTidpa7O2qa28oxKx+rg==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-6.3.1.tgz", + "integrity": "sha512-fMz4kUwJzEftcU9EMaqsjZcUwzpTQLOYRqhQsAD6uKvZWeamblK13ZhgO5SzVSZVk31jmwLeTRpU5GAl5egfUw==", "license": "MIT", "engines": { "node": ">= 20.0.0" }, "peerDependencies": { - "@redis/client": "^6.1.0" + "@redis/client": "^6.3.1" } }, "node_modules/@redis/search": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@redis/search/-/search-6.1.0.tgz", - "integrity": "sha512-kS5agg+3yZbrdrt8omrew7FLCD8eOm7tarG1CROekPBRe+QGDR9aOpnHIQaYsYi6wPRTH70nQiF06AIjgURefQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-6.3.1.tgz", + "integrity": "sha512-T67pvPUpW82VrZLvihO8O2DFMC7eY2oMAzMzapCbiPZn7mdWqHMEIlohYim12gIawT5kn6qT/Cvmm4WulKB+kQ==", "license": "MIT", "engines": { "node": ">= 20.0.0" }, "peerDependencies": { - "@redis/client": "^6.1.0" + "@redis/client": "^6.3.1" } }, "node_modules/@redis/time-series": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-6.1.0.tgz", - "integrity": "sha512-uIDBtV8MmG/xpJsRqbGSO4iX6ryj37MLMP82lRpFvI7ykAVe5GyqgxigEbU+uZNv9kDPNMKw3dvI/S/J1BNBzA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-6.3.1.tgz", + "integrity": "sha512-MNDgrm+i63M/1a+XA+HcDsScwt4uBh/fGGJ84swTQZTFK5K5wMmxdlTRa4ZgmNJzjxMaszW/ipPScMUGV3aAMg==", "license": "MIT", "engines": { "node": ">= 20.0.0" }, "peerDependencies": { - "@redis/client": "^6.1.0" + "@redis/client": "^6.3.1" } }, "node_modules/@rolldown/binding-android-arm64": { @@ -5328,9 +5325,9 @@ } }, "node_modules/@sap/cds": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-10.1.0.tgz", - "integrity": "sha512-Eg8UwRcZ0iJp8JpYad6sFnlI2ByPzmSNWFlexyeo2I2XvsumLFc+NFsPOS45TPRrj8eRfoKgjaI+MyKcRk1AxQ==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-10.2.2.tgz", + "integrity": "sha512-HO5Uk4wZedf7lEdMQyd9Cxa7Wny8NLDUp/WDwr5rKU6Byi2vu0kbAoLM8oREIVhj11DwQn9j+lSaBJNTCTAoEQ==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@sap/cds-compiler": "^7", @@ -5343,7 +5340,7 @@ "cds-serve": "bin/serve.js" }, "engines": { - "node": ">=22" + "node": ">=22.12" }, "peerDependencies": { "@eslint/js": "^9 || ^10", @@ -5370,15 +5367,16 @@ } }, "node_modules/@sap/cds-dk": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-10.1.1.tgz", - "integrity": "sha512-1CMWTwBdWOIs+vRZUiDUo+boxCZ4OJf/oaDdXzeoHNgYbZhJhqpGlveO3ZQy2IbSS7/wDIiWlc+tK5x0ddrmLg==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-10.2.0.tgz", + "integrity": "sha512-ZFbl6ItNLvRPzxu+7j/mgCoXMFQAQVhyRUWIVSrCDn1VwN/9rz7B47e9Uz+UVliXwG35nIkYa1HJOxLp4Yawow==", "bundleDependencies": [ "@cap-js/asyncapi", "@cap-js/db-service", "@cap-js/openapi", "@cap-js/sqlite", "@eslint/js", + "@isaacs/fs-minipass", "@sap/cds", "@sap/cds-compiler", "@sap/cds-fiori", @@ -5394,6 +5392,7 @@ "bytes", "call-bind-apply-helpers", "call-bound", + "chownr", "clone", "content-disposition", "content-type", @@ -5440,6 +5439,8 @@ "mime-db", "mime-types", "minimist", + "minipass", + "minizlib", "ms", "mustache", "negotiator", @@ -5469,6 +5470,7 @@ "side-channel-weakmap", "source-map", "statuses", + "tar", "to-regex-range", "toidentifier", "type-is", @@ -5480,6 +5482,7 @@ "wrappy", "ws", "xml-js", + "yallist", "yaml" ], "license": "SEE LICENSE IN LICENSE", @@ -5488,6 +5491,7 @@ "@cap-js/db-service": "*", "@cap-js/openapi": "^1.0.0", "@cap-js/sqlite": "^3", + "@isaacs/fs-minipass": "*", "@sap/cds": "^10", "@sap/cds-compiler": "*", "@sap/cds-fiori": "*", @@ -5503,6 +5507,7 @@ "bytes": "*", "call-bind-apply-helpers": "*", "call-bound": "*", + "chownr": "*", "clone": "*", "content-disposition": "*", "content-type": "*", @@ -5549,6 +5554,8 @@ "mime-db": "*", "mime-types": "*", "minimist": "*", + "minipass": "*", + "minizlib": "*", "ms": "*", "mustache": "^4.0.1", "negotiator": "*", @@ -5578,6 +5585,7 @@ "side-channel-weakmap": "*", "source-map": "*", "statuses": "*", + "tar": "*", "to-regex-range": "*", "toidentifier": "*", "type-is": "*", @@ -5589,6 +5597,7 @@ "wrappy": "*", "ws": "^8.4.2", "xml-js": "^1.6.11", + "yallist": "*", "yaml": "^2" }, "bin": { @@ -5609,7 +5618,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@cap-js/db-service": { - "version": "3.1.0", + "version": "3.1.2", "inBundle": true, "license": "Apache-2.0", "peerDependencies": { @@ -5623,7 +5632,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@cap-js/openapi": { - "version": "1.6.0", + "version": "1.7.0", "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -5634,11 +5643,11 @@ } }, "node_modules/@sap/cds-dk/node_modules/@cap-js/sqlite": { - "version": "3.1.0", + "version": "3.1.2", "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@cap-js/db-service": "^3.1.0" + "@cap-js/db-service": "^3.1.2" }, "peerDependencies": { "@sap/cds": "^10", @@ -5673,8 +5682,19 @@ } } }, + "node_modules/@sap/cds-dk/node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@sap/cds-dk/node_modules/@sap/cds": { - "version": "10.1.0", + "version": "10.2.1", "inBundle": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { @@ -5688,7 +5708,7 @@ "cds-serve": "bin/serve.js" }, "engines": { - "node": ">=22" + "node": ">=22.12" }, "peerDependencies": { "@eslint/js": "^9 || ^10", @@ -5701,7 +5721,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/cds-compiler": { - "version": "7.1.1", + "version": "7.2.1", "inBundle": true, "license": "SEE LICENSE IN LICENSE", "bin": { @@ -5722,11 +5742,12 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/cds-mtxs": { - "version": "4.1.0", + "version": "4.2.0", "inBundle": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@sap/hdi-deploy": "^5" + "@sap/hdi-deploy": "^5", + "tar": "^7" }, "bin": { "cds-mtx": "bin/cds-mtx.js", @@ -5848,18 +5869,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/@sap/cds-dk/node_modules/body-parser/node_modules/content-type": { - "version": "2.1.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/@sap/cds-dk/node_modules/braces": { "version": "3.0.3", "inBundle": true, @@ -5906,6 +5915,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@sap/cds-dk/node_modules/chownr": { + "version": "3.0.0", + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/@sap/cds-dk/node_modules/clone": { "version": "2.1.2", "inBundle": true, @@ -5915,7 +5932,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/content-disposition": { - "version": "1.1.0", + "version": "2.0.1", "inBundle": true, "license": "MIT", "engines": { @@ -5927,11 +5944,15 @@ } }, "node_modules/@sap/cds-dk/node_modules/content-type": { - "version": "1.0.5", + "version": "2.1.0", "inBundle": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/@sap/cds-dk/node_modules/cookie": { @@ -6057,14 +6078,14 @@ } }, "node_modules/@sap/cds-dk/node_modules/express": { - "version": "5.2.1", + "version": "5.3.0", "inBundle": true, "license": "MIT", "dependencies": { "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", + "body-parser": "^2.3.0", + "content-disposition": "^2.0.1", + "content-type": "^2.0.0", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", @@ -6080,14 +6101,14 @@ "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", + "proxy-addr": "^2.0.8", + "qs": "^6.16.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", - "type-is": "^2.0.1", + "type-is": "^2.1.0", "vary": "^1.1.2" }, "engines": { @@ -6208,11 +6229,11 @@ } }, "node_modules/@sap/cds-dk/node_modules/handlebars": { - "version": "4.7.9", + "version": "4.7.10", "inBundle": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.5", + "minimist": "^1.2.8", "neo-async": "^2.6.2", "source-map": "^0.6.1", "wordwrap": "^1.0.0" @@ -6250,7 +6271,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/hdb": { - "version": "2.29.6", + "version": "2.30.1", "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -6339,7 +6360,7 @@ "license": "MIT" }, "node_modules/@sap/cds-dk/node_modules/livereload-js": { - "version": "4.0.2", + "version": "4.0.3", "inBundle": true, "license": "MIT" }, @@ -6433,6 +6454,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@sap/cds-dk/node_modules/minipass": { + "version": "7.1.3", + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@sap/cds-dk/node_modules/minizlib": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/@sap/cds-dk/node_modules/ms": { "version": "2.1.3", "inBundle": true, @@ -6461,18 +6501,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/@sap/cds-dk/node_modules/negotiator/node_modules/content-type": { - "version": "2.1.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/@sap/cds-dk/node_modules/neo-async": { "version": "2.6.2", "inBundle": true, @@ -6545,7 +6573,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/proxy-addr": { - "version": "2.0.7", + "version": "2.0.8", "inBundle": true, "license": "MIT", "dependencies": { @@ -6554,10 +6582,14 @@ }, "engines": { "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/@sap/cds-dk/node_modules/qs": { - "version": "6.16.0", + "version": "6.16.1", "inBundle": true, "license": "BSD-3-Clause", "dependencies": { @@ -6768,6 +6800,21 @@ "node": ">= 0.8" } }, + "node_modules/@sap/cds-dk/node_modules/tar": { + "version": "7.5.22", + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@sap/cds-dk/node_modules/to-regex-range": { "version": "5.0.1", "inBundle": true, @@ -6804,18 +6851,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/@sap/cds-dk/node_modules/type-is/node_modules/content-type": { - "version": "2.1.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/@sap/cds-dk/node_modules/uglify-js": { "version": "3.19.3", "inBundle": true, @@ -6867,7 +6902,7 @@ "license": "ISC" }, "node_modules/@sap/cds-dk/node_modules/ws": { - "version": "8.21.3", + "version": "8.22.0", "inBundle": true, "license": "MIT", "engines": { @@ -6897,8 +6932,16 @@ "xml-js": "bin/cli.js" } }, + "node_modules/@sap/cds-dk/node_modules/yallist": { + "version": "5.0.0", + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/@sap/cds-dk/node_modules/yaml": { - "version": "2.9.0", + "version": "2.9.1", "inBundle": true, "license": "ISC", "bin": { @@ -12513,18 +12556,20 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "2.2.2", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.4.0.tgz", + "integrity": "sha512-Ifk1KcLrxaGt1occQagQNFNNOqRt1LFuehEnHHzB8Z6cRgIxRU1TBaiIsUiCdA+gy5PL7Y1IX31DNKkRmxtXjQ==", "license": "MIT", "dependencies": { "bytes": "^3.1.2", - "content-type": "^1.0.5", + "content-type": "^2.1.0", "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", + "http-errors": "^2.0.1", + "iconv-lite": "^0.7.3", "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" + "qs": "^6.16.1", + "raw-body": "^3.0.2", + "type-is": "^2.1.0" }, "engines": { "node": ">=18" @@ -12534,6 +12579,35 @@ "url": "https://opencollective.com/express" } }, + "node_modules/body-parser/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.17.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.17.1.tgz", + "integrity": "sha512-jd3COkaKVgGUW+ZHyEHCG9bH7RoaaiWuMgzsIBjUMVjLAaWGWpoUAVwljVvBHxRu/2qEHnadLGZrkutYUBPQJA==", + "license": "BSD-3-Clause", + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/boolbase": { "version": "1.0.0", "license": "ISC" @@ -12981,9 +13055,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.3.0.tgz", + "integrity": "sha512-lmNyBzi6iYiqyrExTctfmjd8tInx+dHu9PBomTfH5RXS53c27JMFJgzNv5TyAnm3PgGf+MLy0+Ws41/HlVxdKQ==", "license": "MIT" }, "node_modules/cli-cursor": { @@ -13064,15 +13138,6 @@ "readable-stream": "^2.3.5" } }, - "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color": { "version": "5.0.3", "license": "MIT", @@ -13358,7 +13423,9 @@ } }, "node_modules/content-disposition": { - "version": "1.1.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-2.0.1.tgz", + "integrity": "sha512-e+H0ZXHSWYrENhQzw1LPuP4oF5MzVKmDU6d3hxlvaPEYLLg62MxtQNPRx4SYSuYJSBUgnQIG4HIN2tEtNv7Dog==", "license": "MIT", "engines": { "node": ">=18" @@ -14583,18 +14650,22 @@ } }, "node_modules/engine.io-client": { - "version": "6.6.4", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.7.tgz", + "integrity": "sha512-GyAvmPA7gnRCpDQbYACAy79Lg4ewevrmaPzySZz0OVvgyZc3gEfLLqPTYk8wVBScjOEpM9ZO4KryyFpVItjGEA==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1", "engine.io-parser": "~5.2.1", - "ws": "~8.18.3", + "ws": "~8.21.0", "xmlhttprequest-ssl": "~2.1.1" } }, "node_modules/engine.io-client/node_modules/ws": { - "version": "8.18.3", + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -14698,6 +14769,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.0.tgz", "integrity": "sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==", + "dev": true, "license": "MIT" }, "node_modules/es-object-atoms": { @@ -15056,13 +15128,15 @@ } }, "node_modules/express": { - "version": "5.2.1", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.3.0.tgz", + "integrity": "sha512-qCqy1xSoaugxOD4IVHb1ZWdkvCF2W3aE2okKouWj8VwJ+ztskSiXoBnCSJqfKT+cVPJhuJqe9YLbY425+Zh00g==", "license": "MIT", "dependencies": { "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", + "body-parser": "^2.3.0", + "content-disposition": "^2.0.1", + "content-type": "^2.0.0", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", @@ -15078,14 +15152,14 @@ "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", + "proxy-addr": "^2.0.8", + "qs": "^6.16.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", - "type-is": "^2.0.1", + "type-is": "^2.1.0", "vary": "^1.1.2" }, "engines": { @@ -15097,9 +15171,9 @@ } }, "node_modules/express-rate-limit": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.7.0.tgz", - "integrity": "sha512-hOwV7WOxXfjRpAM1DSJWZDXx3GhplwD8IfwuwvogD8i1Qnkgosw/H45s4ZnFAUHDAhPjlY9hLBvJhKmGMyY26g==", + "version": "8.7.2", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.7.2.tgz", + "integrity": "sha512-U1ScocxDD9WI09LaBVypvNkOtNR5yWAmZLkuKJdAzIchA4YKFYF6GT5IKER7epG58oXtjvGlV0/6ii0F83EyZg==", "license": "MIT", "dependencies": { "debug": "^4.4.3", @@ -15115,6 +15189,19 @@ "express": ">= 4.11" } }, + "node_modules/express/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/express/node_modules/fresh": { "version": "2.0.0", "license": "MIT", @@ -15136,6 +15223,22 @@ "url": "https://opencollective.com/express" } }, + "node_modules/express/node_modules/qs": { + "version": "6.17.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.17.1.tgz", + "integrity": "sha512-jd3COkaKVgGUW+ZHyEHCG9bH7RoaaiWuMgzsIBjUMVjLAaWGWpoUAVwljVvBHxRu/2qEHnadLGZrkutYUBPQJA==", + "license": "BSD-3-Clause", + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/extend-shallow": { "version": "2.0.1", "license": "MIT", @@ -15969,9 +16072,9 @@ } }, "node_modules/hdb": { - "version": "2.29.6", - "resolved": "https://registry.npmjs.org/hdb/-/hdb-2.29.6.tgz", - "integrity": "sha512-I9AQxpTn6OKm66rzzNWbJeKnxn1ylJinzSsq0J1O0HOwxv3VNuwQttKem2/DG/Sv/yRIU20dBiqZTqXjqs6Eog==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/hdb/-/hdb-2.30.1.tgz", + "integrity": "sha512-2DtLQmPv39HFMtUk315aRaNCJHci/Y62Uitr5/Me8373CYFnoz9BlssMd46mrzHXSK0cA5m/nW6sTrO2KF357w==", "license": "Apache-2.0", "dependencies": { "iconv-lite": "0.7.0" @@ -15998,9 +16101,9 @@ } }, "node_modules/hono": { - "version": "4.13.7", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.7.tgz", - "integrity": "sha512-c8/gF9ac8Y78/agExVocyLevgR+JlpNB444Py0FSX8pJoPdYUfUzRcXtYEYGwt6l19qIlVZPN5Mfsw9jFShmQQ==", + "version": "4.13.14", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.14.tgz", + "integrity": "sha512-yhRLQ21U6qa9Hsu2N7Qcbh8tE+WKEcoErjIo56LeSGiGXGp9sA7UpE86Ui9uexb61KakiGwuHMn2QdV7w6i6kQ==", "license": "MIT", "engines": { "node": ">=16.9.0" @@ -16138,7 +16241,9 @@ } }, "node_modules/iconv-lite": { - "version": "0.7.2", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", + "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -16193,19 +16298,25 @@ "license": "MIT" }, "node_modules/import-in-the-middle": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.3.0.tgz", - "integrity": "sha512-v4+k+PLt4z6g2ydEcXhfinTJxfgKJDWOW0v0GZNA5n2qToHFObpH4nGLhJdwnXnX4T14oREx/M62dS9GkpmSbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.5.3.tgz", + "integrity": "sha512-usm/IiY63VtOyx/dm7uEoZV+EsanCDmwRUroQZIkFLGu1NVXZ8mZqIOhaN4QIJ7EsbMTuQbJXwCySCx+ozMA8g==", "license": "Apache-2.0", "dependencies": { "cjs-module-lexer": "^2.2.0", - "es-module-lexer": "^2.2.0", + "es-module-lexer": "^3.0.3", "module-details-from-path": "^1.0.4" }, "engines": { "node": ">=18" } }, + "node_modules/import-in-the-middle/node_modules/es-module-lexer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-3.0.4.tgz", + "integrity": "sha512-BldNY5mwkVu+cQ5Ymn3e6hB9Sx8XHx4ZevWbiUyZbfKxJxYO27Hf0wfzkxIaD5CAJMaGl3YspKELj0ff/7nCMA==", + "license": "MIT" + }, "node_modules/import-meta-resolve": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", @@ -17840,10 +17951,16 @@ "license": "MIT" }, "node_modules/media-typer": { - "version": "1.1.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.1.tgz", + "integrity": "sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==", "license": "MIT", "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/mem-fs": { @@ -19233,7 +19350,9 @@ } }, "node_modules/proxy-addr": { - "version": "2.0.7", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.8.tgz", + "integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==", "license": "MIT", "dependencies": { "forwarded": "0.2.0", @@ -19241,6 +19360,10 @@ }, "engines": { "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/proxy-agent": { @@ -19394,6 +19517,7 @@ }, "node_modules/qs": { "version": "6.15.1", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -19538,16 +19662,16 @@ } }, "node_modules/redis": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/redis/-/redis-6.1.0.tgz", - "integrity": "sha512-0kvUPM8RHP/ZMa0xYaDTcG5e8tIGW6kz6MToVT0V8iOnk6bkXp2jncGRGe2bZEk41lZwiDspUqjZCSk5ohjcKw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/redis/-/redis-6.3.1.tgz", + "integrity": "sha512-mV96ZKxQ4CGn3SyEGaY0Lb9YA443mdVey3c+mdr0NAUaBxiOZGoYCWX8PoM55kictSOmxlJRtZJxIsmZm3jL+w==", "license": "MIT", "dependencies": { - "@redis/bloom": "6.1.0", - "@redis/client": "6.1.0", - "@redis/json": "6.1.0", - "@redis/search": "6.1.0", - "@redis/time-series": "6.1.0" + "@redis/bloom": "6.3.1", + "@redis/client": "6.3.1", + "@redis/json": "6.3.1", + "@redis/search": "6.3.1", + "@redis/time-series": "6.3.1" }, "engines": { "node": ">= 20.0.0" @@ -20330,12 +20454,14 @@ } }, "node_modules/side-channel": { - "version": "1.1.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" }, @@ -20428,11 +20554,12 @@ } }, "node_modules/socket.io": { - "version": "4.8.3", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.4.tgz", + "integrity": "sha512-9ZV9zg8vN8hO3Y25DhR7nUkJ1VDnBhq5O/JrXhFT9s6+F0gqytSASTHVfCFc2mJXaTfARroErplXlzFWwETZqQ==", "license": "MIT", "dependencies": { "accepts": "~1.3.4", - "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.4.1", "engine.io": "~6.6.0", @@ -20471,7 +20598,9 @@ } }, "node_modules/socket.io-client": { - "version": "4.8.3", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.4.tgz", + "integrity": "sha512-7wjKAvVXYOJsbmUgkWbnhPD4bFpkqrUR0++XOjpGFmqDqsqV1CI93VTraeExLxpjxEqrWgFoSRZu1ihjLWfkAA==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", @@ -21224,19 +21353,40 @@ } }, "node_modules/type-is": { - "version": "2.0.1", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", + "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", "license": "MIT", "dependencies": { - "content-type": "^1.0.5", + "content-type": "^2.0.0", "media-typer": "^1.1.0", "mime-types": "^3.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/type-is/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/type-is/node_modules/mime-types": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "license": "MIT", "dependencies": { "mime-db": "^1.54.0" @@ -22609,9 +22759,9 @@ } }, "node_modules/ws": { - "version": "8.21.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", - "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", + "version": "8.22.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.22.1.tgz", + "integrity": "sha512-oyL6OPYme/CmiFvNuGzeoxCJ4nOrZE2O1FwM9MWM1AsGri6nLXB2pg+lNA8aLeXMSav0J6eIVS1j6vUPzUtK9g==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -22686,6 +22836,8 @@ }, "node_modules/xmlhttprequest-ssl": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", + "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", "engines": { "node": ">=0.4.0" } diff --git a/package.json b/package.json index d52d7a231..864400628 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ "@cap-js/cds-test": "^1.0.2", "@lhci/cli": "^0.15.1", "@sap-theming/theming-base-content": "^11.36.4", - "@sap/cds-dk": "^10.1.1", + "@sap/cds-dk": "^10.2.0", "@types/sanitize-html": "2.16.1", "@ui5/webcomponents": "^2.23.2", "@ui5/webcomponents-fiori": "^2.23.2", @@ -192,18 +192,18 @@ "dependencies": { "@aws-sdk/client-s3": "^3.645.0", "@aws-sdk/lib-storage": "^3.645.0", - "@cap-js-community/websocket": "^1.11.1", + "@cap-js-community/websocket": "^1.11.4", "@cap-js/ai": "~1.1.0", "@cap-js/attachments": "4.0.0", "@cap-js/audit-logging": "^1.3.0", - "@cap-js/change-tracking": "^2.2.2", + "@cap-js/change-tracking": "^2.2.3", "@cap-js/data-inspector": "1.0.5", "@cap-js/graphql": "0.14.0", - "@cap-js/hana": "^3.1.0", + "@cap-js/hana": "^3.1.2", "@cap-js/mcp": "1.3.0", - "@cap-js/ord": "^1.9.3", - "@cap-js/sqlite": "^3.1.0", - "@cap-js/telemetry": "^2.0.1", + "@cap-js/ord": "^1.10.2", + "@cap-js/sqlite": "^3.1.2", + "@cap-js/telemetry": "^2.2.0", "@grpc/grpc-js": "^1.14.4", "@opentelemetry/exporter-metrics-otlp-grpc": "^0.222.0", "@opentelemetry/exporter-trace-otlp-grpc": "^0.222.0", @@ -211,7 +211,7 @@ "@sap-ai-sdk/orchestration": "^2.12.0", "@sap-cloud-sdk/connectivity": "^4.7.0", "@sap-tutorials/cds-alert-notification": "^1.0.3", - "@sap/cds": "^10.1.0", + "@sap/cds": "^10.2.0", "@sap/xsenv": "^6.2.1", "@sap/xssec": "^4.13.1", "@socket.io/redis-adapter": "8.3.0", @@ -457,6 +457,9 @@ "hana": { "fuzzy": false }, + "fiori": { + "draft_admin_integrity": true + }, "websocket": { "kind": "socket.io", "adapter": { diff --git a/scripts/parsers/discovery-baseline.json b/scripts/parsers/discovery-baseline.json index 728c999e1..73b9d602e 100644 --- a/scripts/parsers/discovery-baseline.json +++ b/scripts/parsers/discovery-baseline.json @@ -1509,41 +1509,6 @@ "repo": "btp-foundation", "branch": "main" }, - "btp-ea-onboard-01-intro": { - "slug": "btp-ea-onboard-01-intro", - "repo": "btp-onboarding", - "branch": "main" - }, - "btp-ea-onboard-02-ga": { - "slug": "btp-ea-onboard-02-ga", - "repo": "btp-onboarding", - "branch": "main" - }, - "btp-ea-onboard-03-subb": { - "slug": "btp-ea-onboard-03-subb", - "repo": "btp-onboarding", - "branch": "main" - }, - "btp-ea-onboard-04-subm": { - "slug": "btp-ea-onboard-04-subm", - "repo": "btp-onboarding", - "branch": "main" - }, - "btp-ea-onboard-05-abapb": { - "slug": "btp-ea-onboard-05-abapb", - "repo": "btp-onboarding", - "branch": "main" - }, - "btp-ea-onboard-06-abapm": { - "slug": "btp-ea-onboard-06-abapm", - "repo": "btp-onboarding", - "branch": "main" - }, - "btp-ea-onboard-07-cli": { - "slug": "btp-ea-onboard-07-cli", - "repo": "btp-onboarding", - "branch": "main" - }, "btp-free-tier-account": { "slug": "btp-free-tier-account", "repo": "btp-adai", diff --git a/srv-qa/package-lock.json b/srv-qa/package-lock.json index 0fad35a68..06294e2bf 100644 --- a/srv-qa/package-lock.json +++ b/srv-qa/package-lock.json @@ -1,3689 +1,3722 @@ -{ - "name": "tutorials-srv-qa", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "tutorials-srv-qa", - "version": "1.0.0", - "dependencies": { - "@cap-js/hana": "^3.1.0", - "@sap-ai-sdk/foundation-models": "^2.12.0", - "@sap/cds": "^10.1.0", - "@sap/xsenv": "^6.2.1", - "@sap/xssec": "^4.13.1", - "cheerio": "^1.2.0", - "express": "^5", - "hugo-extended": "0.147.8", - "jose": "6.2.3", - "markdown-it": "^14.3.0", - "undici": "8.9.0" - }, - "engines": { - "node": ">=22.23.4 <23" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@cap-js/db-service": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-3.1.0.tgz", - "integrity": "sha512-CabYQlrT8O2n8aWnvjBhk94KlkpwowUzqnxwJFtokEBiHIVemu1+Kfvoo1djwpX6MB/4TV2j3xQf0DnLiLMUeA==", - "license": "Apache-2.0", - "peerDependencies": { - "@sap/cds": "^10", - "generic-pool": "^3.9.0" - }, - "peerDependenciesMeta": { - "generic-pool": { - "optional": true - } - } - }, - "node_modules/@cap-js/hana": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-3.1.0.tgz", - "integrity": "sha512-tq9O7QqXQTLtdrBsnKap45P+5gDP9/CwL7NJ4L75fJPqUlVmxv4EA0Ax+k9k6Z2lN3IUY4QlsAJumji/Bfw7Ag==", - "license": "Apache-2.0", - "dependencies": { - "@cap-js/db-service": "^3.1.0", - "hdb": "^2.29.6" - }, - "peerDependencies": { - "@sap/cds": "^10", - "@sap/hana-client": "^2" - }, - "peerDependenciesMeta": { - "@sap/hana-client": { - "optional": true - } - } - }, - "node_modules/@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.8.tgz", - "integrity": "sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==", - "license": "MIT", - "dependencies": { - "@so-ric/colorspace": "^1.1.6", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "node_modules/@eslint/js": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", - "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", - "license": "MIT", - "peer": true, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "eslint": "^10.0.0" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/@sap-ai-sdk/ai-api": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@sap-ai-sdk/ai-api/-/ai-api-2.13.0.tgz", - "integrity": "sha512-yYmk19ww2cZnYZCA5UGSWGKlpB2RnyDgxjNvi43ZwYHRm5ejWuM8m4gU/qj+FIwmhnDHp6BG2ClWfLTH/hOoJw==", - "license": "Apache-2.0", - "dependencies": { - "@sap-ai-sdk/core": "^2.13.0", - "@sap-cloud-sdk/connectivity": "^4.7.0", - "@sap-cloud-sdk/util": "^4.7.0" - } - }, - "node_modules/@sap-ai-sdk/core": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@sap-ai-sdk/core/-/core-2.13.0.tgz", - "integrity": "sha512-tGx/XJxGsdEBQknwIpZc5/gpxDUmRwP3E68WgoI6/oj39+YecgWYynGnG6XIr+MTGo23RwXFEw518q9HuPWk/Q==", - "license": "Apache-2.0", - "dependencies": { - "@sap-cloud-sdk/connectivity": "^4.7.0", - "@sap-cloud-sdk/http-client": "^4.7.0", - "@sap-cloud-sdk/openapi": "^4.7.0", - "@sap-cloud-sdk/util": "^4.7.0" - } - }, - "node_modules/@sap-ai-sdk/foundation-models": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@sap-ai-sdk/foundation-models/-/foundation-models-2.13.0.tgz", - "integrity": "sha512-lPT2fWXkKSN+lsUAGy6H3gTgkWbjb8uT7ccfxCuQyx1Fjmts+1pBSvOxFyWYqvMglF58gO0i1HKwdkLsG2b+Cg==", - "license": "Apache-2.0", - "dependencies": { - "@sap-ai-sdk/ai-api": "^2.13.0", - "@sap-ai-sdk/core": "^2.13.0", - "@sap-cloud-sdk/connectivity": "^4.7.0", - "@sap-cloud-sdk/http-client": "^4.7.0", - "@sap-cloud-sdk/util": "^4.7.0" - } - }, - "node_modules/@sap-cloud-sdk/connectivity": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/connectivity/-/connectivity-4.8.0.tgz", - "integrity": "sha512-y8H0AKgDecm7+A8wxx+J1oxJTzYEs+4Hy7ghfrBD57e9MdRRFI5FryYqokZbDcMjEnsbvZ+giShm/A2UXmeHyg==", - "license": "Apache-2.0", - "dependencies": { - "@sap-cloud-sdk/resilience": "^4.8.0", - "@sap-cloud-sdk/util": "^4.8.0", - "@sap/xsenv": "^6.2.0", - "@sap/xssec": "^4.13.0", - "async-retry": "^1.3.3", - "axios": "^1.15.0", - "jks-js": "^1.1.6", - "jsonwebtoken": "^9.0.3", - "safe-stable-stringify": "^2.5.0" - } - }, - "node_modules/@sap-cloud-sdk/http-client": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/http-client/-/http-client-4.8.0.tgz", - "integrity": "sha512-ruQd7d0nObshm0fNkhUE1fp1qxevEYxblhM/X0rG1goN9r4nQiT6LgZUG5s+QeR1R2LdIHBXtsIycBfz/4kOog==", - "license": "Apache-2.0", - "dependencies": { - "@sap-cloud-sdk/connectivity": "^4.8.0", - "@sap-cloud-sdk/resilience": "^4.8.0", - "@sap-cloud-sdk/util": "^4.8.0", - "axios": "^1.15.0" - } - }, - "node_modules/@sap-cloud-sdk/openapi": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/openapi/-/openapi-4.8.0.tgz", - "integrity": "sha512-AuCK7hFXhbLh58zh27ILdAGHLWbFd/9DqNGsVgNXxMWGy55D/8JsWqkmn6TAwRTnYtKMmb8WeoUtC/Cmq2Vvqw==", - "license": "Apache-2.0", - "dependencies": { - "@sap-cloud-sdk/connectivity": "^4.8.0", - "@sap-cloud-sdk/http-client": "^4.8.0", - "@sap-cloud-sdk/resilience": "^4.8.0", - "@sap-cloud-sdk/util": "^4.8.0", - "axios": "^1.15.0" - } - }, - "node_modules/@sap-cloud-sdk/resilience": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/resilience/-/resilience-4.8.0.tgz", - "integrity": "sha512-/XclOtUHhdN39acKH1otJdMILAm+HJkQ6wjpUvqBx7RNiQ1GQwe34qSqy8wGDJr5MbcxuhENYGWJRLE4P4OHqw==", - "license": "Apache-2.0", - "dependencies": { - "@sap-cloud-sdk/util": "^4.8.0", - "async-retry": "^1.3.3", - "axios": "^1.15.0", - "opossum": "^10.0.0" - } - }, - "node_modules/@sap-cloud-sdk/util": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/util/-/util-4.8.0.tgz", - "integrity": "sha512-wLWxgxYwAL1N5dh+m8XGZTZ2vzooDHXKXrkay3rBpYSFHhZjsD2V37ezbAhbBKlFIELZA03C+Eb9o4YgHpvTKg==", - "license": "Apache-2.0", - "dependencies": { - "axios": "^1.15.0", - "logform": "^2.7.0", - "voca": "^1.4.1", - "winston": "^3.19.0", - "winston-transport": "^4.9.0" - } - }, - "node_modules/@sap/cds": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-10.1.0.tgz", - "integrity": "sha512-Eg8UwRcZ0iJp8JpYad6sFnlI2ByPzmSNWFlexyeo2I2XvsumLFc+NFsPOS45TPRrj8eRfoKgjaI+MyKcRk1AxQ==", - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@sap/cds-compiler": "^7", - "@sap/cds-fiori": "^2", - "express": "^4.22.1 || ^5", - "yaml": "^2" - }, - "bin": { - "cds-deploy": "bin/deploy.js", - "cds-serve": "bin/serve.js" - }, - "engines": { - "node": ">=22" - }, - "peerDependencies": { - "@eslint/js": "^9 || ^10", - "tar": "^7.5.6" - }, - "peerDependenciesMeta": { - "tar": { - "optional": true - } - } - }, - "node_modules/@sap/cds-compiler": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-7.1.1.tgz", - "integrity": "sha512-ep7rzRJgZtDBs9vVcXyxLVy/q4p+K+a1Q+yq1qn1mb7dYHyH7m88K+Pn761Ofnf7HXXbTo/FKpM1z/kPTbwy3w==", - "license": "SEE LICENSE IN LICENSE", - "bin": { - "cdsc": "bin/cdsc.js", - "cdshi": "bin/cdshi.js", - "cdsse": "bin/cdsse.js" - }, - "engines": { - "node": ">=22" - } - }, - "node_modules/@sap/cds-fiori": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-2.3.0.tgz", - "integrity": "sha512-6oWov+DSpFrSTgxXR0dZhak6aZ/IVRZvaHERMi0EgSTzIJdlvZlpw3Kf18ePMcTrRrtEXwD4RIjKt8pbs0g2Hg==", - "license": "SEE LICENSE IN LICENSE", - "peerDependencies": { - "@sap/cds": ">=8" - } - }, - "node_modules/@sap/xsenv": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@sap/xsenv/-/xsenv-6.2.1.tgz", - "integrity": "sha512-R1p7VdD3N3jvdkL8av4vLqF+cTQihTz9mCqqF+oa9rVZvgLaCb4ODyZ1dln5/fBgg1OSuch0ESxu3AqZrXVknw==", - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "debug": "4.4.3", - "node-cache": "^5.1.2", - "verror": "1.10.1" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - } - }, - "node_modules/@sap/xssec": { - "version": "4.13.3", - "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-4.13.3.tgz", - "integrity": "sha512-op5wFTpJGJFdwFcEFRDX30yKbB2Kknk+LJqXDcrHyPNLqvSqerTWXFdFnylhiIhoAdGFSccC6NimUhqFxIrUsA==", - "license": "SAP DEVELOPER LICENSE AGREEMENT", - "dependencies": { - "debug": "^4.4.3", - "jwt-decode": "^4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sindresorhus/is": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", - "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@so-ric/colorspace": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@so-ric/colorspace/-/colorspace-1.1.6.tgz", - "integrity": "sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==", - "license": "MIT", - "dependencies": { - "color": "^5.0.2", - "text-hex": "1.0.x" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.1" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", - "license": "MIT" - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "license": "MIT" - }, - "node_modules/@types/triple-beam": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", - "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", - "license": "MIT" - }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "license": "MIT", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "license": "MIT" - }, - "node_modules/async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "license": "MIT", - "dependencies": { - "retry": "0.13.1" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axios": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.1.tgz", - "integrity": "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.16.0", - "form-data": "^4.0.5", - "https-proxy-agent": "^5.0.1", - "proxy-from-env": "^2.1.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "license": "MIT", - "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/body-parser": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz", - "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^2.0.0", - "debug": "^4.4.3", - "http-errors": "^2.0.1", - "iconv-lite": "^0.7.2", - "on-finished": "^2.4.1", - "qs": "^6.15.2", - "raw-body": "^3.0.2", - "type-is": "^2.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/body-parser/node_modules/content-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", - "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", - "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "license": "MIT", - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "license": "MIT" - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "license": "BSD-3-Clause" - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", - "license": "MIT" - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", - "license": "MIT", - "engines": { - "node": ">=14.16" - } - }, - "node_modules/cacheable-request": { - "version": "10.2.14", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", - "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", - "license": "MIT", - "dependencies": { - "@types/http-cache-semantics": "^4.0.2", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.3", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/call-bind": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", - "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", - "license": "MIT", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/careful-downloader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/careful-downloader/-/careful-downloader-3.0.0.tgz", - "integrity": "sha512-5KMIPa0Yoj+2tY6OK9ewdwcPebp+4XS0dMYvvF9/8fkFEfvnEpWmHWYs9JNcZ7RZUvY/v6oPzLpmmTzSIbroSA==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "decompress": "^4.2.1", - "fs-extra": "^11.1.1", - "got": "^12.6.0", - "is-path-inside": "^4.0.0", - "tempy": "^3.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cheerio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", - "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", - "license": "MIT", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "encoding-sniffer": "^0.2.1", - "htmlparser2": "^10.1.0", - "parse5": "^7.3.0", - "parse5-htmlparser2-tree-adapter": "^7.1.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^7.19.0", - "whatwg-mimetype": "^4.0.0" - }, - "engines": { - "node": ">=20.18.1" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cheerio/node_modules/undici": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz", - "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==", - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/color": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz", - "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", - "license": "MIT", - "dependencies": { - "color-convert": "^3.1.3", - "color-string": "^2.1.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/color-convert": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz", - "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", - "license": "MIT", - "dependencies": { - "color-name": "^2.0.0" - }, - "engines": { - "node": ">=14.6" - } - }, - "node_modules/color-name": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.1.tgz", - "integrity": "sha512-p2FdgwVx1a9yWBHP2wI0VgShkDpgN4kZISkxdNipGBJWpa5G6b04OINlVWCyJj0JmfvcPrgqt95E9k8yvaOJFg==", - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/color-string": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", - "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", - "license": "MIT", - "dependencies": { - "color-name": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, - "node_modules/content-disposition": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", - "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", - "license": "MIT", - "dependencies": { - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", - "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", - "license": "MIT", - "dependencies": { - "decompress-tar": "^4.0.0", - "decompress-tarbz2": "^4.0.0", - "decompress-targz": "^4.0.0", - "decompress-unzip": "^4.0.1", - "graceful-fs": "^4.1.10", - "make-dir": "^1.0.0", - "pify": "^2.3.0", - "strip-dirs": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-tar": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", - "license": "MIT", - "dependencies": { - "file-type": "^5.2.0", - "is-stream": "^1.1.0", - "tar-stream": "^1.5.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-tarbz2": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", - "license": "MIT", - "dependencies": { - "decompress-tar": "^4.1.0", - "file-type": "^6.1.0", - "is-stream": "^1.1.0", - "seek-bzip": "^1.0.5", - "unbzip2-stream": "^1.0.9" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-tarbz2/node_modules/file-type": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-targz": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", - "license": "MIT", - "dependencies": { - "decompress-tar": "^4.1.1", - "file-type": "^5.2.0", - "is-stream": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-unzip": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", - "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", - "license": "MIT", - "dependencies": { - "file-type": "^3.8.0", - "get-stream": "^2.2.0", - "pify": "^2.3.0", - "yauzl": "^2.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-unzip/node_modules/file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding-sniffer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", - "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" - }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", - "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/extsprintf": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", - "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "license": "MIT", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "license": "MIT" - }, - "node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "license": "MIT", - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", - "license": "MIT" - }, - "node_modules/follow-redirects": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", - "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/form-data": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", - "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.4", - "mime-types": "^2.1.35" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data-encoder": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", - "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", - "license": "MIT", - "engines": { - "node": ">= 14.17" - } - }, - "node_modules/form-data/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/form-data/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "license": "MIT" - }, - "node_modules/fs-extra": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz", - "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", - "license": "MIT", - "dependencies": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", - "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", - "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hdb": { - "version": "2.29.6", - "resolved": "https://registry.npmjs.org/hdb/-/hdb-2.29.6.tgz", - "integrity": "sha512-I9AQxpTn6OKm66rzzNWbJeKnxn1ylJinzSsq0J1O0HOwxv3VNuwQttKem2/DG/Sv/yRIU20dBiqZTqXjqs6Eog==", - "license": "Apache-2.0", - "dependencies": { - "iconv-lite": "0.7.0" - }, - "engines": { - "node": ">= 18" - }, - "optionalDependencies": { - "lz4-wasm-nodejs": "0.9.2" - } - }, - "node_modules/hdb/node_modules/iconv-lite": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", - "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/htmlparser2": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", - "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "entities": "^7.0.1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", - "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "license": "BSD-2-Clause" - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/http2-wrapper": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", - "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", - "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hugo-extended": { - "version": "0.147.8", - "resolved": "https://registry.npmjs.org/hugo-extended/-/hugo-extended-0.147.8.tgz", - "integrity": "sha512-QCZ0S+CtS2W0wKTDL/d2vEmjt7RPjSt9GteFHcBu1YjG4cXrvSAIWmJYe1BlE8TxhABogc1PAouAPHVrH0oFcQ==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "careful-downloader": "^3.0.0", - "log-symbols": "^5.1.0", - "read-pkg-up": "^9.1.0" - }, - "bin": { - "hugo": "lib/cli.js", - "hugo-extended": "lib/cli.js" - }, - "engines": { - "node": ">=18.12" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "license": "MIT" - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", - "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-natural-number": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", - "license": "MIT" - }, - "node_modules/is-path-inside": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", - "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/jks-js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/jks-js/-/jks-js-1.1.7.tgz", - "integrity": "sha512-BeiDRKsAi1NwEwgx2JB/9/0tar5BNGIv+foGm1G5GgiyR35s/iUnfd/BWqYd16mLDD8qTaAVBrIcOOuVqXJZNQ==", - "license": "MIT", - "dependencies": { - "node-forge": "^1.4.0", - "node-int64": "^0.4.0", - "node-rsa": "^1.1.1" - } - }, - "node_modules/jose": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz", - "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", - "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", - "license": "MIT", - "dependencies": { - "jws": "^4.0.1", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jwa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", - "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", - "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", - "license": "MIT", - "dependencies": { - "jwa": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jwt-decode": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", - "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", - "license": "MIT" - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "license": "MIT" - }, - "node_modules/linkify-it": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz", - "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/markdown-it" - } - ], - "license": "MIT", - "dependencies": { - "uc.micro": "^2.0.0" - } - }, - "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", - "license": "MIT" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "license": "MIT" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "license": "MIT" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", - "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", - "license": "MIT", - "dependencies": { - "chalk": "^5.0.0", - "is-unicode-supported": "^1.1.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/logform": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", - "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", - "license": "MIT", - "dependencies": { - "@colors/colors": "1.6.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lz4-wasm-nodejs": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/lz4-wasm-nodejs/-/lz4-wasm-nodejs-0.9.2.tgz", - "integrity": "sha512-hSwgJPS98q/Oe/89Y1OxzeA/UdnASG8GvldRyKa7aZyoAFCC8VPRtViBSava7wWC66WocjUwBpWau2rEmyFPsw==", - "license": "MIT", - "optional": true - }, - "node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "license": "MIT", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/make-dir/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/markdown-it": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", - "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/markdown-it" - } - ], - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.5.0", - "linkify-it": "^5.0.2", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mdurl": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.1.0.tgz", - "integrity": "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==", - "license": "MIT" - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/mimic-response": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-cache": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz", - "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==", - "license": "MIT", - "dependencies": { - "clone": "2.x" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/node-forge": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", - "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "license": "MIT" - }, - "node_modules/node-rsa": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-1.1.1.tgz", - "integrity": "sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==", - "license": "MIT", - "dependencies": { - "asn1": "^0.2.4" - } - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-url": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", - "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "license": "MIT", - "dependencies": { - "fn.name": "1.x.x" - } - }, - "node_modules/opossum": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/opossum/-/opossum-10.0.0.tgz", - "integrity": "sha512-sghtqL8Usj+et06Zui0nyn0R6FFsl7cyuoU+d7MctYU0nbS7Htzjleh+tWohFqk1Rp1srrFwbFa8Vxd0O64w6A==", - "license": "Apache-2.0", - "engines": { - "node": "^26 || ^24 || ^22" - } - }, - "node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/path-to-regexp": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", - "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "license": "MIT", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-from-env": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", - "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.15.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", - "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", - "license": "BSD-3-Clause", - "dependencies": { - "es-define-property": "^1.0.1", - "side-channel": "^1.1.1" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/range-parser": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz", - "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/raw-body": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", - "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", - "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/read-pkg": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", - "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^2.0.0" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz", - "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==", - "license": "MIT", - "dependencies": { - "find-up": "^6.3.0", - "read-pkg": "^7.1.0", - "type-fest": "^2.5.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "license": "MIT" - }, - "node_modules/responselike": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", - "license": "MIT", - "dependencies": { - "lowercase-keys": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-stable-stringify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/seek-bzip": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", - "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", - "license": "MIT", - "dependencies": { - "commander": "^2.8.1" - }, - "bin": { - "seek-bunzip": "bin/seek-bunzip", - "seek-table": "bin/seek-bzip-table" - } - }, - "node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/serve-static": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/side-channel": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", - "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4", - "side-channel-list": "^1.0.1", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", - "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", - "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", - "license": "CC0-1.0" - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/strip-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", - "license": "MIT", - "dependencies": { - "is-natural-number": "^4.0.1" - } - }, - "node_modules/tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "license": "MIT", - "dependencies": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", - "license": "MIT", - "engines": { - "node": ">=14.16" - } - }, - "node_modules/tempy": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.2.0.tgz", - "integrity": "sha512-d79HhZya5Djd7am0q+W4RTsSU+D/aJzM+4Y4AGJGuGlgM2L6sx5ZvOYTmZjqPhrDrV6xJTtRSm1JCLj6V6LHLQ==", - "license": "MIT", - "dependencies": { - "is-stream": "^3.0.0", - "temp-dir": "^3.0.0", - "type-fest": "^2.12.2", - "unique-string": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "license": "MIT" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "license": "MIT" - }, - "node_modules/to-buffer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", - "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", - "license": "MIT", - "dependencies": { - "isarray": "^2.0.5", - "safe-buffer": "^5.2.1", - "typed-array-buffer": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/to-buffer/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/triple-beam": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", - "license": "MIT", - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", - "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", - "license": "MIT", - "dependencies": { - "content-type": "^2.0.0", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/type-is/node_modules/content-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", - "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "license": "MIT" - }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "license": "MIT", - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "node_modules/undici": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-8.9.0.tgz", - "integrity": "sha512-aWZpUj7XoGonMClx4gdDRfgBjqeA+F473aDmROQQbM9n6PRfK/u1q/a0X4wMTgcHfT8H6fpbt98PFuDUwFg2YA==", - "license": "MIT", - "engines": { - "node": ">=22.19.0" - } - }, - "node_modules/unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", - "license": "MIT", - "dependencies": { - "crypto-random-string": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", - "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "license": "MIT" - }, - "node_modules/voca": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/voca/-/voca-1.4.1.tgz", - "integrity": "sha512-NJC/BzESaHT1p4B5k4JykxedeltmNbau4cummStd4RjFojgq/kLew5TzYge9N2geeWyI2w8T30wUET5v+F7ZHA==", - "license": "MIT" - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.20", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", - "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/winston": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.19.0.tgz", - "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", - "license": "MIT", - "dependencies": { - "@colors/colors": "^1.6.0", - "@dabh/diagnostics": "^2.0.8", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.7.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.9.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/winston-transport": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", - "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", - "license": "MIT", - "dependencies": { - "logform": "^2.7.0", - "readable-stream": "^3.6.2", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/winston-transport/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/winston/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/winston/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/yaml": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", - "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "license": "MIT", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} +{ + "name": "tutorials-srv-qa", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "tutorials-srv-qa", + "version": "1.0.0", + "dependencies": { + "@cap-js/hana": "^3.1.2", + "@sap-ai-sdk/foundation-models": "^2.12.0", + "@sap-ai-sdk/orchestration": "^2.12.0", + "@sap/cds": "^10.2.0", + "@sap/xsenv": "^6.2.1", + "@sap/xssec": "^4.13.1", + "cheerio": "^1.2.0", + "express": "^5", + "hugo-extended": "0.147.8", + "jose": "6.2.3", + "markdown-it": "^14.3.0", + "undici": "8.9.0" + }, + "engines": { + "node": "22.23.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cap-js/db-service": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@cap-js/db-service/-/db-service-3.1.2.tgz", + "integrity": "sha512-cEjDCQZX2NDqiOYRioCzx31rlz+VD8ViTwg04dxiI4SBK6Sz19i59W3e8rVdlpK3cFTr95R9cJ1S/cPMtFbLCQ==", + "license": "Apache-2.0", + "peerDependencies": { + "@sap/cds": "^10", + "generic-pool": "^3.9.0" + }, + "peerDependenciesMeta": { + "generic-pool": { + "optional": true + } + } + }, + "node_modules/@cap-js/hana": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@cap-js/hana/-/hana-3.1.2.tgz", + "integrity": "sha512-QkF+oHkt/6M9uk5Bha1hYPPpi7eMnuyXwDvPzK7BJQ5MU7oYs7gvOex/IHKwSlpmPWn8maWxTQJIQn5vLq6qkA==", + "license": "Apache-2.0", + "dependencies": { + "@cap-js/db-service": "^3.1.2", + "hdb": "^2.30.1" + }, + "peerDependencies": { + "@sap/cds": "^10", + "@sap/hana-client": "^2" + }, + "peerDependenciesMeta": { + "@sap/hana-client": { + "optional": true + } + } + }, + "node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.8.tgz", + "integrity": "sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==", + "license": "MIT", + "dependencies": { + "@so-ric/colorspace": "^1.1.6", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@eslint/js": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", + "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", + "license": "MIT", + "peer": true, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@sap-ai-sdk/ai-api": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@sap-ai-sdk/ai-api/-/ai-api-2.17.0.tgz", + "integrity": "sha512-gX9uEf5KU2QysVNCX+nllVt/fM/aF1uUjiNmT3K+X7LUVV5rPVkDvUScSr+ZNvNRs4BgFkl2t8UoithE6zFfBg==", + "license": "Apache-2.0", + "dependencies": { + "@sap-ai-sdk/core": "^2.17.0", + "@sap-cloud-sdk/connectivity": "^4.9.1", + "@sap-cloud-sdk/util": "^4.9.1" + } + }, + "node_modules/@sap-ai-sdk/core": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@sap-ai-sdk/core/-/core-2.17.0.tgz", + "integrity": "sha512-0eS12ogU5j2jqt+imISqFLntvyjQgkxqkX4vzHVEa1MGibpBJfAOgT+zpwC/F2ZZ5KMEm1r+5q4a+ziemqANUA==", + "license": "Apache-2.0", + "dependencies": { + "@sap-cloud-sdk/connectivity": "^4.9.1", + "@sap-cloud-sdk/http-client": "^4.9.1", + "@sap-cloud-sdk/openapi": "^4.9.1", + "@sap-cloud-sdk/util": "^4.9.1" + } + }, + "node_modules/@sap-ai-sdk/foundation-models": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@sap-ai-sdk/foundation-models/-/foundation-models-2.13.0.tgz", + "integrity": "sha512-lPT2fWXkKSN+lsUAGy6H3gTgkWbjb8uT7ccfxCuQyx1Fjmts+1pBSvOxFyWYqvMglF58gO0i1HKwdkLsG2b+Cg==", + "license": "Apache-2.0", + "dependencies": { + "@sap-ai-sdk/ai-api": "^2.13.0", + "@sap-ai-sdk/core": "^2.13.0", + "@sap-cloud-sdk/connectivity": "^4.7.0", + "@sap-cloud-sdk/http-client": "^4.7.0", + "@sap-cloud-sdk/util": "^4.7.0" + } + }, + "node_modules/@sap-ai-sdk/orchestration": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@sap-ai-sdk/orchestration/-/orchestration-2.17.0.tgz", + "integrity": "sha512-wN+5ZIQTB1MLEiNLUXBHm2KqkkiPn2Ji6q3hRw1KstUmUWi637+8/x/hPYgEo38VgSKOarwLN9SDkJ09mRckng==", + "license": "Apache-2.0", + "dependencies": { + "@sap-ai-sdk/ai-api": "^2.17.0", + "@sap-ai-sdk/core": "^2.17.0", + "@sap-ai-sdk/prompt-registry": "^2.17.0", + "@sap-cloud-sdk/util": "^4.9.1", + "yaml": "^2.9.0" + } + }, + "node_modules/@sap-ai-sdk/prompt-registry": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@sap-ai-sdk/prompt-registry/-/prompt-registry-2.17.0.tgz", + "integrity": "sha512-2sjT94d1M/Lim0ar/f0kfY41oBcv9utMl829qYjagU4HZt/a4XPn5jVXTjx1cimAcG7qT536C41ABg9yKVFYmQ==", + "license": "Apache-2.0", + "dependencies": { + "@sap-ai-sdk/core": "^2.17.0", + "zod": "^4.6.6" + } + }, + "node_modules/@sap-cloud-sdk/connectivity": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/connectivity/-/connectivity-4.9.1.tgz", + "integrity": "sha512-0deJBmdUd1LD1O3CX/wqYjTEKmnrnLsxnrSE8CyGtzbyomjjL1ePEXB3g6QUpQKmClVyOgJG/IbpyJFGGXXL5A==", + "license": "Apache-2.0", + "dependencies": { + "@sap-cloud-sdk/resilience": "^4.9.1", + "@sap-cloud-sdk/util": "^4.9.1", + "@sap/xsenv": "^6.2.0", + "@sap/xssec": "^4.13.0", + "async-retry": "^1.3.3", + "axios": "^1.15.0", + "jks-js": "^1.1.6", + "jsonwebtoken": "^9.0.3", + "safe-stable-stringify": "^2.5.0" + } + }, + "node_modules/@sap-cloud-sdk/http-client": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/http-client/-/http-client-4.9.1.tgz", + "integrity": "sha512-bsF8T/syitm+GI8eInOB1AfvHsTYJ8Qvg5dfGt5SGXEQjqV2amFEulPp7edNTzCLo0+BBbBa/jhvqLCvXSoV6A==", + "license": "Apache-2.0", + "dependencies": { + "@sap-cloud-sdk/connectivity": "^4.9.1", + "@sap-cloud-sdk/resilience": "^4.9.1", + "@sap-cloud-sdk/util": "^4.9.1", + "axios": "^1.15.0" + } + }, + "node_modules/@sap-cloud-sdk/openapi": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/openapi/-/openapi-4.9.1.tgz", + "integrity": "sha512-o46XbWWjo4piTPsLWPE9yuGCNS8jIj1GfZSJpaHdWDO6ZF+CqaUwF21UtGTg0SJggoe6AsJlhVObL7QA6urcJg==", + "license": "Apache-2.0", + "dependencies": { + "@sap-cloud-sdk/connectivity": "^4.9.1", + "@sap-cloud-sdk/http-client": "^4.9.1", + "@sap-cloud-sdk/resilience": "^4.9.1", + "@sap-cloud-sdk/util": "^4.9.1", + "axios": "^1.15.0" + } + }, + "node_modules/@sap-cloud-sdk/resilience": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/resilience/-/resilience-4.9.1.tgz", + "integrity": "sha512-14Hdd2VqEd3BarikR/ChZjquQuelC+CP69HKdMycADmmsuQEwaJkSXURW8cDl19bfx8Re1ldM/4Ig0gbCY4x/A==", + "license": "Apache-2.0", + "dependencies": { + "@sap-cloud-sdk/util": "^4.9.1", + "async-retry": "^1.3.3", + "axios": "^1.15.0", + "opossum": "^10.0.0" + } + }, + "node_modules/@sap-cloud-sdk/util": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/util/-/util-4.9.1.tgz", + "integrity": "sha512-1tuv+c6o2Y8/1F3UEdqiv3TPWzZDpCjxuDpAFtFBM8C+weum8ixgwc2YXEWvBzWvtSEl7C5L/o8jBqiuhcXF4w==", + "license": "Apache-2.0", + "dependencies": { + "axios": "^1.15.0", + "logform": "^2.7.0", + "voca": "^1.4.1", + "winston": "^3.19.0", + "winston-transport": "^4.9.0" + } + }, + "node_modules/@sap/cds": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-10.2.2.tgz", + "integrity": "sha512-HO5Uk4wZedf7lEdMQyd9Cxa7Wny8NLDUp/WDwr5rKU6Byi2vu0kbAoLM8oREIVhj11DwQn9j+lSaBJNTCTAoEQ==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@sap/cds-compiler": "^7", + "@sap/cds-fiori": "^2", + "express": "^4.22.1 || ^5", + "yaml": "^2" + }, + "bin": { + "cds-deploy": "bin/deploy.js", + "cds-serve": "bin/serve.js" + }, + "engines": { + "node": ">=22.12" + }, + "peerDependencies": { + "@eslint/js": "^9 || ^10", + "tar": "^7.5.6" + }, + "peerDependenciesMeta": { + "tar": { + "optional": true + } + } + }, + "node_modules/@sap/cds-compiler": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-7.2.1.tgz", + "integrity": "sha512-VgiOQxtYLQs/lWSA5P6LzbiSlluX+o3wYImkoASUl/spmBo/nkF/L/zwNCYCQD6MiIKkgzmToGIlsZEqsGozvQ==", + "license": "SEE LICENSE IN LICENSE", + "bin": { + "cdsc": "bin/cdsc.js", + "cdshi": "bin/cdshi.js", + "cdsse": "bin/cdsse.js" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/@sap/cds-fiori": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sap/cds-fiori/-/cds-fiori-2.3.0.tgz", + "integrity": "sha512-6oWov+DSpFrSTgxXR0dZhak6aZ/IVRZvaHERMi0EgSTzIJdlvZlpw3Kf18ePMcTrRrtEXwD4RIjKt8pbs0g2Hg==", + "license": "SEE LICENSE IN LICENSE", + "peerDependencies": { + "@sap/cds": ">=8" + } + }, + "node_modules/@sap/xsenv": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@sap/xsenv/-/xsenv-6.2.1.tgz", + "integrity": "sha512-R1p7VdD3N3jvdkL8av4vLqF+cTQihTz9mCqqF+oa9rVZvgLaCb4ODyZ1dln5/fBgg1OSuch0ESxu3AqZrXVknw==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "debug": "4.4.3", + "node-cache": "^5.1.2", + "verror": "1.10.1" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@sap/xssec": { + "version": "4.13.3", + "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-4.13.3.tgz", + "integrity": "sha512-op5wFTpJGJFdwFcEFRDX30yKbB2Kknk+LJqXDcrHyPNLqvSqerTWXFdFnylhiIhoAdGFSccC6NimUhqFxIrUsA==", + "license": "SAP DEVELOPER LICENSE AGREEMENT", + "dependencies": { + "debug": "^4.4.3", + "jwt-decode": "^4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@so-ric/colorspace": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@so-ric/colorspace/-/colorspace-1.1.6.tgz", + "integrity": "sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==", + "license": "MIT", + "dependencies": { + "color": "^5.0.2", + "text-hex": "1.0.x" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", + "license": "MIT" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "license": "MIT" + }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", + "license": "MIT" + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "license": "MIT", + "dependencies": { + "retry": "0.13.1" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.1.tgz", + "integrity": "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.16.0", + "form-data": "^4.0.5", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/body-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz", + "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^2.0.0", + "debug": "^4.4.3", + "http-errors": "^2.0.1", + "iconv-lite": "^0.7.2", + "on-finished": "^2.4.1", + "qs": "^6.15.2", + "raw-body": "^3.0.2", + "type-is": "^2.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/body-parser/node_modules/content-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", + "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "license": "MIT", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "license": "MIT" + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "license": "MIT", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/careful-downloader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/careful-downloader/-/careful-downloader-3.0.0.tgz", + "integrity": "sha512-5KMIPa0Yoj+2tY6OK9ewdwcPebp+4XS0dMYvvF9/8fkFEfvnEpWmHWYs9JNcZ7RZUvY/v6oPzLpmmTzSIbroSA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "decompress": "^4.2.1", + "fs-extra": "^11.1.1", + "got": "^12.6.0", + "is-path-inside": "^4.0.0", + "tempy": "^3.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cheerio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", + "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.1", + "htmlparser2": "^10.1.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.19.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=20.18.1" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cheerio/node_modules/undici": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz", + "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz", + "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", + "license": "MIT", + "dependencies": { + "color-convert": "^3.1.3", + "color-string": "^2.1.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/color-convert": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz", + "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=14.6" + } + }, + "node_modules/color-name": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.1.tgz", + "integrity": "sha512-p2FdgwVx1a9yWBHP2wI0VgShkDpgN4kZISkxdNipGBJWpa5G6b04OINlVWCyJj0JmfvcPrgqt95E9k8yvaOJFg==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/color-string": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", + "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "license": "MIT", + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "license": "MIT", + "dependencies": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "license": "MIT", + "dependencies": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "license": "MIT", + "dependencies": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "license": "MIT", + "dependencies": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "license": "MIT", + "dependencies": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip/node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "license": "MIT" + }, + "node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "license": "MIT" + }, + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/form-data": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.4", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "license": "MIT", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz", + "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "license": "MIT", + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hdb": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/hdb/-/hdb-2.30.1.tgz", + "integrity": "sha512-2DtLQmPv39HFMtUk315aRaNCJHci/Y62Uitr5/Me8373CYFnoz9BlssMd46mrzHXSK0cA5m/nW6sTrO2KF357w==", + "license": "Apache-2.0", + "dependencies": { + "iconv-lite": "0.7.0" + }, + "engines": { + "node": ">= 18" + }, + "optionalDependencies": { + "lz4-wasm-nodejs": "0.9.2" + } + }, + "node_modules/hdb/node_modules/iconv-lite": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", + "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hugo-extended": { + "version": "0.147.8", + "resolved": "https://registry.npmjs.org/hugo-extended/-/hugo-extended-0.147.8.tgz", + "integrity": "sha512-QCZ0S+CtS2W0wKTDL/d2vEmjt7RPjSt9GteFHcBu1YjG4cXrvSAIWmJYe1BlE8TxhABogc1PAouAPHVrH0oFcQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "careful-downloader": "^3.0.0", + "log-symbols": "^5.1.0", + "read-pkg-up": "^9.1.0" + }, + "bin": { + "hugo": "lib/cli.js", + "hugo-extended": "lib/cli.js" + }, + "engines": { + "node": ">=18.12" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", + "license": "MIT" + }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jks-js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/jks-js/-/jks-js-1.1.7.tgz", + "integrity": "sha512-BeiDRKsAi1NwEwgx2JB/9/0tar5BNGIv+foGm1G5GgiyR35s/iUnfd/BWqYd16mLDD8qTaAVBrIcOOuVqXJZNQ==", + "license": "MIT", + "dependencies": { + "node-forge": "^1.4.0", + "node-int64": "^0.4.0", + "node-rsa": "^1.1.1" + } + }, + "node_modules/jose": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz", + "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "license": "MIT" + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz", + "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "license": "MIT", + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/logform": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", + "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", + "license": "MIT", + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lz4-wasm-nodejs": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/lz4-wasm-nodejs/-/lz4-wasm-nodejs-0.9.2.tgz", + "integrity": "sha512-hSwgJPS98q/Oe/89Y1OxzeA/UdnASG8GvldRyKa7aZyoAFCC8VPRtViBSava7wWC66WocjUwBpWau2rEmyFPsw==", + "license": "MIT", + "optional": true + }, + "node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/make-dir/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/markdown-it": { + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", + "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.5.0", + "linkify-it": "^5.0.2", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdurl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.1.0.tgz", + "integrity": "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==", + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-cache": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz", + "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==", + "license": "MIT", + "dependencies": { + "clone": "2.x" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/node-forge": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" + }, + "node_modules/node-rsa": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-1.1.1.tgz", + "integrity": "sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==", + "license": "MIT", + "dependencies": { + "asn1": "^0.2.4" + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-url": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "license": "MIT", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/opossum": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/opossum/-/opossum-10.0.0.tgz", + "integrity": "sha512-sghtqL8Usj+et06Zui0nyn0R6FFsl7cyuoU+d7MctYU0nbS7Htzjleh+tWohFqk1Rp1srrFwbFa8Vxd0O64w6A==", + "license": "Apache-2.0", + "engines": { + "node": "^26 || ^24 || ^22" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.15.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", + "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", + "license": "BSD-3-Clause", + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/range-parser": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz", + "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", + "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/read-pkg": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", + "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^2.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz", + "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==", + "license": "MIT", + "dependencies": { + "find-up": "^6.3.0", + "read-pkg": "^7.1.0", + "type-fest": "^2.5.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "license": "MIT", + "dependencies": { + "commander": "^2.8.1" + }, + "bin": { + "seek-bunzip": "bin/seek-bunzip", + "seek-table": "bin/seek-bzip-table" + } + }, + "node_modules/semver": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", + "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", + "license": "CC0-1.0" + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "license": "MIT", + "dependencies": { + "is-natural-number": "^4.0.1" + } + }, + "node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "license": "MIT", + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/tempy": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.2.0.tgz", + "integrity": "sha512-d79HhZya5Djd7am0q+W4RTsSU+D/aJzM+4Y4AGJGuGlgM2L6sx5ZvOYTmZjqPhrDrV6xJTtRSm1JCLj6V6LHLQ==", + "license": "MIT", + "dependencies": { + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/to-buffer/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", + "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", + "license": "MIT", + "dependencies": { + "content-type": "^2.0.0", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/type-is/node_modules/content-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "license": "MIT", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/undici": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.9.0.tgz", + "integrity": "sha512-aWZpUj7XoGonMClx4gdDRfgBjqeA+F473aDmROQQbM9n6PRfK/u1q/a0X4wMTgcHfT8H6fpbt98PFuDUwFg2YA==", + "license": "MIT", + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" + }, + "node_modules/voca": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/voca/-/voca-1.4.1.tgz", + "integrity": "sha512-NJC/BzESaHT1p4B5k4JykxedeltmNbau4cummStd4RjFojgq/kLew5TzYge9N2geeWyI2w8T30wUET5v+F7ZHA==", + "license": "MIT" + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/winston": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.19.0.tgz", + "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", + "license": "MIT", + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.8", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.7.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.9.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", + "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", + "license": "MIT", + "dependencies": { + "logform": "^2.7.0", + "readable-stream": "^3.6.2", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/winston/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/winston/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz", + "integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/srv-qa/package.json b/srv-qa/package.json index 7a7a41d2f..48de30c65 100644 --- a/srv-qa/package.json +++ b/srv-qa/package.json @@ -10,10 +10,10 @@ "start": "cds-serve" }, "dependencies": { - "@cap-js/hana": "^3.1.0", + "@cap-js/hana": "^3.1.2", "@sap-ai-sdk/foundation-models": "^2.12.0", "@sap-ai-sdk/orchestration": "^2.12.0", - "@sap/cds": "^10.1.0", + "@sap/cds": "^10.2.0", "@sap/xsenv": "^6.2.1", "@sap/xssec": "^4.13.1", "@tutorials/content": "*", diff --git a/srv/admin-service.js b/srv/admin-service.js index d01f9c22c..51b01f8d2 100644 --- a/srv/admin-service.js +++ b/srv/admin-service.js @@ -1275,6 +1275,40 @@ export default class AdminService extends cds.ApplicationService { this.after('SAVE', 'Missions', onMissionSave); this.after('SAVE', 'Groups', onGroupSave); + // #2909 — draft DISCARD reconcile. With cds.fiori.draft_admin_integrity on, + // discarding a Mission/Group draft cascade-deletes its draft CompletionPathItems/ + // GroupPathItems at the DB level, bypassing the per-row after('DELETE') reconcile + // hooks above. These root DISCARD handlers restore rollup correctness by firing + // reconcile for the ACTIVE entity's legacyId (the discard reverts the draft to + // the active state, so we reconcile against that). DISCARD fires at the draft + // root regardless of the child-row cascade. Fail-open like the SAVE hooks. + const onMissionDiscard = async (_data, req) => { + try { + const { Missions } = cds.entities('com.sap.developers.ims'); + const id = req.data?.ID ?? req.params?.[0]?.ID; + const legacyId = id + ? (await SELECT.one.from(Missions).columns('legacyId').where({ ID: id }))?.legacyId + : null; + fireReconcile('MISSION', legacyId); + } catch (_) { /* fail-open */ } + }; + const onGroupDiscard = async (_data, req) => { + try { + const { Groups } = cds.entities('com.sap.developers.ims'); + const groupId = req.data?.ID ?? req.params?.[0]?.ID; + const legacyId = groupId + ? (await SELECT.one.from(Groups).columns('legacyId').where({ ID: groupId }))?.legacyId + : null; + fireReconcile('GROUP', legacyId); + if (groupId) { + const missionLegacyIds = await resolveMissionsNestingGroup(groupId).catch(() => []); + for (const mLegacy of missionLegacyIds) fireReconcile('MISSION', mLegacy); + } + } catch (_) { /* fail-open */ } + }; + this.after('DISCARD', 'Missions.drafts', onMissionDiscard); + this.after('DISCARD', 'Groups.drafts', onGroupDiscard); + // Advocates: auto-derive slug from firstName + lastName on CREATE. advocateHandlers.register(this); devtoberfestBannerHandlers.register(this); diff --git a/srv/lib/draft-integrity-preflight.js b/srv/lib/draft-integrity-preflight.js new file mode 100644 index 000000000..416f984d9 --- /dev/null +++ b/srv/lib/draft-integrity-preflight.js @@ -0,0 +1,134 @@ +// srv/lib/draft-integrity-preflight.js +// +// #2968: startup preflight that verifies HANA ON DELETE CASCADE constraints +// exist on every draft table before the runtime serves with +// cds.fiori.draft_admin_integrity: true. +// +// cds build generates one FK constraint per draft-enabled entity: +// DRAFTADMINISTRATIVEDATA_DRAFTUUID -> DraftAdministrativeData(DraftUUID) +// ON DELETE CASCADE +// If those constraints are missing on HANA, the runtime's optimised draft +// deletion (activate / root-cancel) deletes only the DraftAdministrativeData +// row and the DB does NOT cascade the child draft rows — producing orphaned +// draft rows. +// +// This check is HANA-only, fail-open, and guarded by a globalThis sentinel +// so it fires once per process even when cds.on('served') re-fires under +// cds.test() across multiple test files. + +// Authoritative list of draft-enabled entity table names (lowercase). +// Source: all entities with @odata.draft.enabled: true in AdminService, +// mapped to their underlying HANA table name (dots → underscores + _drafts). +// If a new draft-enabled entity is added to AdminService, add its entry here. +export const DRAFT_TABLES = [ + 'com_sap_developers_ims_tutorials_drafts', + 'com_sap_developers_ims_missions_drafts', + 'com_sap_developers_ims_groups_drafts', + 'com_sap_developers_ims_puzzles_drafts', + 'com_sap_developers_ims_gridtemplates_drafts', + 'com_sap_developers_ims_petoberfests_drafts', + 'com_sap_developers_ims_events_drafts', + 'com_sap_developers_ims_prizes_drafts', + 'com_sap_developers_ims_accomplishments_drafts', + 'com_sap_developers_ims_featuredtasks_drafts', + 'com_sap_developers_ims_alerts_drafts', + 'com_sap_developers_ims_homepageshelves_drafts', + 'com_sap_developers_ims_channels_drafts', + 'com_sap_developers_ims_channelcollections_drafts', + 'com_sap_developers_ims_channeltopicmap_drafts', + 'com_sap_developers_ims_legacyredirects_drafts', + 'com_sap_developers_ims_homepageconfig_drafts', + 'com_sap_developers_ims_verbdefinitions_drafts', + 'com_sap_developers_ims_shelfdefinitions_drafts', + 'com_sap_developers_ims_communityblogsources_drafts', + 'com_sap_developers_ims_communityblogposts_drafts', + 'com_sap_developers_ims_homepageforyoucandidates_drafts', + 'com_sap_developers_ims_devtoberfestconfig_drafts', + 'com_sap_developers_ims_advocates_drafts', + 'com_sap_developers_ims_homepagefeaturedtopics_drafts', + 'com_sap_developers_ims_external_videos_drafts', +]; + +/** + * Returns true only when connected to a HANA database. + * Exported for test isolation. + * @param {object} cds + * @returns {boolean} + */ +export function isHanaKind(cds) { + return cds?.db?.options?.kind === 'hana'; +} + +/** + * Query SYS.REFERENTIAL_CONSTRAINTS for ON DELETE CASCADE FKs on draft tables. + * + * Pure: receives dbRun as a parameter so it can be tested without booting CAP. + * + * @param {(sql: string) => Promise} dbRun + * @returns {Promise<{ok: boolean, found: string[], missing: string[], error?: string}>} + */ +export async function checkDraftCascadeConstraints(dbRun) { + try { + const rows = await dbRun( + `SELECT TABLE_NAME FROM SYS.REFERENTIAL_CONSTRAINTS` + + ` WHERE COLUMN_NAME = 'DRAFTADMINISTRATIVEDATA_DRAFTUUID'` + + ` AND DELETE_RULE = 'CASCADE'` + ); + const foundSet = new Set((rows || []).map(r => String(r.TABLE_NAME).toLowerCase())); + const found = DRAFT_TABLES.filter(t => foundSet.has(t)); + const missing = DRAFT_TABLES.filter(t => !foundSet.has(t)); + return { ok: missing.length === 0, found, missing }; + } catch (err) { + return { + ok: false, + found: [], + missing: [...DRAFT_TABLES], + error: err?.message ?? String(err), + }; + } +} + +/** + * Register a cds.on('served') handler that runs checkDraftCascadeConstraints + * once at startup on HANA. Fail-open: any error is logged as WARN, never thrown. + * + * @param {object} cds The @sap/cds module + */ +export function wireDraftIntegrityPreflight(cds) { + cds.on('served', async () => { + if (globalThis.__draftIntegrityPreflightRegistered) return; + globalThis.__draftIntegrityPreflightRegistered = true; + + if (!isHanaKind(cds)) return; + + const log = cds.log('draft-integrity-preflight'); + try { + const result = await checkDraftCascadeConstraints((sql) => cds.db.run(sql)); + if (result.error) { + log.warn( + `[draft-integrity-preflight] DB error querying SYS.REFERENTIAL_CONSTRAINTS (fail-open):`, + result.error + ); + } else if (!result.ok) { + log.warn( + `[draft-integrity-preflight] cds.fiori.draft_admin_integrity is ON but` + + ` ON DELETE CASCADE constraints are missing on HANA for` + + ` ${result.missing.length}/${DRAFT_TABLES.length} draft tables.` + + ` Missing: ${result.missing.join(', ')}.` + + ` Deploy the HDI constraints (.hdbconstraint) before drafts are created` + + ` or activated on this environment, then restart.` + ); + } else { + log.info( + `[draft-integrity-preflight] draft cascade constraints verified` + + ` (${result.found.length}/${DRAFT_TABLES.length}).` + ); + } + } catch (err) { + cds.log('draft-integrity-preflight').warn( + `[draft-integrity-preflight] unexpected error (fail-open):`, + err?.message ?? err + ); + } + }); +} diff --git a/srv/server.js b/srv/server.js index ff1892ca3..9bccc3d9b 100644 --- a/srv/server.js +++ b/srv/server.js @@ -104,6 +104,7 @@ import { uploadAndUpsertAdvocatePhoto } from './lib/advocate-photo-upsert.js'; import { uploadPetSubmission, decodePhotoUpload } from './lib/petoberfest-upload.js'; import { fetchPetPhoto } from './lib/petoberfest-photo-store.js'; import { installDbWrap } from './lib/metrics-db-wrap.js'; +import { wireDraftIntegrityPreflight } from './lib/draft-integrity-preflight.js'; import './graphql-config.js'; import { makeA2aRouter } from './lib/a2a/rpc-router.js'; import { a2aIasAuthMiddleware } from './lib/a2a/ias-auth-mw.js'; @@ -2345,6 +2346,8 @@ cds.on('served', () => { // db.tx.ms observation can double-count against the wall-clock of an // already-active tx. Not a correctness issue — flagged so admin-tile // percentiles read as "acquire + tx pressure signal" not "unique samples." +wireDraftIntegrityPreflight(cds); + cds.on('served', () => { const installed = installDbWrap(cds); if (installed) { diff --git a/test/admin-drafts-discard-reconcile.test.js b/test/admin-drafts-discard-reconcile.test.js new file mode 100644 index 000000000..909dc220c --- /dev/null +++ b/test/admin-drafts-discard-reconcile.test.js @@ -0,0 +1,138 @@ +// test/admin-drafts-discard-reconcile.test.js +// +// Regression for #2909: with cds.fiori.draft_admin_integrity enabled, discarding +// a draft of a Mission/Group cascade-deletes its draft composition children +// (CompletionPathItems / GroupPathItems) at the DB level, bypassing the per-row +// after('DELETE') reconcile hooks. The root after('DISCARD','Missions'/'Groups') +// handlers restore rollup correctness by firing reconcileEntityForUsers for the +// active entity's legacyId on discard. +// +// Assertion strategy mirrors admin-service-reconcile.test.js: seed a user whose +// active-entity rollup is out of sync, perform the draft action, and vi.waitFor +// the observable TaskRecords heal. Reconcile is a static ESM import in +// admin-service.js (not spyable across the module boundary), so we assert the +// side effect, not the call. +// +// Harness: cds.test('serve', '--project', '.', '--in-memory') + adminAuth HTTP, +// matching test/admin-drafts.test.js and admin-service-reconcile.test.js. +import { describe, it, expect, vi } from 'vitest'; +import cds from '@sap/cds'; + +const project = cds.test('serve', '--project', '.', '--in-memory'); +const adminAuth = { auth: { username: 'admin', password: 'admin' } }; +const NS = 'com.sap.developers.ims'; + +describe('draft DISCARD reconciles rollups (#2909 draft_admin_integrity)', () => { + // ─── A) Discarding an edit of an active Mission fires MISSION reconcile ─── + // Active Mission has one CPI→tutorial. User completed the tutorial but their + // MISSION TaskRecord is stale IN_PROGRESS. Admin draftEdits the Mission then + // DISCARDs. The after('DISCARD','Missions') handler resolves the active + // Mission's legacyId and fires reconcile → user heals to COMPLETED. + it('fires MISSION reconcile when a Mission draft (edit) is discarded', async () => { + const db = await cds.connect.to('db'); + const { Users, Tutorials, Missions, CompletionPaths, CompletionPathItems, TaskRecords, Tags } = cds.entities(NS); + + const USER_ID = 'aaaaaaaa-2909-0001-0000-000000000001'; + const TUT_ID = 'bbbbbbbb-2909-0001-0000-000000000001'; + const MISS_ID = 'cccccccc-2909-0001-0000-000000000001'; + const CP_ID = 'dddddddd-2909-0001-0000-000000000001'; + const CPI_ID = 'eeeeeeee-2909-0001-0000-000000000001'; + const TAG_ID = 'tttttttt-2909-0001-0000-000000000001'; + const TUT_LEGACY = 92001; + const MISS_LEGACY = 92501; + + await db.run(INSERT.into(Users).entries({ ID: USER_ID, legacyId: 92101, uuid: 'u-2909-01' })); + await db.run(INSERT.into(Tutorials).entries({ + ID: TUT_ID, legacyId: TUT_LEGACY, slug: 'disc-reconcile-tut-01', title: 'Disc Tut 01', status: 'ACTIVE', + })); + await db.run(INSERT.into(Tags).entries({ ID: TAG_ID, legacyId: 92201, name: '__TEST__ disc-01' })); + await db.run(INSERT.into(Missions).entries({ + ID: MISS_ID, legacyId: MISS_LEGACY, title: 'Disc Reconcile Mission', published: true, + })); + await db.run(INSERT.into(CompletionPaths).entries({ + ID: CP_ID, mission_ID: MISS_ID, legacyId: 92601, name: 'Disc Path', + })); + await db.run(INSERT.into(CompletionPathItems).entries({ + ID: CPI_ID, path_ID: CP_ID, taskType: 'TUTORIAL', taskLegacyId: TUT_LEGACY, itemOrder: 10, legacyId: 92701, + })); + // User completed the tutorial but MISSION record is stale IN_PROGRESS. + await db.run(INSERT.into(TaskRecords).entries([ + { ID: 'ffffffff-2909-0001-0000-000000000001', user_ID: USER_ID, taskLegacyId: TUT_LEGACY, taskType: 'TUTORIAL', status: 'COMPLETED', progress: 100, legacyId: 92801, attemptNumber: 1 }, + { ID: 'ffffffff-2909-0001-0000-000000000002', user_ID: USER_ID, taskLegacyId: MISS_LEGACY, taskType: 'MISSION', status: 'IN_PROGRESS', progress: 50, legacyId: 92802, attemptNumber: 1 }, + ])); + + // draftEdit the active Mission, then DISCARD the draft. + const { status: sEdit } = await project.post( + `/admin/Missions(ID=${MISS_ID},IsActiveEntity=true)/AdminService.draftEdit`, {}, adminAuth + ); + expect([200, 201]).toContain(sEdit); + const { status: sDisc } = await project.delete( + `/admin/Missions(ID=${MISS_ID},IsActiveEntity=false)`, adminAuth + ); + expect([200, 204]).toContain(sDisc); + + // DISCARD handler fires MISSION reconcile for the active legacyId → heal. + await vi.waitFor(async () => { + const [row] = await db.run( + SELECT.from(TaskRecords).where({ user_ID: USER_ID, taskType: 'MISSION', taskLegacyId: MISS_LEGACY }) + ); + expect(row?.status).toBe('COMPLETED'); + }, { timeout: 2000, interval: 40 }); + }); + + // ─── B) Discarding an empty freshly-created Mission draft does not throw ── + it('DISCARD of an empty new Mission draft does not throw', async () => { + const { status: sNew, data: draft } = await project.post('/admin/Missions', { + title: '__TEST__ Disc Empty Mission', slug: 'disc-empty-mission-2909', + }, { ...adminAuth, headers: { Prefer: 'handling=lenient' } }); + expect(sNew).toBe(201); + const { status: sDisc } = await project.delete( + `/admin/Missions(ID=${draft.ID},IsActiveEntity=false)`, adminAuth + ); + expect([200, 204]).toContain(sDisc); + }); + + // ─── C) Discarding an edit of an active Group fires GROUP reconcile ─────── + it('fires GROUP reconcile when a Group draft (edit) is discarded', async () => { + const db = await cds.connect.to('db'); + const { Users, Tutorials, Groups, GroupPathItems, TaskRecords } = cds.entities(NS); + + const USER_ID = 'aaaaaaaa-2909-0003-0000-000000000001'; + const TUT_ID = 'bbbbbbbb-2909-0003-0000-000000000001'; + const GRP_ID = 'cccccccc-2909-0003-0000-000000000001'; + const GPI_ID = 'eeeeeeee-2909-0003-0000-000000000001'; + const TUT_LEGACY = 92003; + const GRP_LEGACY = 92503; + + await db.run(INSERT.into(Users).entries({ ID: USER_ID, legacyId: 92103, uuid: 'u-2909-03' })); + await db.run(INSERT.into(Tutorials).entries({ + ID: TUT_ID, legacyId: TUT_LEGACY, slug: 'disc-reconcile-tut-03', title: 'Disc Tut 03', status: 'ACTIVE', + })); + await db.run(INSERT.into(Groups).entries({ + ID: GRP_ID, legacyId: GRP_LEGACY, title: 'Disc Reconcile Group', published: true, + })); + await db.run(INSERT.into(GroupPathItems).entries({ + ID: GPI_ID, group_ID: GRP_ID, tutorial_ID: TUT_ID, itemOrder: 10, legacyId: 92703, + })); + await db.run(INSERT.into(TaskRecords).entries([ + { ID: 'ffffffff-2909-0003-0000-000000000001', user_ID: USER_ID, taskLegacyId: TUT_LEGACY, taskType: 'TUTORIAL', status: 'COMPLETED', progress: 100, legacyId: 92803, attemptNumber: 1 }, + { ID: 'ffffffff-2909-0003-0000-000000000002', user_ID: USER_ID, taskLegacyId: GRP_LEGACY, taskType: 'GROUP', status: 'IN_PROGRESS', progress: 50, legacyId: 92804, attemptNumber: 1 }, + ])); + + const { status: sEdit } = await project.post( + `/admin/Groups(ID=${GRP_ID},IsActiveEntity=true)/AdminService.draftEdit`, {}, adminAuth + ); + expect([200, 201]).toContain(sEdit); + const { status: sDisc } = await project.delete( + `/admin/Groups(ID=${GRP_ID},IsActiveEntity=false)`, adminAuth + ); + expect([200, 204]).toContain(sDisc); + + await vi.waitFor(async () => { + const [row] = await db.run( + SELECT.from(TaskRecords).where({ user_ID: USER_ID, taskType: 'GROUP', taskLegacyId: GRP_LEGACY }) + ); + expect(row?.status).toBe('COMPLETED'); + }, { timeout: 2000, interval: 40 }); + }); +}); diff --git a/test/admin-drafts.test.js b/test/admin-drafts.test.js index f0440ebbc..af3b13441 100644 --- a/test/admin-drafts.test.js +++ b/test/admin-drafts.test.js @@ -107,8 +107,12 @@ describe('Draft Enablement', () => { ); expect(activateStatus).toBe(201); - // Cleanup - await project.delete(`/admin/Missions(ID=${mission.ID},IsActiveEntity=true)`, adminAuth); + // Cleanup. Under cds.fiori.draft_admin_integrity (CAP 10.2) a residual + // draft can linger after activation on SQLite and blocks the active delete + // with "a draft exists" — discard any leftover draft first, then delete the + // active entity. + await project.delete(`/admin/Missions(ID=${mission.ID},IsActiveEntity=false)`, adminAuth).catch(() => {}); + await project.delete(`/admin/Missions(ID=${mission.ID},IsActiveEntity=true)`, adminAuth).catch(() => {}); }); }); }); diff --git a/test/admin-featured-candidates.test.js b/test/admin-featured-candidates.test.js index cf2790eee..e49e6be55 100644 --- a/test/admin-featured-candidates.test.js +++ b/test/admin-featured-candidates.test.js @@ -143,7 +143,10 @@ describe('FeaturedTasks order default', () => { afterAll(async () => { for (const id of createdIDs) { - await project.delete(`/admin/FeaturedTasks(ID=${id},IsActiveEntity=true)`, adminAuth); + // Under cds.fiori.draft_admin_integrity (CAP 10.2) a residual draft can + // linger after activation — discard first, then delete the active entity. + await project.delete(`/admin/FeaturedTasks(ID=${id},IsActiveEntity=false)`, adminAuth).catch(() => {}); + await project.delete(`/admin/FeaturedTasks(ID=${id},IsActiveEntity=true)`, adminAuth).catch(() => {}); } }); diff --git a/test/hybrid/draft-discard-reconcile.test.js b/test/hybrid/draft-discard-reconcile.test.js new file mode 100644 index 000000000..c9e2b5b6e --- /dev/null +++ b/test/hybrid/draft-discard-reconcile.test.js @@ -0,0 +1,113 @@ +// test/hybrid/draft-discard-reconcile.test.js +// +// #2909 — hybrid (real HANA) verification of optimized draft deletion +// (cds.fiori.draft_admin_integrity). When a Mission draft is discarded, the +// DB cascade removes the draft composition children (CompletionPathItems), +// bypassing the per-row after('DELETE') reconcile hooks. The root +// after('DISCARD','Missions.drafts') handler must still reconcile the parent +// Mission rollup. +// +// Scenario: an active Mission has one CompletionPath → CPI → tutorial. A user +// completed the tutorial but their MISSION TaskRecord is stale IN_PROGRESS. +// We draftEdit the Mission (creating a draft) then discard it; the DISCARD +// handler fires reconcile for the active Mission's legacyId, healing the +// stale record to COMPLETED. +// +// Runs against HANA via `npm run test:hybrid` (cds bind --exec … --project hybrid). +// Guarded by isSafeForWrites() so it never runs against a prod DB. Idempotent: +// supporting rows are keyed by high legacyId (outside real-data range) and +// cleaned up in afterAll; the Mission draft is cleared via the HTTP active +// delete (which removes draft + active, avoiding orphaned draft-shadow rows). +import { describe, it, expect, beforeAll, afterAll } from 'vitest'; +import cds from '@sap/cds'; +import { isSafeForWrites } from './_guard.js'; + +const project = cds.test('serve', '--project', '.', '--profile', 'hybrid'); +const adminAuth = { auth: { username: 'admin', password: 'admin' } }; + +const NS = 'com.sap.developers.ims'; +// Stable legacy IDs well outside real-data range. +const USER_LEGACY = 990901; +const TUT_LEGACY = 990902; +const MISS_LEGACY = 990903; +const CP_LEGACY = 990904; +const CPI_LEGACY = 990905; + +describe.runIf(isSafeForWrites())('draft DISCARD reconcile on real HANA (#2909)', () => { + let userID, tutID, missID, cpID; + + async function wipeByLegacy() { + const { Users, Tutorials, Missions, CompletionPaths, CompletionPathItems, TaskRecords } = cds.entities(NS); + // Resolve the (possibly auto-generated) user ID so we can clear its TaskRecords. + const [u] = await SELECT.from(Users).columns('ID').where({ legacyId: USER_LEGACY }); + if (u?.ID) await DELETE.from(TaskRecords).where({ user_ID: u.ID }); + await DELETE.from(CompletionPathItems).where({ legacyId: CPI_LEGACY }); + await DELETE.from(CompletionPaths).where({ legacyId: CP_LEGACY }); + await DELETE.from(Missions).where({ legacyId: MISS_LEGACY }); + await DELETE.from(Tutorials).where({ legacyId: TUT_LEGACY }); + await DELETE.from(Users).where({ legacyId: USER_LEGACY }); + } + + beforeAll(async () => { + const { Users, Tutorials, Missions, CompletionPaths, CompletionPathItems, TaskRecords } = cds.entities(NS); + // Idempotent: clear any residue from a prior aborted run first. + await wipeByLegacy(); + + // Seed; let CAP generate UUID keys, then read them back by legacyId. + await INSERT.into(Users).entries({ legacyId: USER_LEGACY, uuid: 'test-2909-uuid' }); + await INSERT.into(Tutorials).entries({ legacyId: TUT_LEGACY, slug: 'test-2909-discard-tut', title: '__TEST__ 2909 Tut', status: 'ACTIVE' }); + await INSERT.into(Missions).entries({ legacyId: MISS_LEGACY, title: '__TEST__ 2909 Mission', published: true }); + + [{ ID: userID }] = await SELECT.from(Users).columns('ID').where({ legacyId: USER_LEGACY }); + [{ ID: tutID }] = await SELECT.from(Tutorials).columns('ID').where({ legacyId: TUT_LEGACY }); + [{ ID: missID }] = await SELECT.from(Missions).columns('ID').where({ legacyId: MISS_LEGACY }); + + await INSERT.into(CompletionPaths).entries({ legacyId: CP_LEGACY, mission_ID: missID, name: '__TEST__ 2909 Path' }); + [{ ID: cpID }] = await SELECT.from(CompletionPaths).columns('ID').where({ legacyId: CP_LEGACY }); + await INSERT.into(CompletionPathItems).entries({ legacyId: CPI_LEGACY, path_ID: cpID, taskType: 'TUTORIAL', taskLegacyId: TUT_LEGACY, itemOrder: 10 }); + + // User completed the tutorial but their MISSION rollup is stale IN_PROGRESS. + await INSERT.into(TaskRecords).entries([ + { user_ID: userID, taskLegacyId: TUT_LEGACY, taskType: 'TUTORIAL', status: 'COMPLETED', progress: 100, legacyId: 990906, attemptNumber: 1 }, + { user_ID: userID, taskLegacyId: MISS_LEGACY, taskType: 'MISSION', status: 'IN_PROGRESS', progress: 50, legacyId: 990907, attemptNumber: 1 }, + ]); + }); + + afterAll(async () => { + // Clear any live Mission draft via the HTTP active delete (removes draft + + // active together, no orphaned draft-shadow rows), then wipe supporting rows. + if (missID) { + await project.delete(`/admin/Missions(ID=${missID},IsActiveEntity=true)`, { ...adminAuth, validateStatus: () => true }).catch(() => {}); + } + await wipeByLegacy(); + }); + + it('heals a stale MISSION rollup when a Mission draft is discarded', async () => { + const { TaskRecords } = cds.entities(NS); + const db = await cds.connect.to('db'); + + // draftEdit the active Mission (creates a draft), then discard the draft. + const edit = await project.post( + `/admin/Missions(ID=${missID},IsActiveEntity=true)/AdminService.draftEdit`, + {}, { ...adminAuth, validateStatus: () => true } + ); + expect([200, 201]).toContain(edit.status); + + const disc = await project.delete( + `/admin/Missions(ID=${missID},IsActiveEntity=false)`, + { ...adminAuth, validateStatus: () => true } + ); + expect([200, 204]).toContain(disc.status); + + // after('DISCARD','Missions.drafts') fires detached reconcile; poll for heal. + let healed = false; + for (let i = 0; i < 30 && !healed; i++) { + const [row] = await db.run( + SELECT.from(TaskRecords).where({ user_ID: userID, taskType: 'MISSION', taskLegacyId: MISS_LEGACY }) + ); + if (row?.status === 'COMPLETED') healed = true; + else await new Promise(r => setTimeout(r, 300)); + } + expect(healed).toBe(true); + }); +}); diff --git a/test/unit/draft-integrity-preflight.test.js b/test/unit/draft-integrity-preflight.test.js new file mode 100644 index 000000000..4f6aa14f1 --- /dev/null +++ b/test/unit/draft-integrity-preflight.test.js @@ -0,0 +1,136 @@ +// test/unit/draft-integrity-preflight.test.js +// +// Unit tests for srv/lib/draft-integrity-preflight.js (#2968). +// All tests use mock dbRun — no CAP boot required. +import { describe, it, expect, beforeEach, afterEach } from 'vitest'; +import { + checkDraftCascadeConstraints, + DRAFT_TABLES, + isHanaKind, + wireDraftIntegrityPreflight, +} from '../../srv/lib/draft-integrity-preflight.js'; + +describe('DRAFT_TABLES', () => { + it('is a non-empty array of lowercase strings', () => { + expect(Array.isArray(DRAFT_TABLES)).toBe(true); + expect(DRAFT_TABLES.length).toBeGreaterThan(0); + for (const t of DRAFT_TABLES) { + expect(typeof t).toBe('string'); + expect(t).toBe(t.toLowerCase()); + } + }); + + it('contains the known high-risk draft tables', () => { + // These are the tables mentioned in the runbook. If a new draft-enabled + // entity is added to AdminService and this test fails, add it to DRAFT_TABLES. + expect(DRAFT_TABLES).toContain('com_sap_developers_ims_missions_drafts'); + expect(DRAFT_TABLES).toContain('com_sap_developers_ims_groups_drafts'); + expect(DRAFT_TABLES).toContain('com_sap_developers_ims_tutorials_drafts'); + }); +}); + +describe('isHanaKind', () => { + it('returns true when cds.db.options.kind is hana', () => { + expect(isHanaKind({ db: { options: { kind: 'hana' } } })).toBe(true); + }); + + it('returns false for sqlite', () => { + expect(isHanaKind({ db: { options: { kind: 'sqlite' } } })).toBe(false); + }); + + it('returns false when cds.db is undefined', () => { + expect(isHanaKind({})).toBe(false); + }); + + it('returns false when cds itself is empty-ish', () => { + expect(isHanaKind(null)).toBe(false); + expect(isHanaKind(undefined)).toBe(false); + }); +}); + +describe('checkDraftCascadeConstraints', () => { + it('returns ok:true when all DRAFT_TABLES have a cascade constraint', async () => { + const allRows = DRAFT_TABLES.map(t => ({ TABLE_NAME: t.toUpperCase() })); + const result = await checkDraftCascadeConstraints(async () => allRows); + expect(result.ok).toBe(true); + expect(result.missing).toHaveLength(0); + expect(result.found).toHaveLength(DRAFT_TABLES.length); + expect(result.error).toBeUndefined(); + }); + + it('returns ok:false when no constraints exist', async () => { + const result = await checkDraftCascadeConstraints(async () => []); + expect(result.ok).toBe(false); + expect(result.found).toHaveLength(0); + expect(result.missing).toHaveLength(DRAFT_TABLES.length); + }); + + it('returns ok:false and lists only missing tables when partial', async () => { + const partial = [{ TABLE_NAME: DRAFT_TABLES[0].toUpperCase() }]; + const result = await checkDraftCascadeConstraints(async () => partial); + expect(result.ok).toBe(false); + expect(result.found).toHaveLength(1); + expect(result.found[0]).toBe(DRAFT_TABLES[0]); + expect(result.missing).toHaveLength(DRAFT_TABLES.length - 1); + expect(result.missing).not.toContain(DRAFT_TABLES[0]); + }); + + it('handles case-insensitive TABLE_NAME matching', async () => { + // HANA returns uppercase; we store lowercase — ensure the comparison works + const rows = DRAFT_TABLES.map(t => ({ TABLE_NAME: t.toUpperCase() })); + const result = await checkDraftCascadeConstraints(async () => rows); + expect(result.ok).toBe(true); + }); + + it('returns ok:false with error property when dbRun throws (fail-open shape)', async () => { + const result = await checkDraftCascadeConstraints(async () => { throw new Error('HANA gone'); }); + expect(result.ok).toBe(false); + expect(result.error).toBe('HANA gone'); + expect(result.found).toHaveLength(0); + expect(result.missing).toHaveLength(DRAFT_TABLES.length); + }); + + it('treats null/undefined rows result as empty (no crash)', async () => { + const result = await checkDraftCascadeConstraints(async () => null); + expect(result.ok).toBe(false); + expect(result.found).toHaveLength(0); + }); +}); + +describe('wireDraftIntegrityPreflight sentinel', () => { + let dbRunCalls = 0; + + const makeFakeCds = () => ({ + db: { + options: { kind: 'hana' }, + run: async () => { dbRunCalls++; return []; }, + }, + on: (event, fn) => { if (event === 'served') void fn(); }, + log: () => ({ warn: () => {}, info: () => {} }), + }); + + beforeEach(() => { + dbRunCalls = 0; + delete globalThis.__draftIntegrityPreflightRegistered; + }); + afterEach(() => { + delete globalThis.__draftIntegrityPreflightRegistered; + }); + + it('registers only once when called twice (globalThis sentinel)', async () => { + const fakeCds = makeFakeCds(); + wireDraftIntegrityPreflight(fakeCds); + wireDraftIntegrityPreflight(fakeCds); + // One microtask tick to let async handler settle + await new Promise(r => setTimeout(r, 0)); + expect(dbRunCalls).toBeLessThanOrEqual(1); + }); + + it('skips the DB query entirely when kind is not hana', async () => { + const fakeCds = makeFakeCds(); + fakeCds.db.options.kind = 'sqlite'; + wireDraftIntegrityPreflight(fakeCds); + await new Promise(r => setTimeout(r, 0)); + expect(dbRunCalls).toBe(0); + }); +}); diff --git a/test/unit/puzzle-grid-templates.test.js b/test/unit/puzzle-grid-templates.test.js index b266b8238..a4743c824 100644 --- a/test/unit/puzzle-grid-templates.test.js +++ b/test/unit/puzzle-grid-templates.test.js @@ -33,6 +33,10 @@ describe('AdminService.GridTemplates', () => { expect([200, 201]).toContain(activateRes.status); expect(activateRes.data.IsActiveEntity).toBe(true); + // Under cds.fiori.draft_admin_integrity (CAP 10.2) a residual draft can + // linger after activation on SQLite and blocks the active delete with + // "a draft exists" — discard any leftover draft first, then delete active. + await project.delete(`/admin/GridTemplates(ID=${id},IsActiveEntity=false)`, ADMIN_AUTH).catch(() => {}); const delRes = await project.delete( `/admin/GridTemplates(ID=${id},IsActiveEntity=true)`, ADMIN_AUTH