From 561060aeee5cd6fe11bd27bbc3c0797effdc4e3c Mon Sep 17 00:00:00 2001 From: "mwesterweel@hotmail.com" Date: Mon, 30 Mar 2026 15:38:20 +0200 Subject: [PATCH 1/7] =?UTF-8?q?feat:=20HWW=202.0=20=E2=80=94=20employee=20?= =?UTF-8?q?handbook=20restructure,=20i18n=20NL,=20ISO=20pages,=20Algolia?= =?UTF-8?q?=20search?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Dutch (NL) locale with full translations for all pages; language selector in navbar - Restructure WayOfWork section as compact HWW core: mission, values, org, workflow, releases, vacancies, contributing - Add ISO & Quality section: iso-intro, incident-reporting, security (external), quality-policy and security-policy (draft, pending management approval) - Rewrite CONTRIBUTING.md and SECURITY.md to industry standards (DCO, CVSSv3, safe harbor, conventional commits) - Include contributing and security as pages in the docs site - Add Algolia DocSearch with contextual search and crawler reindex trigger in CI - Remove stub/marketing pages: Products/*, Diagrams/*, knowledge/*, WayOfWork/competences, join - Fix sidebar to use explicit doc IDs; translate sidebar category labels via i18n/nl/current.json - Add caution admonition on organisation.md (outdated, flagged for management review) Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/documentation.yml | 8 + CONTRIBUTING.md | 348 +- SECURITY.md | 123 +- website/docs/Diagrams/Organisation.puml | 110 - website/docs/Diagrams/Organisation.svg | 1 - website/docs/Diagrams/Products.puml | 43 - website/docs/ISO/incident-reporting.md | 75 + website/docs/ISO/intro.md | 37 +- website/docs/ISO/quality-policy.md | 54 + website/docs/ISO/security-policy.md | 73 + website/docs/ISO/security.md | 118 + website/docs/Intro.md | 2 +- website/docs/Products/Components.md | 111 - website/docs/Products/Consultancy.md | 77 - website/docs/Products/Intro.md | 60 - website/docs/Products/Market.md | 1 - website/docs/Products/Partners.md | 1 - website/docs/Products/Pricing.md | 78 - .../Products/Projects/InnovatieProjecten.md | 1 - website/docs/Products/Projects/Nextcon.md | 128 - website/docs/Products/Services.md | 83 - website/docs/Products/Training.md | 79 - website/docs/Products/overview.md | 22 + website/docs/WayOfWork/Issue_flow.md | 8 + website/docs/WayOfWork/Vacancies.md | 8 + website/docs/WayOfWork/competences.md | 1 - website/docs/WayOfWork/contributing.md | 151 + website/docs/WayOfWork/intro.md | 50 +- website/docs/WayOfWork/join.md | 76 - website/docs/WayOfWork/organisation.md | 20 +- website/docs/WayOfWork/release-process.md | 11 +- website/docs/knowledge/intro.md | 1 - website/docs/knowledge/nextcloudHosting | 1 - website/docusaurus.config.js | 13 +- .../current.json | 18 + .../current/ISO/.gitkeep | 0 .../current/ISO/incident-reporting.md | 75 + .../current/ISO/intro.md | 29 + .../current/ISO/quality-policy.md | 48 + .../current/ISO/security-policy.md | 65 + .../current/ISO/security.md | 118 + .../current/Intro.md | 125 + .../current/Products/.gitkeep | 0 .../current/Products/overview.md | 22 + .../current/WayOfWork/.gitkeep | 0 .../current/WayOfWork/Issue_flow.md | 74 + .../current/WayOfWork/Vacancies.md | 31 + .../current/WayOfWork/contributing.md | 151 + .../current/WayOfWork/intro.md | 43 + .../current/WayOfWork/organisation.md | 105 + .../current/WayOfWork/release-process.md | 45 + website/package-lock.json | 14311 ++++++++++++++++ website/sidebars.js | 52 +- 53 files changed, 16172 insertions(+), 1113 deletions(-) delete mode 100644 website/docs/Diagrams/Organisation.puml delete mode 100644 website/docs/Diagrams/Organisation.svg delete mode 100644 website/docs/Diagrams/Products.puml create mode 100644 website/docs/ISO/incident-reporting.md create mode 100644 website/docs/ISO/quality-policy.md create mode 100644 website/docs/ISO/security-policy.md create mode 100644 website/docs/ISO/security.md delete mode 100644 website/docs/Products/Components.md delete mode 100644 website/docs/Products/Consultancy.md delete mode 100644 website/docs/Products/Intro.md delete mode 100644 website/docs/Products/Market.md delete mode 100644 website/docs/Products/Partners.md delete mode 100644 website/docs/Products/Pricing.md delete mode 100644 website/docs/Products/Projects/InnovatieProjecten.md delete mode 100644 website/docs/Products/Projects/Nextcon.md delete mode 100644 website/docs/Products/Services.md delete mode 100644 website/docs/Products/Training.md create mode 100644 website/docs/Products/overview.md delete mode 100644 website/docs/WayOfWork/competences.md create mode 100644 website/docs/WayOfWork/contributing.md delete mode 100644 website/docs/WayOfWork/join.md delete mode 100644 website/docs/knowledge/intro.md delete mode 100644 website/docs/knowledge/nextcloudHosting create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current.json create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/.gitkeep create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/intro.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/Products/.gitkeep create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/Products/overview.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/.gitkeep create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Issue_flow.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Vacancies.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/contributing.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/intro.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/organisation.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/release-process.md create mode 100644 website/package-lock.json diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index ee6199e..6a25acf 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -72,3 +72,11 @@ jobs: run: | git fetch origin gh-pages echo "Deployment completed. Latest commit: $(git rev-parse origin/gh-pages)" + + - name: Trigger Algolia crawler reindex + continue-on-error: true + run: | + curl -X POST \ + --fail \ + --user "${{ secrets.ALGOLIA_CRAWLER_ID }}:${{ secrets.ALGOLIA_CRAWLER_SECRET }}" \ + "https://crawler.algolia.com/api/1/crawlers/${{ secrets.ALGOLIA_CRAWLER_ID }}/reindex" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 421b1d4..da55cc1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,260 +1,232 @@ -# Contributing to Conduction Nextcloud Apps +# Contributing to Conduction -Thank you for considering contributing to our projects! It's people like you that make open source such a great community. +Thank you for your interest in contributing! Conduction builds open-source components for digital government infrastructure. Every contribution β€” code, documentation, translation, issue report, or idea β€” helps us move toward our goal: ensuring every resident of the Netherlands automatically receives the government services they are entitled to. + +This document applies to all repositories under the [ConductionNL](https://github.com/ConductionNL) organization. + +--- ## Code of Conduct -This project and everyone participating in it is governed by our [Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. +This project is governed by our [Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [info@conduction.nl](mailto:info@conduction.nl). -## How Can I Contribute? +--- -### Reporting Bugs +## Ways to Contribute -Before creating bug reports, please check the issue list as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible: +You don't need to write code to contribute: -* Use a clear and descriptive title -* Describe the exact steps which reproduce the problem -* Provide specific examples to demonstrate the steps -* Describe the behavior you observed after following the steps -* Explain which behavior you expected to see instead and why -* Include screenshots if possible +| Contribution type | Where | +|---|---| +| πŸ› Report a bug | GitHub Issues | +| πŸ’‘ Suggest a feature | GitHub Issues | +| πŸ“– Improve documentation | PR to the relevant repo | +| 🌐 Translate content | PR to `.github` (docs site) | +| πŸ” Review a pull request | GitHub PR review | +| πŸ’¬ Answer questions | GitHub Discussions / Issues | +| πŸ”’ Report a security issue | See [SECURITY.md](SECURITY.md) | -### Suggesting Enhancements +--- -Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, please include: +## First-Time Contributors -* Use a clear and descriptive title -* Provide a step-by-step description of the suggested enhancement -* Describe the current behavior and explain which behavior you expected to see instead -* Explain why this enhancement would be useful +New to open source or to Conduction? Look for issues labeled [`good first issue`](https://github.com/search?q=org%3AConductionNL+label%3A%22good+first+issue%22&type=issues) β€” these are scoped to be approachable without deep context. -### Pull Requests +If you're unsure where to start, open a discussion or leave a comment on an issue you're interested in. We'll help you get oriented. -* Fork the repo and create your branch from `development` -* If you've added code that should be tested, add tests -* If you've changed APIs, update the documentation -* Ensure the test suite passes -* Make sure your code lints (`composer cs:check`) -* Create a pull request! +--- -## Branch Protection & Git Flow +## Reporting Bugs -We use a structured branching model to ensure stability across environments. All branches are protected via **organization-wide rulesets** on the ConductionNL GitHub organization β€” direct pushes are not allowed. Every change flows through a pull request with peer review and CI checks. +Before filing a bug report, check existing issues β€” it may already be reported. When creating a report, include: -```mermaid -graph LR - F["feature/*\nbugfix/*"] -->|"PR + 1 review\n+ Quality CI βœ“"| D[development] - D -->|"PR + 1 review\n+ Quality CI βœ“"| B[beta] - B -->|"PR + 2 reviews\n+ Branch CI βœ“"| M[main] - H["hotfix/*"] -->|"PR + 1 review\n+ Quality CI βœ“"| B - H -->|"PR + 2 reviews\n+ Branch CI βœ“"| M +- A clear, descriptive title +- Exact steps to reproduce the problem +- Expected vs actual behavior +- Screenshots, logs, or error messages where relevant +- Version of the app and Nextcloud (if applicable) - style F fill:#e1f5fe - style D fill:#fff9c4 - style B fill:#ffe0b2 - style M fill:#c8e6c9 - style H fill:#ffcdd2 -``` +**For security issues, do NOT open a public issue. See [SECURITY.md](SECURITY.md).** + +--- + +## Suggesting Enhancements + +Enhancement suggestions are tracked as GitHub Issues. Include: + +- A clear, descriptive title +- The problem you are trying to solve (not just the solution) +- Current behavior vs desired behavior +- Why this would be useful to others -### Branch Rules +--- -These rules are enforced organization-wide across all ConductionNL repositories. They cannot be overridden at the repository level. +## Contributing Code -| Target | Allowed Sources | Reviews | Required CI Checks | -|--------|----------------|---------|-------------------| -| `development` | `feature/*`, `bugfix/*` | 1 approving review | Quality CI (`lint-check`) | -| `beta` | `development`, `hotfix/*`, `main` (backport) | 1 approving review | Quality CI (`lint-check`) | -| `main` | `beta`, `hotfix/*` | 2 approving reviews | Branch Protection CI (`check-branch`, `lint-check`) | +### External contributors (fork & PR) -### Organization-Wide Rulesets +1. Fork the repository +2. Create a branch from `development`: `git checkout -b feature/your-feature-name` +3. Make your changes and commit using [Conventional Commits](#commit-messages) +4. Sign off your commits (see [DCO](#developer-certificate-of-origin-dco)) +5. Push to your fork and open a PR targeting the `development` branch +6. Wait for CI to pass and request a review -Branch protection is managed at the **organization level**, not per-repository. This ensures consistent enforcement across all Conduction apps. The three rulesets are: +### Conduction team members (direct branch) -1. **Development Branch Protection** β€” Enforces peer review and Quality CI for all feature work entering `development` -2. **Beta Branch Protection** β€” Same requirements as development, gates the path to beta releases -3. **Main Branch Protection** β€” Stricter: requires 2 reviewers and branch-source validation before stable release +1. Create a branch from `development`: `feature/*`, `bugfix/*` +2. Open a PR to `development` when ready -All rulesets also enforce: -- No force pushes -- No branch deletion -- Stale reviews dismissed on new pushes -- All review threads must be resolved before merge +### PR checklist -### How It Works +Before opening a PR: + +- [ ] CI quality checks pass locally (`composer cs:check`, `composer phpstan`, `npm run lint`) +- [ ] New code has tests where applicable +- [ ] Documentation updated if behavior changes +- [ ] PR labeled with `major`, `minor`, or `patch` (controls version bump) +- [ ] DCO sign-off on all commits (`git commit -s`) + +--- + +## Branch Model + +All branches are protected via organization-wide rulesets. Direct pushes are not allowed. Every change flows through a pull request with peer review and CI. + +``` +feature/* ──┐ +bugfix/* ──┼──→ development ──→ beta ──→ main +hotfix/* β”€β”€β”˜ ↑ + └── (hotfix can target beta or main directly) +``` -1. **Feature work** happens on `feature/*` or `bugfix/*` branches created from `development` -2. **PRs to `development`** require 1 approving peer review and the Quality CI workflow must pass -3. **When ready for beta release**, a developer creates a PR from `development` to `beta` β€” same review + CI requirements -4. **Merging to `beta`** triggers an automatic beta release to the Nextcloud App Store -5. **When ready for stable release**, a developer creates a PR from `beta` to `main` β€” requires 2 approving reviews and Branch Protection CI -6. **Merging to `main`** triggers an automatic stable release to the Nextcloud App Store -7. **Hotfixes** can target both `beta` and `main` directly for urgent patches via PR (same review requirements apply) -8. **Branches are automatically deleted** after their PR is merged +| Target | Allowed sources | Reviews required | CI required | +|---|---|---|---| +| `development` | `feature/*`, `bugfix/*` | 1 | Quality CI | +| `beta` | `development`, `hotfix/*` | 1 | Quality CI | +| `main` | `beta`, `hotfix/*` | 2 | Branch Protection CI | -> **Important:** There are no automatic merges or auto-created PRs between branches. Every promotion (development -> beta -> main) requires a deliberate pull request created by a developer, with peer review and CI passing before merge is allowed. +All rulesets enforce: no force pushes, no branch deletion, stale reviews dismissed on new pushes, all threads resolved before merge. + +--- ## Quality Workflow -Every pull request triggers our automated quality pipeline. **All checks must pass before a PR can be merged.** This ensures that no code enters `development`, `beta`, or `main` without meeting our quality standards. +Every PR triggers automated quality checks. **All must pass before merge.** -### PHP Quality Checks +### PHP -| Check | Tool | What It Does | -|-------|------|-------------| -| **Lint** | `php -l` | Syntax validation β€” catches parse errors | -| **Code Style** | PHPCS | Enforces coding standards (PSR-12 + custom rules) | -| **Static Analysis** | PHPStan (level 5) | Type checking, undefined methods, dead code | -| **Static Analysis** | Psalm | Additional type inference and security analysis | -| **Mess Detection** | PHPMD | Complexity, naming, unused code, design problems | -| **Metrics** | phpmetrics | Maintainability index, coupling, cyclomatic complexity | +| Check | Tool | +|---|---| +| Syntax | `php -l` | +| Code style | PHPCS (PSR-12) | +| Static analysis | PHPStan (level 5) + Psalm | +| Mess detection | PHPMD | -### Frontend Quality Checks +### Frontend -| Check | Tool | What It Does | -|-------|------|-------------| -| **JavaScript** | ESLint | Enforces JS/Vue coding standards | -| **CSS** | Stylelint | Enforces CSS/SCSS coding standards | +| Check | Tool | +|---|---| +| JavaScript/Vue | ESLint | +| CSS/SCSS | Stylelint | -### Dependency Checks +### Dependencies -| Check | What It Does | -|-------|-------------| -| **License (npm + composer)** | Ensures all dependencies use approved open-source licenses | -| **Security (npm + composer)** | Checks for known vulnerabilities in dependencies | +- License compliance (npm + composer) +- Known vulnerability scan (npm audit + composer audit) -### Running Quality Checks Locally +**Run locally:** ```bash # PHP -composer cs:check # PHPCS code style -composer cs:fix # Auto-fix code style -composer phpstan # PHPStan static analysis -composer psalm # Psalm static analysis -composer phpmd # PHPMD mess detection +composer cs:check +composer cs:fix +composer phpstan +composer psalm +composer phpmd # Frontend -npm run lint # ESLint -npx stylelint "src/**/*.{css,scss,vue}" # Stylelint -``` - -## App Store Release Process - -Releases to the Nextcloud App Store are fully automated via GitHub Actions. They are triggered by merging PRs into `beta` or `main`. Version numbers are calculated automatically from PR labels. - -```mermaid -graph TD - subgraph "Beta Release" - D[development] -->|"Developer creates PR"| BP1{"Quality CI\npasses?"} - BP1 -->|"Yes"| BM["Merge PR to beta"] - BP1 -->|"No"| BF["Fix issues\nre-push"] - BF --> BP1 - BM --> BT{Version Bump\nfrom PR label} - BT -->|"label: major"| BV1["v2.0.0-beta.20260319"] - BT -->|"label: minor"| BV2["v1.1.0-beta.20260319"] - BT -->|"label: patch\n(default)"| BV3["v1.0.1-beta.20260319"] - BV1 & BV2 & BV3 --> BB["Build & Package"] - BB --> BU["Upload to App Store\n(nightly channel)"] - BB --> BG["Create GitHub\npre-release"] - end - - subgraph "Stable Release" - B2[beta] -->|"Developer creates PR"| SP1{"Branch Protection\nCI passes?"} - SP1 -->|"Yes"| SM["Merge PR to main"] - SP1 -->|"No"| SF["Fix issues"] - SF --> SP1 - SM --> ST{Version Bump\nfrom PR label} - ST -->|"from PR labels"| SV["v1.1.0"] - SV --> SB["Build & Package"] - SB --> SU["Upload to App Store\n(stable channel)"] - SB --> SG["Create GitHub release\nwith changelog"] - end - - style D fill:#fff9c4 - style BM fill:#ffe0b2 - style SM fill:#c8e6c9 - style BU fill:#e1bee7 - style SU fill:#e1bee7 - style BF fill:#ffcdd2 - style SF fill:#ffcdd2 +npm run lint +npx stylelint "src/**/*.{css,scss,vue}" ``` -### Version Labeling +--- -Add a label to your PR to control the version bump: +## Commit Messages -| Label | Version Change | When to Use | -|-------|---------------|-------------| -| `major` | `1.0.0` β†’ `2.0.0` | Breaking changes, major redesigns | -| `minor` | `1.0.0` β†’ `1.1.0` | New features, non-breaking additions | -| `patch` (default) | `1.0.0` β†’ `1.0.1` | Bug fixes, small improvements | +We use [Conventional Commits](https://www.conventionalcommits.org/): -### Release Artifacts +``` +feat: add proactive service matching +fix: resolve null pointer in namespace parser +docs: update contributing guide +chore: upgrade PHPStan to v2 +refactor: extract classifier into own class +``` -Each release automatically: -1. Bumps the version in `appinfo/info.xml` -2. Builds the app (composer install, npm build) -3. Creates a signed tarball -4. Uploads to the [Nextcloud App Store](https://apps.nextcloud.com) -5. Creates a GitHub release with auto-generated changelog +- Use the **imperative mood** ("add" not "added") +- Keep the first line under 72 characters +- Reference issues with `Closes #123` in the body where applicable -## Documentation Release Process +--- -Documentation is built with [Docusaurus](https://docusaurus.io/) and deployed to GitHub Pages. +## Developer Certificate of Origin (DCO) -1. Documentation source lives in the `docs/` (or `docusaurus/`) folder on any branch -2. Push or merge to the `documentation` branch triggers the build -3. Docusaurus builds the static site -4. The site is deployed to GitHub Pages with a custom domain (e.g., `openregister.app`) +All contributions must be signed off. This certifies that you wrote the code or have the right to submit it: -Each app has its own documentation site β€” see the app's README for its URL. +```bash +git commit -s -m "feat: your commit message" +``` -## Development Process +This adds a `Signed-off-by: Your Name ` trailer. By signing off, you agree to the [Developer Certificate of Origin](https://developercertificate.org/). -1. Create a feature request issue describing your proposed changes -2. Fork the repository -3. Create a new branch: `git checkout -b feature/[issue-number]/[feature-name]` -4. Make your changes -5. Run quality checks: `composer cs:check` and `composer phpstan` -6. Push to your fork and open a Pull Request -7. Wait for Quality CI to pass, address any failures -8. Request review from a team member +If you forget, amend your last commit: `git commit --amend -s` -### Git Commit Messages +--- -We use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/): +## Release Process -* `feat:` for new features -* `fix:` for bug fixes -* `chore:` for maintenance tasks -* `docs:` for documentation changes -* `refactor:` for code refactoring -* Use the present tense and imperative mood -* Limit the first line to 72 characters +Releases are fully automated via GitHub Actions on merge to `beta` (nightly) or `main` (stable). Version numbers are calculated from PR labels: -### PR Labels for Changelogs +| Label | Effect | +|---|---| +| `major` | `1.0.0` β†’ `2.0.0` | +| `minor` | `1.0.0` β†’ `1.1.0` | +| `patch` (default) | `1.0.0` β†’ `1.0.1` | -Add labels to categorize your PR in the automated changelog: +See [Release Process documentation](https://docs.conduction.nl/docs/WayOfWork/release-process) for full details. -* **`feature`** / **`enhancement`** β€” New features (appears under "Added") -* **`bug`** / **`fix`** β€” Bug fixes (appears under "Fixed") -* **`docs`** β€” Documentation updates -* **`refactor`** / **`chore`** β€” Code improvements (appears under "Changed") -* **`skip-changelog`** β€” Exclude from changelog +--- ## Development Setup 1. Install PHP 8.1+ and Node.js 20+ 2. Install Composer -3. Clone the repository -4. Run `composer install` and `npm install` +3. Clone the repository (or your fork) +4. Run `composer install && npm install` 5. Configure your [Nextcloud development environment](https://github.com/ConductionNL/nextcloud-docker-dev) +--- + +## Documentation + +Documentation source lives in `website/` (this repo) and is published to [docs.conduction.nl](https://docs.conduction.nl). + +To contribute to the docs: +1. Edit the relevant Markdown files under `website/docs/` +2. For Dutch translations, edit the corresponding file under `website/i18n/nl/` +3. Test locally: `cd website && npm install && npm run start` + +--- + ## Community -* Join the [Common Ground Slack](https://commonground.nl) -* Follow us on [X](https://x.com/conduction_nl) -* Read our updates on [LinkedIn](https://www.linkedin.com/company/conduction/) +- [Common Ground Slack](https://commonground.nl) +- [LinkedIn](https://www.linkedin.com/company/conduction/) +- [GitHub Discussions](https://github.com/orgs/ConductionNL/discussions) + +--- ## License -By contributing, you agree that your contributions will be licensed under the same license as the project (EUPL-1.2 unless stated otherwise). +By contributing, you agree that your contributions will be licensed under the same license as the project (EUPL-1.2 unless stated otherwise in the repository). diff --git a/SECURITY.md b/SECURITY.md index c1f4b04..4b69598 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,34 +1,127 @@ # Security Policy -## Reporting a Vulnerability +This security policy applies to all repositories under the [ConductionNL](https://github.com/ConductionNL) organization. -If you discover a security vulnerability in any Conduction Nextcloud app, please report it responsibly. +--- + +## Reporting a Vulnerability **Do NOT open a public GitHub issue for security vulnerabilities.** -Instead, please email us at: **security@conduction.nl** +We support two reporting channels: + +### 1. GitHub Private Vulnerability Reporting (preferred) + +Use GitHub's built-in private reporting feature directly on the affected repository: + +> **Repository β†’ Security tab β†’ "Report a vulnerability"** + +This creates an end-to-end encrypted security advisory visible only to maintainers. It is the fastest path to coordinated disclosure and a CVE (if warranted). + +### 2. Email + +Send your report to **security@conduction.nl**. -Include the following in your report: +For sensitive communications, request our PGP key via email. -* Description of the vulnerability -* Steps to reproduce the issue -* Potential impact -* Suggested fix (if any) +--- + +## What to Include + +A good vulnerability report contains: + +- **Description** β€” what is vulnerable and why +- **Reproduction steps** β€” minimal steps to trigger the issue +- **Impact** β€” what an attacker could achieve (data access, privilege escalation, etc.) +- **Affected versions** β€” which releases are affected +- **Suggested fix** β€” optional, but appreciated + +--- ## Response Timeline -* **Acknowledgement:** Within 48 hours of receiving your report -* **Initial assessment:** Within 1 week -* **Fix and disclosure:** We aim to resolve critical vulnerabilities within 30 days +| Milestone | Target | +|---|---| +| Acknowledgement | Within **48 hours** | +| Initial triage and severity assessment | Within **5 business days** | +| Fix for critical / high severity | Within **30 days** | +| Fix for medium severity | Within **90 days** | +| Public disclosure | After fix is released, or at **90 days** from report β€” whichever comes first | -## Supported Versions +We follow coordinated disclosure: we will work with you on timing and won't disclose publicly before a fix is available, unless the 90-day window expires. -We provide security updates for the latest stable release of each app. Older versions may not receive security patches. +--- + +## Severity Classification + +We use [CVSSv3](https://www.first.org/cvss/calculator/3.1) to classify severity: + +| Severity | CVSS Score | Response | +|---|---|---| +| **Critical** | 9.0–10.0 | Immediate β€” fix within 14 days | +| **High** | 7.0–8.9 | Fix within 30 days | +| **Medium** | 4.0–6.9 | Fix within 90 days | +| **Low** | 0.1–3.9 | Fixed in next scheduled release | + +--- ## Scope -This security policy applies to all repositories under the [ConductionNL](https://github.com/ConductionNL) organization. +### In scope + +- All source code in repositories under [github.com/ConductionNL](https://github.com/ConductionNL) +- APIs and integrations exposed by our apps +- Authentication and authorization logic +- Data handling and privacy controls +- Dependencies with known CVEs that we have not yet patched + +### Out of scope + +- Vulnerabilities in Nextcloud core (report to [Nextcloud](https://nextcloud.com/security/)) +- Vulnerabilities in third-party dependencies (report upstream, then inform us) +- Social engineering or phishing attacks against Conduction staff +- Physical security +- Issues requiring unlikely or unrealistic user actions +- Denial-of-service attacks against our hosted infrastructure +- Issues already publicly known + +--- + +## Supported Versions + +We provide security updates for the **latest stable release** of each app. Older versions do not receive security patches unless explicitly stated in the repository. + +--- + +## Safe Harbor + +Conduction will not pursue legal action against security researchers who: + +- Report vulnerabilities through this policy in good faith +- Avoid accessing, modifying, or deleting data beyond what is necessary to demonstrate the vulnerability +- Do not disrupt production services or degrade user experience +- Do not exploit the vulnerability beyond what is needed to confirm its existence +- Give us reasonable time to address the issue before public disclosure + +We consider good-faith security research a public good and will work with you rather than against you. + +--- + +## Bug Bounty + +Conduction does not currently operate a paid bug bounty program. We do recognize contributors: + +- Public credit in release notes (with your permission) +- Acknowledgement in the GitHub Security Advisory + +--- ## Recognition -We appreciate responsible disclosure and will credit reporters (with permission) in our release notes. +We appreciate responsible disclosure. Contributors who report valid vulnerabilities will be credited in our security advisories and release notes (with permission). + +--- + +## Internal Incident Reporting + +Conduction employees: see the [Incident Reporting](https://docs.conduction.nl/docs/ISO/incident-reporting) procedure on our internal documentation site. diff --git a/website/docs/Diagrams/Organisation.puml b/website/docs/Diagrams/Organisation.puml deleted file mode 100644 index eec316b..0000000 --- a/website/docs/Diagrams/Organisation.puml +++ /dev/null @@ -1,110 +0,0 @@ -@startuml -title Organisatie Structuur -footer: OpenWoo.app -header: OpenWoo.app - -skinparam defaultFontName Arial -skinparam nodesep 50 -skinparam ranksep 50 -skinparam shadowing false -skinparam linetype ortho - -' Shareholders -frame "Shareholders" { - component "Shareholder 1 B.V." as SH1 #87CEEB - component "Shareholder 2 B.V." as SH2 #87CEEB - component "Shareholder 3 B.V." as SH3 #87CEEB -} - -' Board -frame "Board" { - component "Algemeen Directeur" as AD #98FB98 -} - -' Leadership Team -frame "Leadership Team" as LT { - component "Team Lead HR & Quality" as TLHQ #FFA07A - component "Team Lead Finance" as TLF #FFA07A - component "Team Lead Operations" as TLO #FFA07A - component "Team Lead Development" as TLD #FFA07A - component "Team Lead Sales & Marketing" as TLSM #FFA07A - component "Team Lead R&I" as TLRI #FFA07A -} - -' Teams -frame "Teams" { - ' HR & Quality Team - frame "HR & Quality" { - component "Team Lead HR & Quality" as HRL #FFA07A - component "Quality Manager" as QM #FFE4B5 - component "Office Support" as OS #FFE4B5 - } - - ' Finance Team - frame "Finance" { - component "Team Lead Finance" as FL #FFA07A - component "Financial Controller" as FC #FFE4B5 - } - - ' Operations Team - frame "Operations" { - component "Team Lead Operations" as OL #FFA07A - component "Support Engineers" as SE #FFE4B5 - component "Consultants" as CON #FFE4B5 - } - - ' Development Team - frame "Development" { - component "Team Lead Development" as DL #FFA07A - component "Product Owner" as PO #FFE4B5 - component "Lead Developer" as LD #FFE4B5 - component "Developers" as DEV #FFE4B5 - } - - ' Sales & Marketing Team - frame "Sales & Marketing" { - component "Team Lead Sales & Marketing"" as CL #FFA07A - component "Sales Support" as SS #FFE4B5 - component "Marketing Communication" as MC #FFE4B5 - } - - ' Research & Innovation Team - frame "R&I" { - component "Team Lead R&I" as RDL #FFA07A - component "Solution Architects" as SA #FFE4B5 - } -} - -' Relationships -Shareholders -[#gray]-> Board -Board -[#gray]down-> LT - -' HR & Quality relationships -TLHQ -[#gray]down-> HRL -HRL -[#gray]down-> QM -HRL -[#gray]down-> OS -' Finance relationships -TLF -[#gray]down-> FL -FL -[#gray]down-> FC - -' Operations relationships -TLO -[#gray]down-> OL -OL -[#gray]down-> SE -OL -[#gray]down-> CON - -' Development relationships -TLD -[#gray]down-> DL -DL -[#gray]down-> PO -DL -[#gray]down-> LD -LD -[#gray]down-> DEV - -' Sales & Marketing relationships -TLSM -[#gray]down-> CL -CL -[#gray]down-> SS -CL -[#gray]down-> MC - -' R&I relationships -TLRI -[#gray]down-> RDL -RDL -[#gray]down-> SA - -@enduml diff --git a/website/docs/Diagrams/Organisation.svg b/website/docs/Diagrams/Organisation.svg deleted file mode 100644 index 185515b..0000000 --- a/website/docs/Diagrams/Organisation.svg +++ /dev/null @@ -1 +0,0 @@ -Organisatie StructuurOpenWoo.appOrganisatie StructuurShareholdersBoardLeadership TeamTeamsHR & QualityFinanceOperationsDevelopmentSales & MarketingR&IShareholder 1 B.V.Shareholder 2 B.V.Shareholder 3 B.V.Algemeen DirecteurTeam Lead HR & QualityTeam Lead FinanceTeam Lead OperationsTeam Lead DevelopmentTeam Lead Sales & MarketingTeam Lead R&ITeam Lead HR & QualityQuality ManagerOffice SupportTeam Lead FinanceFinancial ControllerTeam Lead OperationsSupport EngineersConsultantsTeam Lead DevelopmentProduct OwnerLead DeveloperDevelopersTeam Lead Sales & Marketing"Sales SupportMarketing CommunicationTeam Lead R&ISolution ArchitectsOpenWoo.app \ No newline at end of file diff --git a/website/docs/Diagrams/Products.puml b/website/docs/Diagrams/Products.puml deleted file mode 100644 index eb2ce8e..0000000 --- a/website/docs/Diagrams/Products.puml +++ /dev/null @@ -1,43 +0,0 @@ -@startuml -title Basis Architectuur -footer: OpenWoo.app -header: OpenWoo.app - - -skinparam defaultFontName Arial -skinparam nodesep 50 -skinparam ranksep 50 -skinparam shadowing false - -skinparam linetype ortho - -' Applications -frame "Applications" { - component "Open Catalogi" as OC #4376FC - component "Zaak Afhandel App" as ZAA #4376FC - component "Klant Contact App" as KCA #4376FC - component "Larping" as LA #4376FC -} - -' Core Components -frame "Core Components" { - component "Open Connector" as OCon #4376FC - component "Open Register" as OR #4376FC -} - - -' Services -frame "Services" { - component "DocuDesk" as DD #4376FC -} - -OC -left-> DD - -OC -down-> OR -ZAA -down-> OR -KCA -down-> OR -LA -down-> OR - -OCon -right-> OR - -@enduml diff --git a/website/docs/ISO/incident-reporting.md b/website/docs/ISO/incident-reporting.md new file mode 100644 index 0000000..5de90de --- /dev/null +++ b/website/docs/ISO/incident-reporting.md @@ -0,0 +1,75 @@ +--- +id: incident-reporting +title: Incident Reporting +sidebar_label: Incident Reporting +sidebar_position: 4 +description: How to report security incidents and quality deviations at Conduction +--- + +# Incident Reporting + +Conduction has a duty to detect, report, and learn from incidents β€” both security incidents (ISO 27001:2022 A.6.8) and quality deviations (ISO 9001:2015 Β§10.2). + +**If you suspect something is wrong, report it immediately. There is no penalty for reporting in good faith.** + +--- + +## What to Report + +### Security Incidents (ISO 27001:2022 A.6.8) + +Report any suspected or confirmed: + +- Unauthorised access to systems, accounts, or data +- Data breach or data loss (customer data, employee data, credentials) +- Malware, phishing, or social engineering attempts +- Exposure of secrets, API keys, or credentials (e.g. accidentally committed to Git) +- Loss or theft of a device with access to company systems +- Unusual or suspicious activity on any company account or system + +### Quality Deviations / Near-Misses (ISO 9001:2015 Β§10.2) + +Report any: + +- Delivered software that did not meet agreed requirements +- Process failure that could have led to customer impact +- Near-miss: something that could have gone wrong but didn't + +--- + +## How to Report + +| Channel | When to use | +|---|---| +| **Slack `#incidents`** | First point of contact for all incidents β€” immediate notification | +| **Email: security@conduction.nl** | For sensitive incidents where Slack is not appropriate | +| **GitHub Issue** (private repo) | For follow-up, tracking, and closure | + +**Response time expectation:** +- Security incidents: acknowledged within **4 business hours** +- Quality deviations: acknowledged within **1 business day** + +--- + +## What Happens After You Report + +1. The Quality & Safety Lead acknowledges the report +2. Severity is assessed (critical / high / medium / low) +3. Containment actions are taken if needed +4. Root cause is investigated +5. Corrective action is documented and tracked to closure +6. Lessons learned are shared with the team + +--- + +## Your Responsibilities + +- Report incidents **as soon as you discover them** β€” delay increases impact +- Do not attempt to investigate or resolve a security incident on your own before reporting +- Preserve evidence (logs, screenshots) if possible +- Cooperate with the investigation + +--- + +_ISO 27001:2022 reference: A.6.8 β€” Information security event reporting_ +_ISO 9001:2015 reference: Β§10.2 β€” Nonconformity and corrective action_ diff --git a/website/docs/ISO/intro.md b/website/docs/ISO/intro.md index d0f9977..9782de8 100644 --- a/website/docs/ISO/intro.md +++ b/website/docs/ISO/intro.md @@ -1,22 +1,29 @@ --- -id: iso +id: iso-intro title: ISO Certification at Conduction -sidebar_label: ISO Overview +sidebar_label: ISO & Quality sidebar_position: 1 -description: Learn about Conduction's commitment to quality and security through our ISO certifications and quality management system -keywords: - - ISO certification - - quality management - - information security - - ISO 9001 - - ISO 27001 - - compliance - - quality standards - - security standards - - process management - - continuous improvement +description: Overview of Conduction's ISO 9001 and ISO 27001 certifications and quality management approach --- # ISO Certification at Conduction -Welcome to Conduction's ISO documentation. Here you'll find detailed information about our quality management system, security practices, and commitment to maintaining the highest standards through our ISO certifications. \ No newline at end of file +Conduction holds active certifications for both **ISO 9001:2015** (Quality Management) and **ISO 27001:2022** (Information Security Management). + +These certifications mean that our processes, policies, and responsibilities are documented, reviewed, and audited. This section provides the relevant policy documents and procedures for employees. + +## Documents in this section + +| Document | ISO Clause | Status | +|---|---|---| +| Quality Policy | ISO 9001:2015 Β§5.2 | Pending management review β€” publishing after approval | +| Information Security Policy | ISO 27001:2022 Β§5.2 | Pending management review β€” publishing after approval | +| [Incident Reporting](incident-reporting) | ISO 27001:2022 A.6.8 / ISO 9001:2015 Β§10.2 | Active | + +## Competence Requirements + +Competence requirements per role (ISO 9001:2015 Β§7.2) are documented in the **internal HR drive**. Access is restricted to HR and management. Contact your team lead if you need to review your role's competence profile. + +## Management Review + +Our quality and security policies are subject to annual management review. Any employee can raise concerns or suggest improvements via a [GitHub Issue](https://github.com/ConductionNL/.github/issues) or directly with the Quality Manager. \ No newline at end of file diff --git a/website/docs/ISO/quality-policy.md b/website/docs/ISO/quality-policy.md new file mode 100644 index 0000000..1947679 --- /dev/null +++ b/website/docs/ISO/quality-policy.md @@ -0,0 +1,54 @@ +--- +id: quality-policy +title: Quality Policy +sidebar_label: Quality Policy +sidebar_position: 2 +draft: true +description: Conduction quality policy β€” ISO 9001:2015 Β§5.2 +--- + +# Quality Policy + +:::warning Ter managementbeoordeling / Pending management review + +Dit document is een werkversie en dient te worden goedgekeurd door het managementteam voordat het als officieel beleid geldt. + +_This document is a working draft and must be approved by the management team before it takes effect as official policy._ + +::: + +## Purpose + +Conduction is committed to delivering high-quality open-source software and services for digital government infrastructure. Our Quality Management System (QMS) is designed to consistently meet customer requirements and applicable regulatory requirements, and to enhance customer satisfaction. + +## Quality Objectives + +Conduction pursues the following quality objectives (ISO 9001:2015 Β§6.2): + +- Deliver software that meets or exceeds agreed functional requirements +- Respond to customer issues and feedback within agreed service levels +- Continuously improve our processes based on internal audits and customer feedback +- Ensure all employees understand their role in maintaining quality + +## Our Commitment + +Conduction's management commits to: + +1. **Providing resources** necessary to establish, implement, maintain, and continually improve the QMS +2. **Communicating** the importance of effective quality management and conforming to QMS requirements +3. **Ensuring** the Quality Policy is understood, implemented, and maintained at all levels of the organisation +4. **Reviewing** this policy at least annually as part of the management review cycle + +## Communication to Employees + +This policy is communicated to all employees via this documentation site. Employees are expected to understand this policy and apply its principles in their daily work. Questions or concerns can be directed to the Quality Manager or raised via a [GitHub Issue](https://github.com/ConductionNL/.github/issues). + +## Applicability + +This policy applies to all employees, contractors, and third parties acting on behalf of Conduction. + +--- + +_ISO 9001:2015 reference: Β§5.2 β€” Quality Policy_ +_Last review: pending_ +_Next review: annual management review cycle_ diff --git a/website/docs/ISO/security-policy.md b/website/docs/ISO/security-policy.md new file mode 100644 index 0000000..9e3925c --- /dev/null +++ b/website/docs/ISO/security-policy.md @@ -0,0 +1,73 @@ +--- +id: security-policy +title: Information Security Policy +sidebar_label: Security Policy +sidebar_position: 3 +draft: true +description: Conduction information security policy β€” ISO 27001:2022 Β§5.2 +--- + +# Information Security Policy + +:::warning Ter managementbeoordeling / Pending management review + +Dit document is een werkversie en dient te worden goedgekeurd door het managementteam voordat het als officieel beleid geldt. + +_This document is a working draft and must be approved by the management team before it takes effect as official policy._ + +::: + +## Purpose + +Conduction is committed to protecting the confidentiality, integrity, and availability of information it handles β€” including customer data, internal systems, and the open-source software it develops and operates. + +This policy establishes the framework for Conduction's Information Security Management System (ISMS) in accordance with ISO 27001:2022. + +## Scope + +This policy applies to: +- All information assets owned or processed by Conduction +- All employees, contractors, and third parties with access to Conduction systems +- All systems, services, and software developed and operated by Conduction + +## Security Objectives + +Conduction pursues the following information security objectives (ISO 27001:2022 Β§6.2): + +- Prevent unauthorised access to systems and data +- Ensure availability of critical systems in line with agreed service levels +- Protect customer and employee data in compliance with applicable regulations (including AVG/GDPR) +- Detect, respond to, and learn from security incidents +- Continuously improve security controls based on risk assessments and audits + +## Roles and Responsibilities + +| Role | Responsibility | +|---|---| +| Management | Approve and resource the ISMS; review annually | +| Quality & Safety Lead | Own and maintain the ISMS; coordinate audits and reviews | +| All employees | Follow security procedures; report incidents and suspected incidents promptly | +| Development Lead | Ensure secure development practices are applied in all software delivery | + +See [organisation](../WayOfWork/organisation) for full role descriptions. + +## Key Controls + +The following controls are in effect (ISO 27001:2022 Annex A): + +- **Access control** (A.5.15): Access to systems is role-based and granted on a need-to-know basis +- **Acceptable use** (A.5.10): Company systems and data are used only for authorised purposes +- **Cryptography** (A.8.24): Sensitive data in transit and at rest is encrypted +- **Supplier relationships** (A.5.19): Third-party suppliers with access to data are assessed and contractually bound +- **Incident management** (A.6.8): All suspected incidents must be reported β€” see [Incident Reporting](incident-reporting) +- **Business continuity** (A.5.29): Critical services have documented recovery procedures + +## Communication to Employees + +This policy is communicated to all employees via this documentation site and during onboarding. Employees are required to acknowledge this policy. Questions or concerns can be directed to the Quality & Safety Lead or raised via a [GitHub Issue](https://github.com/ConductionNL/.github/issues). + +--- + +_ISO 27001:2022 reference: Β§5.2 β€” Information Security Policy; Annex A.5.1_ +_Last review: pending_ +_Next review: annual management review cycle_ diff --git a/website/docs/ISO/security.md b/website/docs/ISO/security.md new file mode 100644 index 0000000..eb01cb1 --- /dev/null +++ b/website/docs/ISO/security.md @@ -0,0 +1,118 @@ +--- +id: security +title: Security Policy +sidebar_label: Security Policy +sidebar_position: 5 +description: How to report vulnerabilities, our response timeline, and safe harbor statement +--- + +# Security Policy + +This security policy applies to all repositories under the [ConductionNL](https://github.com/ConductionNL) organization. + +--- + +## Reporting a Vulnerability + +**Do NOT open a public GitHub issue for security vulnerabilities.** + +### 1. GitHub Private Vulnerability Reporting (preferred) + +Use GitHub's built-in private reporting feature directly on the affected repository: + +> **Repository β†’ Security tab β†’ "Report a vulnerability"** + +This creates an end-to-end encrypted security advisory visible only to maintainers. + +### 2. Email + +Send your report to **security@conduction.nl**. + +--- + +## What to Include + +- **Description** β€” what is vulnerable and why +- **Reproduction steps** β€” minimal steps to trigger the issue +- **Impact** β€” what an attacker could achieve +- **Affected versions** β€” which releases are affected +- **Suggested fix** β€” optional, but appreciated + +--- + +## Response Timeline + +| Milestone | Target | +|---|---| +| Acknowledgement | Within **48 hours** | +| Initial triage and severity assessment | Within **5 business days** | +| Fix for critical / high severity | Within **30 days** | +| Fix for medium severity | Within **90 days** | +| Public disclosure | After fix is released, or at **90 days** from report | + +--- + +## Severity Classification + +We use [CVSSv3](https://www.first.org/cvss/calculator/3.1) to classify severity: + +| Severity | CVSS Score | Response | +|---|---|---| +| **Critical** | 9.0–10.0 | Fix within 14 days | +| **High** | 7.0–8.9 | Fix within 30 days | +| **Medium** | 4.0–6.9 | Fix within 90 days | +| **Low** | 0.1–3.9 | Fixed in next scheduled release | + +--- + +## Scope + +### In scope + +- All source code under [github.com/ConductionNL](https://github.com/ConductionNL) +- APIs and integrations exposed by our apps +- Authentication and authorization logic +- Data handling and privacy controls +- Dependencies with known CVEs not yet patched + +### Out of scope + +- Vulnerabilities in Nextcloud core β†’ report to [Nextcloud](https://nextcloud.com/security/) +- Vulnerabilities in third-party dependencies β†’ report upstream first +- Social engineering or phishing attacks +- Issues requiring highly unrealistic user actions +- Denial-of-service attacks against hosted infrastructure + +--- + +## Supported Versions + +Security updates are provided for the **latest stable release** of each app only. + +--- + +## Safe Harbor + +Conduction will not pursue legal action against security researchers who: + +- Report vulnerabilities through this policy in good faith +- Avoid accessing, modifying, or deleting data beyond what is necessary to demonstrate the vulnerability +- Do not disrupt production services +- Give us reasonable time to address the issue before public disclosure + +We consider good-faith security research a public good. + +--- + +## Bug Bounty + +Conduction does not currently operate a paid bug bounty program. Valid reports receive: + +- Public credit in release notes (with permission) +- Acknowledgement in the GitHub Security Advisory + +--- + +## Internal Incident Reporting + +Conduction employees: see the [Incident Reporting](incident-reporting) procedure for reporting security incidents and quality deviations. diff --git a/website/docs/Intro.md b/website/docs/Intro.md index 882f634..f99c82e 100644 --- a/website/docs/Intro.md +++ b/website/docs/Intro.md @@ -1,7 +1,7 @@ --- id: intro title: Welcome to Conduction!πŸ‘‹ -sidebar_label: About COnduction +sidebar_label: About Conduction sidebar_position: 1 description: Welcome to Conduction - Building a better digital world for citizens through democratic, inclusive and transparent software keywords: diff --git a/website/docs/Products/Components.md b/website/docs/Products/Components.md deleted file mode 100644 index 82dd280..0000000 --- a/website/docs/Products/Components.md +++ /dev/null @@ -1,111 +0,0 @@ -# Components: Building Blocks for Digital Government Innovation πŸ—οΈ - -At Conduction, we believe that well-designed, reusable components are fundamental to creating sustainable digital government solutions. Our component-based approach helps organizations achieve digital transformation goals while promoting collaboration, efficiency, and innovation across the public sector. - -## Why Components Matter - -Our commitment to component-based development stems from several key benefits: - -- Accelerated development through reusable building blocks -- Reduced costs and maintenance through standardization -- Enhanced collaboration across government organizations -- Improved security through battle-tested solutions -- Sustainable digital infrastructure development - -## Nextcloud Applications πŸš€ - -We've developed several powerful Nextcloud applications that demonstrate our component-based philosophy: - -### Open Catalogi -Our product catalog solution empowers organizations to: -- Manage and share documentation efficiently -- Maintain comprehensive API documentation -- Track changes through version control -- Enable collaborative content creation -- Share knowledge through multiple formats - -### Open Connector -This integration powerhouse helps organizations: -- Streamline system connections -- Transform and map data effectively -- Support event-driven architectures -- Maintain security across integrations -- Monitor and track system interactions - -### Open Registers -Our registry management solution delivers: -- Centralized data management -- Enhanced data quality control -- Secure access management -- Comprehensive audit capabilities -- Seamless system integration - -### Zaakafhandel App (ZAA) -This case management solution helps governments: -- Track cases efficiently -- Manage documents systematically -- Automate workflows -- Coordinate tasks effectively -- Connect with existing infrastructure - -### Klant Contact App (CSA) -Improving citizen engagement through: -- Comprehensive contact management -- Multi-channel communication -- Efficient service delivery -- Knowledge sharing -- Data-driven insights - -### DocuDesk -Transforming document management with: -- Smart document processing -- Automated classification -- Version management -- Workflow optimization -- Secure document handling - -## Common Ground Components 🌐 - -Our Common Ground components form the backbone of modern government IT: - -### API Gateway -Centralizing service access through: -- Smart request routing -- Robust security controls -- Performance management -- Clear documentation -- Comprehensive monitoring - -### Data Services -Empowering data-driven government with: -- Efficient data operations -- Smart transformation tools -- Strong validation -- Secure access -- Complete audit trails - -### Process Engine -Automating government processes through: -- Intuitive process design -- Efficient task handling -- Smart decision support -- Real-time monitoring -- Flexible integration - -### Identity and Access Management -Securing digital services with: -- Strong authentication -- Granular access control -- Simplified sign-on -- Proactive monitoring -- Regulatory compliance - -### NL Design System -Creating consistent government experiences through: -- Standardized branding -- Accessible design -- Responsive interfaces -- Reusable components -- Comprehensive guidelines - -Together, these components help us build a more efficient, connected, and citizen-centric digital government. By implementing and maintaining these solutions, we're not just creating technology - we're enabling sustainable digital transformation across the public sector. diff --git a/website/docs/Products/Consultancy.md b/website/docs/Products/Consultancy.md deleted file mode 100644 index 78c3cee..0000000 --- a/website/docs/Products/Consultancy.md +++ /dev/null @@ -1,77 +0,0 @@ -# Consultancy Services 🀝 - -At Conduction, we believe consultancy is more than just providing advice - it's a vital part of achieving our mission to create sustainable, innovative digital solutions for government organizations. Our consultancy services are deeply rooted in our commitment to knowledge sharing and collaborative growth, which you can learn more about in our [introduction](/docs/Intro). - -## Why Consultancy Matters - -In the complex landscape of digital government transformation, consultancy plays a crucial role in: - -- Empowering organizations with the knowledge and tools they need for sustainable digital growth -- Ensuring technology choices align with both immediate needs and long-term societal benefits -- Building capacity within organizations to maintain and evolve their digital solutions -- Fostering collaboration and knowledge sharing across the government sector -- Creating lasting positive impact through well-planned digital transformations - -## Our Expertise Areas - -### Enterprise Architecture πŸ›οΈ -We help organizations design and implement robust enterprise architectures that are scalable, maintainable, and aligned with both business goals and societal impact. - -- Strategic system design focused on sustainability -- Technology stack evaluation with emphasis on open source -- Scalability and performance optimization for public service -- Integration strategy development -- Cloud architecture planning with environmental consciousness - -### Common Ground Architecture -Our specialists guide organizations in implementing Common Ground principles and best practices, ensuring alignment with broader governmental collaboration goals. - -- Component-based architecture design -- API-first development approach -- Microservices implementation -- Security architecture planning -- Cloud-native deployment strategies - -### Technical Excellence -We ensure your development practices meet the highest standards while maintaining focus on public value. - -- Development strategy optimization -- Code quality assurance -- Testing strategy implementation -- CI/CD pipeline setup -- Security best practices - -### Integration Solutions -Our experts help bridge systems and modernize legacy applications with a focus on sustainable, future-proof solutions. - -- System integration planning -- API design and documentation -- Data migration strategies -- Legacy system modernization -- Performance optimization - -## How We Work - -### Flexible Engagement Models -We adapt to your needs while ensuring knowledge transfer and sustainable growth: - -- Full-time dedicated consultancy -- Part-time advisory support -- Project-based consulting -- Strategic advisory services -- Hands-on workshop facilitation - -### Our Approach -1. Assessment of current situation and societal impact -2. Strategy development aligned with public value -3. Implementation planning with sustainability focus -4. Execution support and knowledge sharing -5. Knowledge transfer for organizational growth -6. Continuous improvement and adaptation - -## Get Started - -Ready to transform your organization while creating lasting positive impact? Contact our consultancy team: - -πŸ“§ [consultancy@conduction.nl](mailto:consultancy@conduction.nl) -πŸ“ž +31 (0)85 303 6840 \ No newline at end of file diff --git a/website/docs/Products/Intro.md b/website/docs/Products/Intro.md deleted file mode 100644 index b27cf0e..0000000 --- a/website/docs/Products/Intro.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -id: products -title: Our Products & Solutions -sidebar_label: Products Overview -sidebar_position: 1 -description: Explore Conduction's suite of innovative products and solutions designed to transform government services and enhance citizen experience -keywords: - - open source products - - government software - - digital solutions - - citizen services - - open catalogi - - open connector - - open registers - - case management - - customer service - - document management - - innovation projects ---- - -# Products - -When discussing products, it's important to understand that there are different perspectives on what constitutes a product. Let's break this down: - -## From Conduction's Organizational Perspective -As an organization, our products are billable services that we provide to our clients: - -- [**Managed Services (Beheer)**](Services.md): Professional hosting and maintenance of applications -- [**Implementation Services**](Services.md): Helping organizations adopt and integrate our solutions -- [**Training**](Training.md): Knowledge transfer and capability building for clients -- [**Consultancy (Advies)**](Consultancy.md): Expert guidance on digital transformation -- [**Development (Ontwikkeling)**](Services.md): Custom software development services - -## From a Customer's Perspective -For our customers, products are typically tangible solutions they can use: - -### Applications - -#### [Open Catalogi](Components.md) -A platform for sharing and discovering open source solutions, making government software more transparent and reusable. - -#### [Open Connector](Components.md) -Integration platform enabling seamless connection between different government systems and services. - -#### [Open Registers](Components.md) -A solution for managing and maintaining public registers with full audit trail and version control. - -#### [Zaakafhandel App (ZAA)](Components.md) -Case management application designed specifically for government processes and workflows. - -#### [Klant Contact App (CSA)](Components.md) -Customer service application for managing citizen interactions and inquiries efficiently. - -#### [DocuDesk](Components.md) -Document management system built for government organizations' specific needs. - -### Innovation - -#### [Innovation Projects (2024/2025)](Projects/InnovatieProjecten.md) -Our upcoming initiatives focused on pushing the boundaries of digital government services. diff --git a/website/docs/Products/Market.md b/website/docs/Products/Market.md deleted file mode 100644 index e527d1b..0000000 --- a/website/docs/Products/Market.md +++ /dev/null @@ -1 +0,0 @@ - # Partners \ No newline at end of file diff --git a/website/docs/Products/Partners.md b/website/docs/Products/Partners.md deleted file mode 100644 index e527d1b..0000000 --- a/website/docs/Products/Partners.md +++ /dev/null @@ -1 +0,0 @@ - # Partners \ No newline at end of file diff --git a/website/docs/Products/Pricing.md b/website/docs/Products/Pricing.md deleted file mode 100644 index f498d06..0000000 --- a/website/docs/Products/Pricing.md +++ /dev/null @@ -1,78 +0,0 @@ -# Rates at Conduction - -At Conduction, we offer a transparent and competitive pricing structure for our services. We understand the importance of clear pricing to help you make informed decisions. Our prices are designed to reflect the complexity of the required components, ensuring you get the best value for your investment. - -## SLA Pricing Structure - -We offer two main SLA/SAAS pricing tiers: - -- **Simple Components:** €250 per month -- **Complex Components:** €500 per month - -We have two SLA/SAAS pricing options: -- Standalone Software (where each component has its own installation) -- Framework extensions (where plugins/bundles are installed on a shared framework) - -### Standalone Software Pricing - -| Component | Monthly Price | Implementation Costs | Open Catalog | Product Page | -|----------------------| ------------- |---------------------|---------------| ------------ | -| Open WOO Page | €250 | €2500 | [Catalog](#) | [Product](#) | -| Open Catalog Page | €250 | €2500 | [Catalog](#) | [Product](#) | -| Product Page | €250 | €2500 | [Catalog](#) | [Product](#) | - -### Framework Pricing - -For framework pricing, we split between a base rate for running the framework and - -| Component | Monthly Price | Implementation Costs | Open Catalog | Product Page | -|---------------------------------|--------------|---------------------|---------------| ------------ | -| Common Gateway (Base) | €500 | €5000 | [Catalog](#) | [Product](#) | -| Certificates (Common Gateway) | €250 | €2500 | [Catalog](#) | [Product](#) | -| Notify (Common Gateway) | €250 | €2500 | [Catalog](#) | [Product](#) | -| Open Webconcept (Base) | €500 | €5000 | [Catalog](#) | [Product](#) | -| Open Pub (Open Webconcept) | €250 | €2500 | [Catalog](#) | [Product](#) | -| Open PDD (Open Webconcept) | €500 | €5000 | [Catalog](#) | [Product](#) | - - -## What's Included? - -Our prices include: - -- Ongoing support and maintenance for the specified component. -- Regular updates and improvements. -- Access to our expertise and knowledge. -- Compliance with industry best practices and standards. - -## Consultancy and Development - -| Services | Monthly Price | Implementation Costs | Product Page | -|----------------------| ------------- |---------------------|--------------- | -| Codebase Stewardship | €500 | €2500 |[Read more](#) | -| NL Design Token | €250 | €2500 |[Read more](#) | -| GitHub Editorial | €250 | €2500 |[Read more](#) | - -### Hourly Rates -When hiring a development team, the following rates apply: - -- Developers (Technical Managers): €110 per hour -- Consultants (Architects, Scrum Masters/Project Managers): €150 per hour -- Strip Cards: A fixed rate of €120 per hour - -A development team typically consists of an architect, scrum master/project manager, a manager, and multiple developers. Additional costs (if incurred and agreed upon) are charged directly. - -### Tiers and Strip Cards - -See the table below for discounts applied to strip cards. Please note that our prices are indexed to 2023 and are adjusted annually based on the value index. - -| Tier Description | Discount | Consultancy Rate | Development Rate | Fixed Rate | -|----------------------------|---------| ----------------- | ---------------- | ----------- | -| 1. Less than 50 hours | 0% | €150/hour | €110/hour | €120/hour | -| 2. 50-100 hours | 5% | €150/hour | €110/hour | €114/hour | -| 3. 100-250 hours | 10% | €150/hour | €110/hour | €108/hour | -| 4. 250-500 hours | 15% | €150/hour | €110/hour | €102/hour | -| 5. 500 hours or more | 20% | €150/hour | €110/hour | €96/hour | - -## Contact Us - -For more information or to discuss your specific needs, please contact us diff --git a/website/docs/Products/Projects/InnovatieProjecten.md b/website/docs/Products/Projects/InnovatieProjecten.md deleted file mode 100644 index e527d1b..0000000 --- a/website/docs/Products/Projects/InnovatieProjecten.md +++ /dev/null @@ -1 +0,0 @@ - # Partners \ No newline at end of file diff --git a/website/docs/Products/Projects/Nextcon.md b/website/docs/Products/Projects/Nextcon.md deleted file mode 100644 index 6eb416a..0000000 --- a/website/docs/Products/Projects/Nextcon.md +++ /dev/null @@ -1,128 +0,0 @@ -# NEXTCon - -The NEXTCon project represents an ambitious initiative to evaluate and implement Nextcloud as a comprehensive replacement for our current Microsoft 365 and Google Suite environment at Conduction. This transition aligns with our organizational values of open-source adoption and digital sovereignty, while potentially reducing our dependency on proprietary software solutions. - -## Goals - -- Complete phase-out of Microsoft 365 and Google Suite dependencies, moving towards a more independent and controlled digital workspace environment -- Build extensive knowledge and practical experience with Nextcloud platform implementation, focusing specifically on migration strategies and best practices for enterprise-level deployments -- Embrace the principle of "Eating your own dogfood" by actively using and testing our own solutions, which demonstrates our commitment to the technologies we recommend to clients -- Establish ourselves as a leading example in the industry for successful migration to open-source collaboration tools, inspiring other organizations to follow suit - -## Out of Scope - -While the project aims to be comprehensive, certain systems will remain outside its scope: - -- JIRA: Project management will continue using existing tools because: - - JIRA is deeply integrated into our development workflow and issue tracking process - - The team has established efficient processes around JIRA (see Issue Flow documentation) - - Migration would disrupt ongoing project tracking and agile ceremonies - - Nextcloud's project management features don't match JIRA's specialized capabilities - -- Finance: Financial systems will maintain their current infrastructure because: - - Existing financial tools have specific compliance and regulatory requirements - - Current systems are integrated with accounting and reporting workflows - - Financial data security requires specialized handling - - The cost and risk of migration outweigh potential benefits - -## Google Suite Tools to Replace - -Our migration strategy focuses on replacing these key Google Suite components: -- Google Meet (Meetings): Essential for daily team communications and client interactions -- Calendar: Critical for organizational scheduling and time management -- Mail: Core business communication platform -- Documents Suite: - - Text documents: For collaborative content creation and documentation - - Spreadsheets: For data analysis and reporting - - Presentations: For internal and client-facing presentations - - Draw.io: For diagram creation and visual documentation - -## Other Focus Areas - -Critical aspects requiring special attention during implementation: -- Rights management: Ensuring proper access control and security measures -- Authentication: Implementing robust user verification systems -- External collaboration: Maintaining seamless interaction with external partners and clients -- Support Model: Evaluate the necessity of a paid SLA for Nextcloud support versus leveraging internal technical expertise for self-support - -The evaluation criteria follows a pragmatic "Good enough" approach. While we acknowledge that Nextcloud may not match every feature of Google Suite perfectly, our goal is to ensure that the platform meets our core operational requirements effectively. This realistic approach focuses on essential functionality rather than feature-for-feature parity. - -## Financial Comparison - -### Current Costs (Google Suite) -- Google Workspace Business Standard: €12.00 per user/month -- Estimated annual cost for 15 users: €2,160 - -### Projected Nextcloud Costs -- Self-hosted infrastructure: €150/month -- Storage costs: €50/month -- Optional Enterprise support: €1,900/year -- Estimated annual total: €2,400 - €4,300 (depending on support model) - -The financial analysis shows that with 15 users, the current Google Suite costs are lower than the projected Nextcloud costs. However, the self-hosted model still provides more control over costs and scalability while maintaining operational efficiency. As our team grows, Nextcloud becomes more cost-effective since the infrastructure costs remain relatively stable regardless of user count. It is only cost effective to enable enterpice support above 30 users. - -## Technical Comparison - -### Google Suite vs Nextcloud Features - -| Feature | Google Suite | Nextcloud | Notes | -|---------|--------------|-----------|--------| -| Video Meetings | Google Meet | Talk | Max participants, screen sharing capabilities, and meeting management features | -| Calendar | Google Calendar | Calendar | Comprehensive sharing options, external invite functionality, and integration capabilities | -| Email | Gmail | Mail | Full SMTP/IMAP support with advanced filtering and organization tools | -| Document Editing | Google Docs | Collabora/OnlyOffice | Real-time collaboration features with version control and commenting | -| Storage | Google Drive | Files | Flexible storage limits with advanced sharing and permission controls | -| Authentication | Google Auth | LDAP/SSO | Multiple integration options for enterprise-level security | - -## Project Plan - -### Phase 1: Setup (Feb 21) -- Create dedicated namespace for the Nextcloud environment -- Set up robust technical infrastructure including backup systems and monitoring - -### Phase 2: POC Period (Feb 24 - Mar 24) - -Testing Team with Specialized Focus Areas: -- Remco: Leading the evaluation of core productivity tools including Documents, Spreadsheets, Calendar, and Mail functionality -- Ruben: Focusing on communication tools including Meetings, Presentations, and External Collaboration capabilities -- Mark: Conducting in-depth Technical Comparisons and analyzing Focus areas for optimization - -### Phase 3: Test Migration (Mar 25 - Apr 24) - -Systematic migration approach: -- Migrate email systems with minimal disruption to daily operations -- Transfer calendar data ensuring all appointments and sharing permissions are preserved -- Coordinate systematic document migration with version history maintenance - -### Phase 4: Wrap-up (Apr 25 - May 24) - -- Write a short blog post about the projects and lessons learned - -## Project Conclusions (TODO) - -The following sections need to be documented after project completion: - -- Technical Implementation Results - - Document successful configurations and setups - - Note any technical challenges encountered and solutions implemented - - Evaluate performance metrics and system stability - -- User Adoption & Feedback - - Summarize user experience feedback - - Document training effectiveness - - Highlight areas requiring additional support or improvements - -- Cost Analysis - - Compare actual costs against projections - - Document any unexpected expenses - - Analyze ROI and cost savings - -- Migration Process Review - - Document successful migration strategies - - Note lessons learned during the transition - - Identify potential improvements for future migrations - -- Recommendations - - Provide guidance for similar future projects - - Suggest optimizations and improvements - - List best practices discovered during implementation diff --git a/website/docs/Products/Services.md b/website/docs/Products/Services.md deleted file mode 100644 index 4f6f7ff..0000000 --- a/website/docs/Products/Services.md +++ /dev/null @@ -1,83 +0,0 @@ -# Overview of Conduction Services - -Welcome to Conduction's service portfolio! We offer a wide range of services and solutions to meet your digital needs. Our services are divided into five main categories: SLA/SAAS, Implementation, Development, Training, and Consultancy. - -## SLA/SAAS (Service Level Agreements / Software as a Service) - -The main difference between our SLA and SAAS offerings lies in the hosting responsibility. With an SLA, the client is responsible for hosting - either through their own infrastructure or via a third-party hosting provider like Cyso. With SAAS, Conduction handles the hosting entirely. - -Both options provide the same high-quality service and support, just with different hosting arrangements to suit your specific needs and requirements. - -### Nextcloud Applications - -- Description: Our Nextcloud applications extend the functionality of your Nextcloud environment with government-specific features. -- Benefits: Seamless integration with existing Nextcloud infrastructure, enhanced collaboration, and secure data management. -- Available as: Both SLA and SAAS - -[Learn more about our Nextcloud Applications](Components.md#nextcloud-applications) - -### Common Ground Components - -- Description: Full-featured Common Ground components that form the building blocks of modern government digital infrastructure. -- Benefits: Standardized architecture, interoperability with other government systems, and compliance with Common Ground principles. -- Available as: Both SLA and SAAS - -[Learn more about our Common Ground Components](Components.md#common-ground-components) - -## Implementation - -The main difference between our Implementation and Development offerings lies in the customization level. Implementation services focus on configuring and deploying existing solutions, while Development involves creating custom features or applications. - -### Nextcloud Applications - -- Description: Our Nextcloud applications extend the functionality of your Nextcloud environment with government-specific features. -- Benefits: Seamless integration with existing Nextcloud infrastructure, enhanced collaboration, and secure data management. -- Available as: Both SLA and SAAS - -[Learn more about our Nextcloud Applications](Components.md#nextcloud-applications) - -### Common Ground Components - -- Description: Full-featured Common Ground components that form the building blocks of modern government digital infrastructure. -- Benefits: Standardized architecture, interoperability with other government systems, and compliance with Common Ground principles. -- Available as: Both SLA and SAAS - -[Learn more about our Common Ground Components](Components.md#common-ground-components) - -## Development - -Our Development services focus on creating custom solutions for specific needs. We currently offer development services for: - -### Nextcloud Applications - -- Description: Custom development of Nextcloud applications tailored to your organization's specific needs. -- Benefits: Fully customized solutions, seamless integration with Nextcloud, ongoing support. -- Available as: Development Project - -[Learn more about our Nextcloud Applications](Components.md#nextcloud-applications) - -### NL Design Frontends - -- Description: Custom frontend development using the NL Design System, ensuring consistent government branding and user experience. -- Benefits: Compliance with government design standards, accessible interfaces, modern user experience. -- Available as: Development Project - -[Learn more about NL Design Development](Components.md#nl-design-system) - -## Training - -Our comprehensive training programs help organizations maximize their digital potential. - -[View our Training Programs](Training.md) - -## Consultancy - -We offer expert consultancy services to guide your digital transformation journey. - -[Learn more about our Consultancy Services](Consultancy.md) - -## Contact Us - -For more information about any of our services or to discuss your specific requirements, please contact our sales team at [sales@conduction.nl](mailto:sales@conduction.nl). - -Thank you for considering Conduction for your digital solutions. diff --git a/website/docs/Products/Training.md b/website/docs/Products/Training.md deleted file mode 100644 index 284f26d..0000000 --- a/website/docs/Products/Training.md +++ /dev/null @@ -1,79 +0,0 @@ -# Training Programs πŸŽ“ - -At Conduction, we believe that sharing knowledge is fundamental to achieving our mission of creating sustainable digital solutions for government organizations. By providing comprehensive training programs, we not only help our clients succeed but also contribute to the broader ecosystem of digital government innovation. - -## Why We Train Others - -Our commitment to training extends beyond traditional client relationships because we believe that: - -- A more knowledgeable government sector benefits everyone -- Open source thrives on shared expertise and collaboration -- Training competitors ultimately improves the entire ecosystem -- Knowledge sharing accelerates digital transformation across government -- Collective growth leads to better public services - -## Core Training Tracks - -### Common Ground Academy πŸ›οΈ -We share our expertise in Common Ground to build a stronger community: - -- Common Ground fundamentals and philosophy -- Component-based architecture implementation -- API-first development methodology -- Security and compliance requirements -- Design patterns and best practices - -### Technical Excellence πŸ’» -We empower organizations with technical knowledge: - -- Nextcloud application development -- NL Design System implementation -- API platform development -- Container orchestration -- Cloud-native architecture - -### Digital Transformation πŸš€ -We guide organizations through their digital journey: - -- Agile methodology mastery -- Digital government principles -- Service design thinking -- Change management -- Innovation strategies - -## Training Approach - -### Flexible Learning Formats -We adapt our training to reach as many organizations as possible: - -- Interactive classroom sessions -- Remote learning options -- Hands-on workshops -- Individual coaching -- Team training programs - -### Customized Solutions -We ensure our training creates lasting impact: - -- Organization-specific content -- Real-world case studies -- Practical exercises -- Progress monitoring -- Continuous support - -## Community Benefits - -Our training programs strengthen the entire digital government ecosystem by: - -- Building a knowledgeable community of practitioners -- Fostering innovation through shared expertise -- Creating sustainable digital solutions -- Promoting open source collaboration -- Accelerating government digital transformation - -## Start Learning - -Join us in building a stronger digital government community. Contact our training department: - -πŸ“§ [training@conduction.nl](mailto:training@conduction.nl) -πŸ“ž +31 (0)85 303 6840 \ No newline at end of file diff --git a/website/docs/Products/overview.md b/website/docs/Products/overview.md new file mode 100644 index 0000000..9dda3d9 --- /dev/null +++ b/website/docs/Products/overview.md @@ -0,0 +1,22 @@ +--- +id: products-overview +title: Products & Services +sidebar_label: Overview +sidebar_position: 1 +--- + +# Products & Services + +Conduction develops open-source components for digital government infrastructure, and delivers services to help organizations adopt them. + +For a full overview of our products, services, and pricing, visit our website: + +- **Website**: [conduction.nl](https://conduction.nl) +- **Open Catalogi**: [github.com/ConductionNL/opencatalogi](https://github.com/ConductionNL/opencatalogi) +- **Open Connector**: [github.com/ConductionNL/openconnector](https://github.com/ConductionNL/openconnector) +- **Open Registers**: [github.com/ConductionNL/openregisters](https://github.com/ConductionNL/openregisters) +- **All repositories**: [github.com/ConductionNL](https://github.com/ConductionNL) + +## Contact + +Interested in working with us? Reach out via [conduction.nl](https://conduction.nl) or open an issue on GitHub. diff --git a/website/docs/WayOfWork/Issue_flow.md b/website/docs/WayOfWork/Issue_flow.md index 34cc4fa..14c4595 100644 --- a/website/docs/WayOfWork/Issue_flow.md +++ b/website/docs/WayOfWork/Issue_flow.md @@ -1,3 +1,11 @@ +--- +id: way-of-working +title: Issue Flow and Sprint Planning +sidebar_label: Way of Working +sidebar_position: 3 +description: How Conduction plans sprints, manages issues, and ships software +--- + # Issue Flow and Sprint Planning Process ## Epic Creation and Sizing diff --git a/website/docs/WayOfWork/Vacancies.md b/website/docs/WayOfWork/Vacancies.md index 3505640..a0761ae 100644 --- a/website/docs/WayOfWork/Vacancies.md +++ b/website/docs/WayOfWork/Vacancies.md @@ -1,3 +1,11 @@ +--- +id: vacancies +title: Vacancies at Conduction +sidebar_label: Vacancies +sidebar_position: 5 +description: Open positions and how to apply at Conduction +--- + # Vacancies at Conduction Welcome to the career section of Conduction! We are a dynamic Dutch ICT company specializing in open-source software solutions for government agencies. At Conduction, we are on a mission to transform the digital world into a fair, inclusive, and transparent environment for everyone. If you are passionate about technology and share our vision, we invite you to explore our current vacancies. diff --git a/website/docs/WayOfWork/competences.md b/website/docs/WayOfWork/competences.md deleted file mode 100644 index 01ddb59..0000000 --- a/website/docs/WayOfWork/competences.md +++ /dev/null @@ -1 +0,0 @@ -# Competences diff --git a/website/docs/WayOfWork/contributing.md b/website/docs/WayOfWork/contributing.md new file mode 100644 index 0000000..30b07a3 --- /dev/null +++ b/website/docs/WayOfWork/contributing.md @@ -0,0 +1,151 @@ +--- +id: contributing +title: Contributing to Conduction +sidebar_label: Contributing +sidebar_position: 6 +description: How to contribute to Conduction's open-source projects β€” code, docs, translations, and more +--- + +# Contributing to Conduction + +Thank you for your interest in contributing! Every contribution β€” code, documentation, translation, issue report, or idea β€” helps us move toward our goal: ensuring every resident of the Netherlands automatically receives the government services they are entitled to. + +This guide applies to all repositories under [ConductionNL](https://github.com/ConductionNL). The authoritative source is [CONTRIBUTING.md](https://github.com/ConductionNL/.github/blob/main/CONTRIBUTING.md) in our organization `.github` repository. + +--- + +## Ways to Contribute + +You don't need to write code to contribute: + +| Contribution type | Where | +|---|---| +| πŸ› Report a bug | GitHub Issues | +| πŸ’‘ Suggest a feature | GitHub Issues | +| πŸ“– Improve documentation | PR to the relevant repo | +| 🌐 Translate content | PR to `.github` (this docs site) | +| πŸ” Review a pull request | GitHub PR review | +| πŸ’¬ Answer questions | GitHub Discussions / Issues | +| πŸ”’ Report a security issue | See [Security Policy](../ISO/security) | + +--- + +## First-Time Contributors + +New to open source or to Conduction? Look for issues labeled [`good first issue`](https://github.com/search?q=org%3AConductionNL+label%3A%22good+first+issue%22&type=issues) β€” these are scoped to be approachable without deep context. + +If you're unsure where to start, leave a comment on an issue you're interested in. We'll help you get oriented. + +--- + +## Contributing Code + +### External contributors (fork & PR) + +1. Fork the repository +2. Create a branch from `development`: `git checkout -b feature/your-feature-name` +3. Make your changes and commit using [Conventional Commits](#commit-messages) +4. Sign off your commits (see [DCO](#developer-certificate-of-origin)) +5. Push to your fork and open a PR targeting `development` + +### Conduction team members (direct branch) + +1. Create a branch from `development`: `feature/*` or `bugfix/*` +2. Open a PR to `development` when ready + +### PR checklist + +- [ ] CI quality checks pass locally +- [ ] New code has tests where applicable +- [ ] Documentation updated if behavior changes +- [ ] PR labeled with `major`, `minor`, or `patch` +- [ ] DCO sign-off on all commits (`git commit -s`) + +--- + +## Branch Model + +``` +feature/* ──┐ +bugfix/* ──┼──→ development ──→ beta ──→ main +hotfix/* β”€β”€β”˜ +``` + +| Target | Allowed sources | Reviews required | +|---|---|---| +| `development` | `feature/*`, `bugfix/*` | 1 | +| `beta` | `development`, `hotfix/*` | 1 | +| `main` | `beta`, `hotfix/*` | 2 | + +No force pushes. No direct pushes. All changes via pull request. See the full [Release Process](release-process) for details. + +--- + +## Quality Workflow + +Every PR triggers automated quality checks β€” all must pass before merge. + +**PHP:** syntax lint, PHPCS (PSR-12), PHPStan (level 5), Psalm, PHPMD + +**Frontend:** ESLint, Stylelint + +**Dependencies:** license compliance, vulnerability scan + +```bash +# Run locally +composer cs:check && composer phpstan && composer psalm +npm run lint +``` + +--- + +## Commit Messages + +We use [Conventional Commits](https://www.conventionalcommits.org/): + +``` +feat: add proactive service matching +fix: resolve null pointer in namespace parser +docs: update contributing guide +chore: upgrade PHPStan to v2 +``` + +- Imperative mood ("add" not "added") +- First line under 72 characters +- Reference issues with `Closes #123` in the body + +--- + +## Developer Certificate of Origin + +All contributions must be signed off: + +```bash +git commit -s -m "feat: your commit message" +``` + +This adds `Signed-off-by: Your Name ` and certifies you have the right to submit the contribution under the project license. See [developercertificate.org](https://developercertificate.org/). + +--- + +## Development Setup + +1. Install PHP 8.1+ and Node.js 20+ +2. Install Composer +3. Clone the repository (or your fork) +4. Run `composer install && npm install` +5. Set up a [Nextcloud dev environment](https://github.com/ConductionNL/nextcloud-docker-dev) + +--- + +## Community + +- [Common Ground Slack](https://commonground.nl) +- [LinkedIn](https://www.linkedin.com/company/conduction/) +- [GitHub Discussions](https://github.com/orgs/ConductionNL/discussions) + +--- + +## License + +By contributing, you agree that your contributions will be licensed under the same license as the project (EUPL-1.2 unless stated otherwise). diff --git a/website/docs/WayOfWork/intro.md b/website/docs/WayOfWork/intro.md index 0373a2d..dc61e92 100644 --- a/website/docs/WayOfWork/intro.md +++ b/website/docs/WayOfWork/intro.md @@ -1,20 +1,42 @@ --- id: way-of-work title: How We Work at Conduction -sidebar_label: Way of Work +sidebar_label: How We Work sidebar_position: 1 -description: Learn about Conduction's development practices, methodologies, and collaborative approach to building government software -keywords: - - development practices - - agile methodology - - scrum - - code standards - - collaboration - - documentation - - testing - - deployment - - DevOps - - continuous integration +description: Conduction's mission, values, and way of working --- -# Way Of work \ No newline at end of file +# How We Work at Conduction + +## Who We Are + +Conduction builds open-source components for digital government infrastructure. We exist to make government services better for citizens β€” transparent, inclusive, and accessible by design. + +**Our Big Hairy Audacious Goal (2035):** Every resident of the Netherlands automatically receives the government services they are entitled to, without having to apply for them. + +## Our Values + +Everything we do is grounded in five core values: + +| Value | What it means in practice | +|---|---| +| **Democratic** | We build in the open. Decisions are made together, not top-down. | +| **Inclusive** | Our software works for everyone, including people with disabilities or limited digital skills. | +| **Transparent** | Our code, our roadmap, and our reasoning are public. No black boxes. | +| **Responsible** | We build for the long term. Sustainable, maintainable, and trustworthy. | +| **Innovative** | We challenge the status quo and explore better ways of working. | + +## How We Operate + +We work in small, self-directed teams using agile methods. We prefer GitHub Issues over lengthy emails, working software over documentation, and concrete results over process theatre. + +- **Our work lives on GitHub** β€” [github.com/ConductionNL](https://github.com/ConductionNL) +- **We build on Common Ground** β€” open standards for Dutch government software +- **We eat our own dog food** β€” we use the products we build + +## Further Reading + +- [Full company introduction](/docs/intro) β€” market position, competencies, brand promises +- [Organizational structure](organisation) β€” roles, responsibilities, team structure +- [Way of working](way-of-working) β€” sprints, issue flow, code standards +- [Release process](release-process) β€” branch model, versioning, deployment diff --git a/website/docs/WayOfWork/join.md b/website/docs/WayOfWork/join.md deleted file mode 100644 index 973dc8b..0000000 --- a/website/docs/WayOfWork/join.md +++ /dev/null @@ -1,76 +0,0 @@ -# Issue Flow and Sprint Planning Process - -## Epic Creation and Sizing - -1. Create Epics in Jira, linked to specific goals - - Epics should represent complete functional features - - Each epic should deliver independent business value - - Epics should be linked to specific goals -2. Product Owner performs: - - T-shirt sizing of epics - - Priority setting - - Deadline alignment with related goals - -### T-shirt Sizing Reference Table - -| Size | Hours Range | Complexity | -|------|-------------|------------| -| XS | 1-4 | Very small, simple task | -| S | 4-8 | Small task, straightforward | -| M | 8-16 | Medium complexity | -| L | 16-32 | Large, complex task | -| XL | 32-80 | Very large, highly complex | -| XXL | 80+ | Major undertaking, needs breakdown | - -## Roadmap Planning - -1. Scrum Master creates initial roadmap based on: - - Epic T-shirt sizes - - Deadlines - - Team capacity - - Epic priorities -2. Product Owner reviews and approves roadmap - -## User Story Development - -1. Developers create user stories for planned epics with Scrum Master guidance -2. Issue Flow: - - Scrum Master reviews stories against issue criteria - - If approved, status changes to "Ready for Development" (assigned to Product Owner) - - Product Owner reviews for alignment with intended functionality - - Product Owner either: - - Returns with feedback - - Sets to "Selected for Development" and unassigns himself - -## Code Development - -1. Developers can pick up unassigned issues in "Selected for Development" -2. After completion and code merge to development branch: - - Status changes to "Review" - - Tester can test from development branch -3. After successful testing, completed issues are: - - Presented to Product Owner during sprint review (Friday) - - Released to master branch on Monday morning following successful review - -## Development Process - -1. Developers can pick up unassigned issues in "Selected for Development" -2. After completion and code merge to development branch: - - Status changes to "Review" - - Tester can test from development branch -3. After successful testing, completed issues are: - - Presented to Product Owner during sprint review (Friday) - - Released to master branch on Monday morning following successful review - -## Sprint Closure - -1. Scrum Master prepares sprint review proposal including: - - List of completed issues for review - - Overview of unfinished issues - - Recommendation per unfinished issue (keep or return to backlog) -2. During sprint review (Friday): - - Team reviews unfinished issues - - Decision made per issue to either: - - Keep in sprint (if aligned with roadmap and capacity) - - Return to backlog - - Decisions are made in accordance with roadmap priorities diff --git a/website/docs/WayOfWork/organisation.md b/website/docs/WayOfWork/organisation.md index fcae9dd..8aff3af 100644 --- a/website/docs/WayOfWork/organisation.md +++ b/website/docs/WayOfWork/organisation.md @@ -2,7 +2,7 @@ id: organisation title: Organizational Structure at Conduction sidebar_label: Organization -sidebar_position: 1 +sidebar_position: 2 description: Learn about Conduction's organizational structure, roles and responsibilities, and how we work together to deliver government software solutions keywords: - organizational structure @@ -18,13 +18,29 @@ keywords: --- import Tabs from '@theme/Tabs'; + +:::caution Ter managementbeoordeling / Pending management review + +De inhoud van deze pagina is gebaseerd op een eerdere versie en wordt momenteel herzien. Het **organogram is leidend** β€” raadpleeg dat bij vragen over de actuele structuur. Deze pagina ligt ter beoordeling bij het managementteam. + +_The content of this page is based on an earlier version and is currently under review. The **organogram is authoritative** β€” consult it for current structure. This page is pending management review._ + +::: + + import TabItem from '@theme/TabItem'; # Organizational Structure At Conduction, we maintain a clear organizational structure that promotes collaboration, innovation, and efficient delivery of solutions. Here's an overview of our organization: -![Organization Structure](../Diagrams/Organisation.svg) +:::info Organogram + +Het actuele organogram is beschikbaar via het management. Neem contact op met je teamlead voor de meest recente versie. + +_The current organogram is available from management. Contact your team lead for the latest version._ + +::: ## Organizational Levels diff --git a/website/docs/WayOfWork/release-process.md b/website/docs/WayOfWork/release-process.md index 32afe74..2656254 100644 --- a/website/docs/WayOfWork/release-process.md +++ b/website/docs/WayOfWork/release-process.md @@ -2,7 +2,7 @@ id: release-process title: Release Process sidebar_label: Release Process -sidebar_position: 3 +sidebar_position: 4 description: How we version, branch, build, and release our Nextcloud apps keywords: - release @@ -226,3 +226,12 @@ A: Check the latest git tag with `git tag -l 'v*' --sort=-v:refname | head -1`, **Q: What about the Nextcloud App Store version compatibility (``)?** A: This is still managed in your repo's `appinfo/info.xml`. Only the `` tag is overwritten in the tarball β€” all other fields (name, description, nextcloud version requirements, etc.) come from your repo as-is. + +--- + +## Further Reading + +- **Centralized workflows**: [github.com/ConductionNL/.github](https://github.com/ConductionNL/.github/tree/main/.github/workflows) β€” all shared workflow definitions +- **Branch protection**: [`.github/workflows/branch-protection.yml`](https://github.com/ConductionNL/.github/blob/main/.github/workflows/branch-protection.yml) +- **Release workflows**: [`release.yml`](https://github.com/ConductionNL/.github/blob/main/.github/workflows/release.yml), [`release-beta.yml`](https://github.com/ConductionNL/.github/blob/main/.github/workflows/release-beta.yml), [`release-stable.yml`](https://github.com/ConductionNL/.github/blob/main/.github/workflows/release-stable.yml) +- **Semantic Versioning**: [semver.org](https://semver.org) diff --git a/website/docs/knowledge/intro.md b/website/docs/knowledge/intro.md deleted file mode 100644 index 7295ba1..0000000 --- a/website/docs/knowledge/intro.md +++ /dev/null @@ -1 +0,0 @@ -# THe conduction knowledge base diff --git a/website/docs/knowledge/nextcloudHosting b/website/docs/knowledge/nextcloudHosting deleted file mode 100644 index 7ee79dd..0000000 --- a/website/docs/knowledge/nextcloudHosting +++ /dev/null @@ -1 +0,0 @@ -# Learnings from nextcloud hosting diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 0cbd078..8570df1 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -20,7 +20,7 @@ const config = { // metadata like html lang i18n: { defaultLocale: 'en', - locales: ['en'], + locales: ['en', 'nl'], }, presets: [ @@ -57,6 +57,10 @@ const config = { position: 'left', label: 'Documentation', }, + { + type: 'localeDropdown', + position: 'right', + }, { href: 'https://github.com/conductionnl', label: 'GitHub', @@ -88,6 +92,13 @@ const config = { theme: require('prism-react-renderer/themes/github'), darkTheme: require('prism-react-renderer/themes/dracula'), }, + algolia: { + appId: 'JGCIQ1UR7T', + apiKey: 'ee1e114882295e88b9a457a6ace461f3', + indexName: 'conduction-docs', + contextualSearch: true, + searchParameters: {}, + }, }) }; diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current.json b/website/i18n/nl/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..eeccf75 --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,18 @@ +{ + "sidebar.tutorialSidebar.link.About Conduction": { + "message": "Over Conduction", + "description": "Sidebar label for About Conduction page" + }, + "sidebar.tutorialSidebar.category.How We Work": { + "message": "Hoe We Werken", + "description": "Sidebar category label for Way of Work section" + }, + "sidebar.tutorialSidebar.category.ISO & Quality": { + "message": "ISO & Kwaliteit", + "description": "Sidebar category label for ISO section" + }, + "sidebar.tutorialSidebar.category.Products & Services": { + "message": "Producten & Diensten", + "description": "Sidebar category label for Products section" + } +} diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/.gitkeep b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md new file mode 100644 index 0000000..600f04b --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md @@ -0,0 +1,75 @@ +--- +id: incident-reporting +title: Incidentmelding +sidebar_label: Incidentmelding +sidebar_position: 4 +description: Hoe je beveiligingsincidenten en kwaliteitsafwijkingen meldt bij Conduction +--- + +# Incidentmelding + +Conduction heeft de plicht om incidenten te detecteren, te melden en ervan te leren β€” zowel beveiligingsincidenten (ISO 27001:2022 A.6.8) als kwaliteitsafwijkingen (ISO 9001:2015 Β§10.2). + +**Vermoed je dat er iets mis is? Meld het direct. Er is geen straf voor melden te goeder trouw.** + +--- + +## Wat Te Melden + +### Beveiligingsincidenten (ISO 27001:2022 A.6.8) + +Meld elk vermoeden of bevestiging van: + +- Ongeautoriseerde toegang tot systemen, accounts of gegevens +- Datalek of gegevensverlies (klantgegevens, medewerkergegevens, inloggegevens) +- Malware, phishing of social engineering pogingen +- Blootstelling van geheimen, API-sleutels of inloggegevens (bijv. per ongeluk in Git geplaatst) +- Verlies of diefstal van een apparaat met toegang tot bedrijfssystemen +- Ongewone of verdachte activiteit op een bedrijfsaccount of -systeem + +### Kwaliteitsafwijkingen / Bijna-Ongelukken (ISO 9001:2015 Β§10.2) + +Meld elk geval van: + +- Opgeleverde software die niet voldeed aan overeengekomen eisen +- Procesfout die tot klantimpact had kunnen leiden +- Bijna-ongeluk: iets dat mis had kunnen gaan maar gelukkig niet is misgegaan + +--- + +## Hoe Te Melden + +| Kanaal | Wanneer te gebruiken | +|---|---| +| **Slack `#incidents`** | Eerste contactpunt voor alle incidenten β€” directe melding | +| **E-mail: security@conduction.nl** | Voor gevoelige incidenten waarvoor Slack niet geschikt is | +| **GitHub Issue** (privΓ© repo) | Voor opvolging, tracking en afsluiting | + +**Verwachte reactietijd:** +- Beveiligingsincidenten: bevestigd binnen **4 werkuren** +- Kwaliteitsafwijkingen: bevestigd binnen **1 werkdag** + +--- + +## Wat Er Na Je Melding Gebeurt + +1. De Kwaliteits- & Veiligheidsmanager bevestigt de melding +2. Ernst wordt bepaald (kritiek / hoog / gemiddeld / laag) +3. Zo nodig worden inperkingsacties genomen +4. Oorzaak wordt onderzocht +5. Corrigerende maatregel wordt gedocumenteerd en gevolgd tot afsluiting +6. Lessen worden gedeeld met het team + +--- + +## Jouw Verantwoordelijkheden + +- Meld incidenten **zodra je ze ontdekt** β€” vertraging vergroot de impact +- Probeer een beveiligingsincident niet zelf te onderzoeken of op te lossen voordat je het hebt gemeld +- Bewaar bewijsmateriaal (logbestanden, screenshots) indien mogelijk +- Werk mee aan het onderzoek + +--- + +_ISO 27001:2022 referentie: A.6.8 β€” Melden van informatiebeveiligingsgebeurtenissen_ +_ISO 9001:2015 referentie: Β§10.2 β€” Afwijking en corrigerende maatregel_ diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/intro.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/intro.md new file mode 100644 index 0000000..e9b1ffa --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/intro.md @@ -0,0 +1,29 @@ +--- +id: iso-intro +title: ISO-certificering bij Conduction +sidebar_label: ISO & Kwaliteit +sidebar_position: 1 +description: Overzicht van de ISO 9001 en ISO 27001 certificeringen van Conduction +--- + +# ISO-certificering bij Conduction + +Conduction beschikt over actieve certificeringen voor **ISO 9001:2015** (Kwaliteitsmanagement) en **ISO 27001:2022** (Informatiebeveiligingsmanagement). + +Deze certificeringen betekenen dat onze processen, beleidsdocumenten en verantwoordelijkheden zijn gedocumenteerd, beoordeeld en geaudit. Deze sectie bevat de relevante beleidsdocumenten en procedures voor medewerkers. + +## Documenten in deze sectie + +| Document | ISO-clausule | Status | +|---|---|---| +| Kwaliteitsbeleid | ISO 9001:2015 Β§5.2 | Ter managementbeoordeling β€” gepubliceerd na goedkeuring | +| Informatiebeveiligingsbeleid | ISO 27001:2022 Β§5.2 | Ter managementbeoordeling β€” gepubliceerd na goedkeuring | +| [Incidentmelding](incident-reporting) | ISO 27001:2022 A.6.8 / ISO 9001:2015 Β§10.2 | Actief | + +## Competentievereisten + +Competentievereisten per rol (ISO 9001:2015 Β§7.2) zijn gedocumenteerd in de **interne HR-drive**. Toegang is beperkt tot HR en management. Neem contact op met je teamlead als je je rolprofiel wil inzien. + +## Managementbeoordeling + +Ons kwaliteits- en beveiligingsbeleid wordt jaarlijks beoordeeld door het management. Elke medewerker kan verbeterpunten of zorgen aankaarten via een [GitHub Issue](https://github.com/ConductionNL/.github/issues) of rechtstreeks bij de kwaliteitsmanager. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md new file mode 100644 index 0000000..99a7d4d --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md @@ -0,0 +1,48 @@ +--- +id: quality-policy +title: Kwaliteitsbeleid +sidebar_label: Kwaliteitsbeleid +sidebar_position: 2 +draft: true +description: Kwaliteitsbeleid van Conduction β€” ISO 9001:2015 Β§5.2 +--- + +# Kwaliteitsbeleid + +:::warning Ter managementbeoordeling + +Dit document is een werkversie en dient te worden goedgekeurd door het managementteam voordat het als officieel beleid geldt. + +::: + +## Doel + +Conduction streeft ernaar kwalitatief hoogwaardige open-source software en diensten te leveren voor de digitale overheidsinfrastructuur. Ons Kwaliteitsmanagementsysteem (KMS) is erop gericht consistent te voldoen aan klantvereisten en toepasselijke wet- en regelgeving, en klanttevredenheid te vergroten. + +## Kwaliteitsdoelstellingen + +Conduction hanteert de volgende kwaliteitsdoelstellingen (ISO 9001:2015 Β§6.2): + +- Software leveren die voldoet aan of de overeengekomen functionele eisen overtreft +- Reageren op klantproblemen en -feedback binnen overeengekomen serviceniveaus +- Onze processen continu verbeteren op basis van interne audits en klantfeedback +- Ervoor zorgen dat alle medewerkers hun rol begrijpen bij het handhaven van kwaliteit + +## Onze Verbintenis + +Het management van Conduction verbindt zich tot: + +1. **Het beschikbaar stellen van middelen** die nodig zijn voor het opzetten, implementeren, onderhouden en continu verbeteren van het KMS +2. **Het communiceren** van het belang van effectief kwaliteitsmanagement aan alle medewerkers +3. **Het zorgen** dat dit kwaliteitsbeleid wordt begrepen, geΓ―mplementeerd en onderhouden op alle niveaus van de organisatie +4. **Het herzien** van dit beleid ten minste jaarlijks als onderdeel van de managementbeoordeling + +## Communicatie naar Medewerkers + +Dit beleid wordt gecommuniceerd aan alle medewerkers via deze documentatiesite. Van medewerkers wordt verwacht dat zij dit beleid begrijpen en de principes toepassen in hun dagelijkse werk. Vragen of opmerkingen kunnen worden gericht aan de kwaliteitsmanager of ingediend via een [GitHub Issue](https://github.com/ConductionNL/.github/issues). + +--- + +_ISO 9001:2015 referentie: Β§5.2 β€” Kwaliteitsbeleid_ +_Laatste beoordeling: in behandeling_ +_Volgende beoordeling: jaarlijkse managementbeoordeling_ diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md new file mode 100644 index 0000000..6cb1ff4 --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md @@ -0,0 +1,65 @@ +--- +id: security-policy +title: Informatiebeveiligingsbeleid +sidebar_label: Beveiligingsbeleid +sidebar_position: 3 +draft: true +description: Informatiebeveiligingsbeleid van Conduction β€” ISO 27001:2022 Β§5.2 +--- + +# Informatiebeveiligingsbeleid + +:::warning Ter managementbeoordeling + +Dit document is een werkversie en dient te worden goedgekeurd door het managementteam voordat het als officieel beleid geldt. + +::: + +## Doel + +Conduction is toegewijd aan het beschermen van de vertrouwelijkheid, integriteit en beschikbaarheid van de informatie die het beheert β€” waaronder klantgegevens, interne systemen en de open-source software die het ontwikkelt en beheert. + +Dit beleid vormt het kader voor het Informatiebeveiligingsbeheersysteem (ISMS) van Conduction conform ISO 27001:2022. + +## Toepassingsgebied + +Dit beleid is van toepassing op: +- Alle informatiemiddelen die eigendom zijn van of worden verwerkt door Conduction +- Alle medewerkers, contractors en derden met toegang tot Conduction-systemen +- Alle systemen, diensten en software ontwikkeld en beheerd door Conduction + +## Beveiligingsdoelstellingen + +Conduction hanteert de volgende informatiebeveiligingsdoelstellingen (ISO 27001:2022 Β§6.2): + +- Ongeautoriseerde toegang tot systemen en gegevens voorkomen +- Beschikbaarheid van kritieke systemen waarborgen conform overeengekomen serviceniveaus +- Klant- en medewerkergegevens beschermen conform toepasselijke regelgeving (waaronder AVG/GDPR) +- Beveiligingsincidenten detecteren, erop reageren en ervan leren +- Beveiligingsmaatregelen continu verbeteren op basis van risicobeoordelingen en audits + +## Rollen en Verantwoordelijkheden + +| Rol | Verantwoordelijkheid | +|---|---| +| Management | ISMS goedkeuren en van middelen voorzien; jaarlijks herzien | +| Kwaliteits- & Veiligheidsmanager | ISMS beheren en onderhouden; audits en reviews coΓΆrdineren | +| Alle medewerkers | Beveiligingsprocedures volgen; incidenten en vermoedens direct melden | +| Development Lead | Veilige ontwikkelpatronen toepassen bij alle softwareoplevering | + +## Sleutelmaatregelen + +De volgende maatregelen zijn van kracht (ISO 27001:2022 Bijlage A): + +- **Toegangsbeheer** (A.5.15): Toegang tot systemen is rolgebaseerd en verleend op need-to-know basis +- **Acceptabel gebruik** (A.5.10): Bedrijfssystemen en -gegevens worden uitsluitend voor geautoriseerde doeleinden gebruikt +- **Cryptografie** (A.8.24): Gevoelige gegevens in transit en at rest zijn versleuteld +- **Leveranciersrelaties** (A.5.19): Externe leveranciers met datatoegang worden beoordeeld en contractueel gebonden +- **Incidentbeheer** (A.6.8): Alle vermoedens van incidenten moeten worden gemeld β€” zie [Incidentmelding](incident-reporting) +- **BedrijfscontinuΓ―teit** (A.5.29): Kritieke diensten hebben gedocumenteerde herstelprocedures + +--- + +_ISO 27001:2022 referentie: Β§5.2 β€” Informatiebeveiligingsbeleid; Bijlage A.5.1_ +_Laatste beoordeling: in behandeling_ +_Volgende beoordeling: jaarlijkse managementbeoordeling_ diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md new file mode 100644 index 0000000..44b8458 --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md @@ -0,0 +1,118 @@ +--- +id: security +title: Beveiligingsbeleid +sidebar_label: Beveiligingsbeleid +sidebar_position: 5 +description: Hoe je kwetsbaarheden meldt, onze responstijden en safe harbor-verklaring +--- + +# Beveiligingsbeleid + +Dit beveiligingsbeleid geldt voor alle repositories onder de [ConductionNL](https://github.com/ConductionNL)-organisatie. + +--- + +## Een Kwetsbaarheid Melden + +**Maak GEEN openbaar GitHub-issue aan voor beveiligingskwetsbaarheden.** + +### 1. GitHub Private Vulnerability Reporting (voorkeur) + +Gebruik de ingebouwde privΓ©meldingsfunctie van GitHub direct in de betreffende repository: + +> **Repository β†’ Security-tabblad β†’ "Report a vulnerability"** + +Dit maakt een end-to-end versleuteld beveiligingsadvies aan, zichtbaar alleen voor beheerders. + +### 2. E-mail + +Stuur je melding naar **security@conduction.nl**. + +--- + +## Wat te Vermelden + +- **Beschrijving** β€” wat is kwetsbaar en waarom +- **Reproductiestappen** β€” minimale stappen om het probleem te triggeren +- **Impact** β€” wat een aanvaller zou kunnen bereiken +- **Getroffen versies** β€” welke releases zijn getroffen +- **Suggestie voor oplossing** β€” optioneel, maar welkom + +--- + +## Responstijden + +| Mijlpaal | Streefdatum | +|---|---| +| Bevestiging | Binnen **48 uur** | +| InitiΓ«le beoordeling en ernst | Binnen **5 werkdagen** | +| Fix voor kritiek / hoog | Binnen **30 dagen** | +| Fix voor gemiddeld | Binnen **90 dagen** | +| Publieke bekendmaking | Na release van de fix, of na **90 dagen** vanaf melding | + +--- + +## Ernsttyclassificatie + +We gebruiken [CVSSv3](https://www.first.org/cvss/calculator/3.1): + +| Ernst | CVSS-score | Respons | +|---|---|---| +| **Kritiek** | 9,0–10,0 | Fix binnen 14 dagen | +| **Hoog** | 7,0–8,9 | Fix binnen 30 dagen | +| **Gemiddeld** | 4,0–6,9 | Fix binnen 90 dagen | +| **Laag** | 0,1–3,9 | Opgelost in volgende geplande release | + +--- + +## Toepassingsgebied + +### Binnen scope + +- Alle broncode onder [github.com/ConductionNL](https://github.com/ConductionNL) +- API's en integraties van onze apps +- Authenticatie- en autorisatielogica +- Gegevensverwerking en privacycontroles +- Dependencies met bekende CVE's die nog niet gepatcht zijn + +### Buiten scope + +- Kwetsbaarheden in Nextcloud core β†’ meld bij [Nextcloud](https://nextcloud.com/security/) +- Kwetsbaarheden in externe dependencies β†’ meld eerst upstream +- Social engineering of phishing +- Problemen die onrealistisch gebruikersgedrag vereisen +- Denial-of-service-aanvallen op gehoste infrastructuur + +--- + +## Ondersteunde Versies + +Beveiligingsupdates worden alleen geleverd voor de **laatste stabiele release** van elke app. + +--- + +## Safe Harbor + +Conduction zal geen juridische stappen ondernemen tegen beveiligingsonderzoekers die: + +- Kwetsbaarheden te goeder trouw via dit beleid melden +- Geen gegevens inzien, wijzigen of verwijderen verder dan nodig om de kwetsbaarheid aan te tonen +- Productiediensten niet verstoren +- Ons redelijke tijd geven om het probleem op te lossen voor publieke bekendmaking + +We beschouwen beveiligingsonderzoek te goeder trouw als een publiek goed. + +--- + +## Bug Bounty + +Conduction heeft momenteel geen betaald bug bounty-programma. Geldige meldingen ontvangen: + +- Publieke vermelding in release notes (met toestemming) +- Erkenning in het GitHub Security Advisory + +--- + +## Interne Incidentmelding + +Conduction-medewerkers: zie de [Incidentmelding](incident-reporting)-procedure voor het melden van beveiligingsincidenten en kwaliteitsafwijkingen. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md new file mode 100644 index 0000000..666e1ad --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md @@ -0,0 +1,125 @@ +--- +id: intro +title: Welkom bij Conduction! πŸ‘‹ +sidebar_label: Over Conduction +sidebar_position: 1 +description: Welkom bij Conduction - Een betere digitale wereld voor burgers door democratische, inclusieve en transparante software +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Welkom bij Conduction! πŸ‘‹ + +Of je nu een potentiΓ«le medewerker bent op zoek naar je volgende stap, een klant die innovatieve digitale oplossingen zoekt, een collega-IT-bedrijf geΓ―nteresseerd in samenwerking, of zelfs een concurrent die nieuwsgierig is naar onze aanpak β€” we zijn blij dat je er bent! + +Voor **potentiΓ«le medewerkers**: ontdek onze unieke cultuur, waarden en ambitieuze missie om overheidsdiensten te transformeren. Leer hoe jij kunt bijdragen aan betekenisvolle projecten die direct impact hebben op het leven van burgers. + +Voor **klanten**: verken hoe onze innovatieve oplossingen en diepgaande expertise in digitalisering van de overheid jou helpen je burgers beter te bedienen. + +Voor **IT-bedrijven**: vind mogelijkheden voor partnerschap en samenwerking. We geloven in open source en kennisdeling. + +En ja, ook voor onze **concurrenten**: welkom! Leer gerust van onze aanpak. We geloven dat betere overheidsdiensten samenwerking op sectorniveau vereisen. + +## πŸ§™ Wie is Conduction? + +Bij Conduction worden we gedreven door een visie die de digitalisering van de wereld ziet als een buitengewone kans. Een kans om onze wereld democratischer, inclusiever en transparanter te maken. + +**Onze missie:** de nieuwe digitale wereld vormen tot een eerlijke en inclusieve omgeving voor iedereen, en haar beschermen tegen de bedreigingen die digitalisering met zich meebrengt. + +Simpel maar wezenlijk: **"De digitale wereld een betere plek maken voor haar burgers, door democratische, inclusieve, transparante, begrijpelijke en betaalbare software voor burgers te maken."** + +## Ons (Big Hairy Audacious) Goal + +We hebben een ambitieus doel gesteld: **"In 2035 zorgt Conduction ervoor dat alle inwoners van Nederland automatisch de overheidsdiensten ontvangen waar ze recht op hebben."** + +Stel je een wereld voor waarin niemand door de mazen van het sociale vangnet valt. Waar een alleenstaande moeder geen cruciale kinderopvangtoeslag misloopt omdat ze niet wist dat die bestond. Waar ouderen automatisch de zorg en ondersteuning ontvangen waar ze recht op hebben, zonder complexe aanvraagprocedures. Waar mensen met beperkte digitale vaardigheden niet achterblijven. + +Via proactieve dienstverlening streven we naar een toekomst waarin overheidsdiensten automatisch burgers bereiken wanneer ze die nodig hebben β€” in plaats van dat burgers zelf moeten zoeken en aanvragen. + +## Onze Kernwaarden + + + + +**Democratisch:** We zorgen ervoor dat onze oplossingen werken voor iedereen β€” niet alleen de digitaal vaardigen β€” door actief input te zoeken van alle belanghebbenden. + +**Inclusief:** Automatische dienstverlening slaagt alleen als die ALLE burgers bereikt. We laten niemand achter, of ze nu oud, gehandicapt of digitaal minder vaardig zijn. + +**Transparant:** Burgers moeten begrijpen hoe beslissingen worden genomen. Onze open communicatie en eerlijke werkwijze bouwen het vertrouwen dat proactieve dienstverlening vereist. + +**Verantwoord en duurzaam:** We bouwen oplossingen die niet alleen huidige burgers dienen, maar ook houdbaar zijn voor volgende generaties. + +**Innovatief:** Universele automatische dienstverlening vereist creatieve oplossingen voor complexe uitdagingen. We zoeken voortdurend nieuwe manieren om burgersbehoeften te identificeren en diensten proactief te leveren. + + + + +**Innovatief:** We volgen niet alleen trends β€” we creΓ«ren oplossingen die overheidsdienstverlening werkelijk transformeren. + +**Kennisgedreven:** Diepe expertise is cruciaal. We investeren continu in kennis van zowel technologie als overheidsprocessen. + +**Constructief eigenwijs:** Om automatische dienstverlening in 2035 te bereiken, moeten we conventioneel denken in overheids-IT uitdagen. We durven moderne alternatieven voor te stellen waar anderen vasthouden aan verouderde systemen. + +**CoΓΆperatief:** We geloven dat het transformeren van overheidsdiensten samenwerking vereist. We delen kennis en code openlijk, ook met concurrenten, omdat ons doel voor 2035 zwaarder weegt dan individueel succes. + + + + +## Ons Gedrag: Waarden in de Praktijk + +**Innovatie in actie:** +- Nieuwe technologieΓ«n en aanpakken verkennen en voorstellen +- De status quo uitdagen met creatieve oplossingen +- Calculated risks nemen voor betekenisvolle verandering + +**Kennis in de praktijk:** +- Continu investeren in leren en vaardigheidsontwikkeling +- Expertise vrijgevig delen met collega's en klanten +- Beslissingen baseren op diepgaand begrip, niet op aannames + +**Constructief eigenwijs:** +- Gevestigde praktijken respectvol in twijfel trekken +- Alternatieve oplossingen onderbouwen met solide redenering +- Moderne standaarden en best practices bevorderen + +**Samenwerking in het dagelijks werk:** +- Actief samenwerkingsmogelijkheden zoeken +- Successen en lessen openlijk delen met de community +- Collectieve doelen boven individuele erkenning stellen + +## πŸ’» Onze Kerncompetenties + +1. **Kennis van ecosysteem en architectuur** β€” diepgaand begrip van het digitale overheidslandschap +2. **Kritische benadering** β€” we zijn geen orderuitvoerders; we denken kritisch mee met onze klanten +3. **Holistische aanpak** β€” we verbinden klanten met andere oplossingen en leveranciers +4. **Integratie** β€” we verbinden verschillende systemen en processen +5. **Continue innovatie** β€” we creΓ«ren voortdurend innovatieve oplossingen met maatschappelijke impact + +## πŸ‘© Onze Markt + +- Kleine en middelgrote gemeenten +- Overheidssamenwerkingen en -allianties +- Samenwerking met andere leveranciers als volwaardige partners +- Diverse overheidsinstanties + +## πŸ™‹ Merkbeloften + +- Open en transparant in alles wat we doen +- Geen vendor lock-in β€” oplossingen vrij van beperkingen +- Kennis delen en samenwerken +- Integratie als prioriteit β€” systemen die naadloos samenwerken + +## 🌈 Kom bij Conduction + +Ben jij gepassioneerd over een democratischere, inclusievere en transparantere digitale wereld? Gedij jij in een innovatieve en collaboratieve omgeving? Dan horen we graag van je! + +Werken bij Conduction betekent deel uitmaken van een toegewijd team dat positieve verandering nastreeft via technologie. We waarderen diversiteit, moedigen open communicatie aan en bieden ruimte voor groei. + +**Waarom Conduction?** +- **Betekenisvol werk** β€” jouw bijdrage heeft directe impact op het leven van burgers +- **Innovatie** β€” we staan aan de voorhoede van technologische vernieuwing +- **Samenwerking** β€” jouw ideeΓ«n en input zijn hier welkom +- **Professionele groei** β€” we ondersteunen jouw ontwikkeling + +Bekijk onze [vacatures](WayOfWork/vacancies) of bezoek [conduction.nl](https://www.conduction.nl/). diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/Products/.gitkeep b/website/i18n/nl/docusaurus-plugin-content-docs/current/Products/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/Products/overview.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/Products/overview.md new file mode 100644 index 0000000..1ee3451 --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/Products/overview.md @@ -0,0 +1,22 @@ +--- +id: products-overview +title: Producten & Diensten +sidebar_label: Overzicht +sidebar_position: 1 +--- + +# Producten & Diensten + +Conduction ontwikkelt open-source componenten voor de digitale overheidsinfrastructuur en levert diensten om organisaties te helpen deze te adopteren. + +Voor een volledig overzicht van onze producten, diensten en tarieven, bezoek onze website: + +- **Website**: [conduction.nl](https://conduction.nl) +- **Open Catalogi**: [github.com/ConductionNL/opencatalogi](https://github.com/ConductionNL/opencatalogi) +- **Open Connector**: [github.com/ConductionNL/openconnector](https://github.com/ConductionNL/openconnector) +- **Open Registers**: [github.com/ConductionNL/openregisters](https://github.com/ConductionNL/openregisters) +- **Alle repositories**: [github.com/ConductionNL](https://github.com/ConductionNL) + +## Contact + +Interesse om met ons samen te werken? Neem contact op via [conduction.nl](https://conduction.nl) of open een issue op GitHub. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/.gitkeep b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Issue_flow.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Issue_flow.md new file mode 100644 index 0000000..cb1aa0c --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Issue_flow.md @@ -0,0 +1,74 @@ +--- +id: way-of-working +title: Issue Flow en Sprintplanning +sidebar_label: Werkwijze +sidebar_position: 3 +description: Hoe Conduction sprints plant, issues beheert en software oplevert +--- + +# Issue Flow en Sprintplanning + + +## Epics aanmaken en inschatten + +1. Maak Epics aan in Jira, gekoppeld aan specifieke doelen + - Epics vertegenwoordigen complete functionele features + - Elke epic levert zelfstandige bedrijfswaarde op +2. De Product Owner voert uit: + - T-shirt sizing van epics + - Prioriteitstelling + - Deadline-afstemming met gerelateerde doelen + +### T-shirt Sizing Referentietabel + +| Grootte | Uren | Complexiteit | +|---------|------|--------------| +| XS | 1–4 | Zeer klein, eenvoudige taak | +| S | 4–8 | Kleine taak, recht-toe-recht-aan | +| M | 8–16 | Gemiddelde complexiteit | +| L | 16–32 | Grote, complexe taak | +| XL | 32–80 | Zeer groot, hoog complex | +| XXL | 80+ | Grote onderneming, opbreken nodig | + +## Roadmapplanning + +1. De Scrum Master maakt een initiΓ«le roadmap op basis van: + - Epic T-shirt sizes + - Deadlines + - Teamcapaciteit + - Epic prioriteiten +2. De Product Owner beoordeelt en keurt de roadmap goed + +## User Story Ontwikkeling + +1. Developers maken user stories voor geplande epics, begeleid door de Scrum Master +2. Issue flow: + - Scrum Master beoordeelt stories op issuecriteria + - Bij goedkeuring: status wordt "Ready for Development" (toegewezen aan Product Owner) + - Product Owner beoordeelt op aansluiting bij de gewenste functionaliteit + - Product Owner geeft feedback terug, of zet de status op "Selected for Development" en verwijdert de toewijzing + +## Code Ontwikkeling + +1. Developers pakken ontoegewezen issues op met status "Selected for Development" +2. Na voltooiing en merge naar de `development`-branch: + - Status wordt "Review" + - Tester kan testen via het beta-kanaal (merges naar `beta` triggeren een betabuild) +3. Na succesvol testen worden voltooide issues: + - Gepresenteerd aan de Product Owner tijdens de sprintreview (vrijdag) + - Maandagochtend gereleased naar `main` na succesvolle review (triggert een stabiele release) + +### PR-labels voor Versiebeheer + +Elk pull request moet worden gelabeld met `major`, `minor` of `patch` om de versieverhoging te bepalen. Zonder label is de standaard `patch`. Zie het [Releaseproces](release-process) voor uitleg over branching, versiebeheer en deployment. + +## Sprint Afsluiting + +1. De Scrum Master bereidt een sprintreviewvoorstel voor met: + - Lijst van voltooide issues + - Overzicht van onvoltooide issues + - Aanbeveling per onvoltooid issue (aanhouden of terug naar backlog) +2. Tijdens de sprintreview (vrijdag): + - Team beoordeelt onvoltooide issues + - Per issue wordt besloten: aanhouden of terug naar backlog + - Beslissingen worden genomen in lijn met roadmapprioriteiten diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Vacancies.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Vacancies.md new file mode 100644 index 0000000..1484b22 --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Vacancies.md @@ -0,0 +1,31 @@ +--- +id: vacancies +title: Vacatures bij Conduction +sidebar_label: Vacatures +sidebar_position: 5 +description: Openstaande functies en hoe je solliciteert bij Conduction +--- + +# Vacatures bij Conduction + + +Welkom bij het carriΓ¨regedeelte van Conduction! We zijn een dynamisch Nederlands ICT-bedrijf gespecialiseerd in open-source softwareoplossingen voor overheidsinstanties. Bij Conduction zijn we op een missie om de digitale wereld te transformeren naar een eerlijkere, inclusievere en transparantere omgeving voor iedereen. + +## Huidige Vacatures + +Zie de [Engelse vacaturepagina](/docs/WayOfWork/Vacancies) voor actuele openstaande posities. + +## Hoe Solliciteer Je? + +Wij verwerken sollicitaties via GitHub Issues: + +1. Ga naar [github.com/ConductionNL/.github/issues](https://github.com/ConductionNL/.github/issues) +2. Maak een nieuw issue aan met als titel: `[Sollicitatie] Jouw naam β€” Gewenste functie` +3. Voeg je CV en motivatie toe als bijlage of tekst in het issue +4. We nemen binnen 5 werkdagen contact op + +Geen openstaande vacature die bij je past? Stuur een open sollicitatie via hetzelfde kanaal. + +## ICT NL CAO + +Conduction volgt de ICT NL CAO voor eerlijke arbeidsvoorwaarden. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/contributing.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/contributing.md new file mode 100644 index 0000000..a835e1e --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/contributing.md @@ -0,0 +1,151 @@ +--- +id: contributing +title: Bijdragen aan Conduction +sidebar_label: Bijdragen +sidebar_position: 6 +description: Hoe je kunt bijdragen aan de open-source projecten van Conduction β€” code, docs, vertalingen en meer +--- + +# Bijdragen aan Conduction + +Bedankt voor je interesse in bijdragen! Elke bijdrage β€” code, documentatie, vertaling, bugreport of idee β€” helpt ons dichter bij ons doel: ervoor zorgen dat elke inwoner van Nederland automatisch de overheidsdiensten ontvangt waar hij of zij recht op heeft. + +Deze gids geldt voor alle repositories onder [ConductionNL](https://github.com/ConductionNL). De gezaghebbende bron is [CONTRIBUTING.md](https://github.com/ConductionNL/.github/blob/main/CONTRIBUTING.md) in onze organisatie `.github`-repository. + +--- + +## Manieren om bij te dragen + +Je hoeft geen code te schrijven om bij te dragen: + +| Type bijdrage | Waar | +|---|---| +| πŸ› Bug melden | GitHub Issues | +| πŸ’‘ Feature voorstellen | GitHub Issues | +| πŸ“– Documentatie verbeteren | PR naar de relevante repo | +| 🌐 Inhoud vertalen | PR naar `.github` (deze docs-site) | +| πŸ” Pull request reviewen | GitHub PR review | +| πŸ’¬ Vragen beantwoorden | GitHub Discussions / Issues | +| πŸ”’ Beveiligingsprobleem melden | Zie [Beveiligingsbeleid](../ISO/security) | + +--- + +## Eerste bijdragers + +Nieuw bij open source of bij Conduction? Zoek naar issues met het label [`good first issue`](https://github.com/search?q=org%3AConductionNL+label%3A%22good+first+issue%22&type=issues) β€” deze zijn geschikt voor mensen zonder diepe contextkennis. + +Laat gerust een reactie achter op een issue dat je aanspreekt. We helpen je op weg. + +--- + +## Code bijdragen + +### Externe bijdragers (fork & PR) + +1. Fork de repository +2. Maak een branch aan vanaf `development`: `git checkout -b feature/jouw-feature-naam` +3. Maak je wijzigingen en commit met [Conventional Commits](#commit-berichten) +4. Onderteken je commits (zie [DCO](#developer-certificate-of-origin)) +5. Push naar je fork en open een PR naar `development` + +### Conduction-teamleden (directe branch) + +1. Maak een branch aan vanaf `development`: `feature/*` of `bugfix/*` +2. Open een PR naar `development` wanneer je klaar bent + +### PR-checklist + +- [ ] CI-kwaliteitschecks slagen lokaal +- [ ] Nieuwe code heeft tests waar van toepassing +- [ ] Documentatie bijgewerkt als gedrag wijzigt +- [ ] PR gelabeld met `major`, `minor` of `patch` +- [ ] DCO sign-off op alle commits (`git commit -s`) + +--- + +## Branch Model + +``` +feature/* ──┐ +bugfix/* ──┼──→ development ──→ beta ──→ main +hotfix/* β”€β”€β”˜ +``` + +| Doel | Toegestane bronnen | Reviews vereist | +|---|---|---| +| `development` | `feature/*`, `bugfix/*` | 1 | +| `beta` | `development`, `hotfix/*` | 1 | +| `main` | `beta`, `hotfix/*` | 2 | + +Geen force pushes. Geen directe pushes. Alle wijzigingen via pull request. Zie het volledige [Releaseproces](release-process) voor details. + +--- + +## Kwaliteitsworkflow + +Elke PR triggert geautomatiseerde kwaliteitschecks β€” alle moeten slagen voor merge. + +**PHP:** syntax lint, PHPCS (PSR-12), PHPStan (level 5), Psalm, PHPMD + +**Frontend:** ESLint, Stylelint + +**Dependencies:** licentiecontrole, kwetsbaarheidsscan + +```bash +# Lokaal uitvoeren +composer cs:check && composer phpstan && composer psalm +npm run lint +``` + +--- + +## Commit-berichten + +We gebruiken [Conventional Commits](https://www.conventionalcommits.org/): + +``` +feat: proactieve servicematching toevoegen +fix: null pointer in namespace parser oplossen +docs: contributing-gids bijwerken +chore: PHPStan upgraden naar v2 +``` + +- Imperatieve wijs ("toevoegen" niet "toegevoegd") +- Eerste regel maximaal 72 tekens +- Verwijs naar issues met `Closes #123` in de berichttekst + +--- + +## Developer Certificate of Origin + +Alle bijdragen moeten ondertekend zijn: + +```bash +git commit -s -m "feat: jouw commit-bericht" +``` + +Dit voegt `Signed-off-by: Jouw Naam ` toe en bevestigt dat je het recht hebt de bijdrage in te dienen onder de projectlicentie. Zie [developercertificate.org](https://developercertificate.org/). + +--- + +## Ontwikkelomgeving instellen + +1. Installeer PHP 8.1+ en Node.js 20+ +2. Installeer Composer +3. Clone de repository (of je fork) +4. Voer `composer install && npm install` uit +5. Stel een [Nextcloud-ontwikkelomgeving](https://github.com/ConductionNL/nextcloud-docker-dev) in + +--- + +## Community + +- [Common Ground Slack](https://commonground.nl) +- [LinkedIn](https://www.linkedin.com/company/conduction/) +- [GitHub Discussions](https://github.com/orgs/ConductionNL/discussions) + +--- + +## Licentie + +Door bij te dragen ga je ermee akkoord dat jouw bijdragen worden gelicenseerd onder dezelfde licentie als het project (EUPL-1.2 tenzij anders vermeld in de repository). diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/intro.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/intro.md new file mode 100644 index 0000000..5147338 --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/intro.md @@ -0,0 +1,43 @@ +--- +id: way-of-work +title: Hoe We Werken bij Conduction +sidebar_label: Hoe We Werken +sidebar_position: 1 +description: De missie, waarden en werkwijze van Conduction +--- + +# Hoe We Werken bij Conduction + + +## Wie We Zijn + +Conduction bouwt open-source componenten voor de digitale overheidsinfrastructuur. We bestaan om overheidsdiensten beter te maken voor burgers β€” transparant, inclusief en toegankelijk by design. + +**Ons Big Hairy Audacious Goal (2035):** Elke inwoner van Nederland ontvangt automatisch de overheidsdiensten waar hij of zij recht op heeft, zonder daarvoor een aanvraag te hoeven indienen. + +## Onze Waarden + +Alles wat we doen is gebaseerd op vijf kernwaarden: + +| Waarde | Wat het betekent in de praktijk | +|---|---| +| **Democratisch** | We bouwen in het open. Beslissingen worden samen genomen, niet top-down. | +| **Inclusief** | Onze software werkt voor iedereen, ook voor mensen met een beperking of beperkte digitale vaardigheden. | +| **Transparant** | Onze code, onze roadmap en onze redenering zijn openbaar. Geen black boxes. | +| **Verantwoord** | We bouwen voor de lange termijn. Duurzaam, onderhoudbaar en betrouwbaar. | +| **Innovatief** | We daagden de status quo uit en verkennen betere manieren van werken. | + +## Hoe We Werken + +We werken in kleine, zelfsturende teams met agile methoden. We geven de voorkeur aan GitHub Issues boven lange e-mails, werkende software boven documentatie, en concrete resultaten boven procestheater. + +- **Ons werk leeft op GitHub** β€” [github.com/ConductionNL](https://github.com/ConductionNL) +- **We bouwen op Common Ground** β€” open standaarden voor Nederlandse overheidssoftware +- **We eten ons eigen hondenvoer** β€” we gebruiken de producten die we bouwen + +## Meer Lezen + +- [Volledige bedrijfsintroductie](/docs/intro) β€” marktpositie, competenties, merkbeloften +- [Organisatiestructuur](organisation) β€” rollen, verantwoordelijkheden, teamstructuur +- [Werkwijze](way-of-working) β€” sprints, issue flow, codestandaarden +- [Releaseproces](release-process) β€” branch model, versiebeheer, deployment diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/organisation.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/organisation.md new file mode 100644 index 0000000..c30d08d --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/organisation.md @@ -0,0 +1,105 @@ +--- +id: organisation +title: Organisatiestructuur bij Conduction +sidebar_label: Organisatie +sidebar_position: 2 +description: De organisatiestructuur, rollen en verantwoordelijkheden bij Conduction +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Organisatiestructuur bij Conduction + +:::caution Ter managementbeoordeling + +De inhoud van deze pagina is gebaseerd op een eerdere versie en wordt momenteel herzien. Het **organogram is leidend** β€” raadpleeg dat bij vragen over de actuele structuur. Deze pagina ligt ter beoordeling bij het managementteam. + +::: + +:::info Organogram + +Het actuele organogram is beschikbaar via het management. Neem contact op met je teamlead voor de meest recente versie. + +::: + +## Organisatieniveaus + +### Aandeelhouders +De aandeelhoudersstructuur bestaat uit drie entiteiten (B.V.'s). + +### Bestuur +Het bestuur bestaat momenteel uit één Algemeen Directeur (CEO). Het bestuur opereert uitsluitend op strategisch niveau: lange-termijn visie, strategische besluitvorming, corporate governance en risicobeheer. + +### Leiderschapsteam +Conduction werkt bewust met een **Leiderschapsteam** in plaats van een traditioneel managementteam. Het principe: "eerste onder gelijken" β€” geen top-down hiΓ«rarchie, maar leiderschap vanuit betrokkenheid en vakkennis. + +Leiderschapsteamleden zijn: +- Actief betrokken bij de dagelijkse werkzaamheden van hun team +- Tegelijkertijd teamlid Γ©n teamleider +- Gericht op het mogelijk maken en versterken van hun team + +Het leiderschapsteam vergadert wekelijks voor operationele afstemming en zorgt voor samenwerking tussen teams. + +### Teamleads +Teamleads zijn verantwoordelijk voor de dagelijkse aansturing en ontwikkeling van hun team. Ze opereren autonoom binnen de gestelde doelen en zijn aanspreekpunt voor zowel inhoudelijke als organisatorische vraagstukken. + +## Functies en Rollen + +Conduction onderscheidt **functies** (formeel, vastgelegd) en **rollen** (flexibel, contextafhankelijk). Iemand kan meerdere rollen combineren naast zijn of haar formele functie. + +## Teams + + + + +**HR Lead** β€” personeelszaken, werving, onboarding, arbeidsvoorwaarden, HR-beleid. + +**Kwaliteitsmanager** β€” kwaliteitsmanagementsysteem (ISO 9001), interne audits, continue verbetering. + +**Finance Lead** β€” financiΓ«le planning, rapportage, facturatie, compliance. + + + + +**Operations Lead** β€” beheer van infrastructuur en klantomgevingen, SLA-bewaking. + +**Support Engineer** β€” eerstelijns klantondersteuning, incidentafhandeling, documentatie. + + + + +**Development Lead** β€” technische richting, codestandaarden, sprintplanning. + +**Product Owner** β€” backlog, prioritering, stakeholdercommunicatie. + +**Lead Developer** β€” technische architectuur, code reviews, mentoring. + +**Developer** β€” frontend of backend ontwikkeling, unit tests, documentatie. + + + + +**Commercieel Lead** β€” business development, accountbeheer, partnerships. + +**Sales Support & Marketingcommunicatie** β€” contentontwikkeling, campagnes, evenementen. + + + + +**R&D Lead** β€” innovatieprojecten, subsidieaanvragen, kennisdeling. + +**Solution Architect** β€” technische visie, Common Ground architectuur, klantadvies. + + + + +## Kwaliteits- en Veiligheidsfunctie + +De **Kwaliteits- & Veiligheidslead** is verantwoordelijk voor: +- Het Kwaliteitsmanagementsysteem (ISO 9001:2015) +- Het Informatiebeveiligingsbeheersysteem (ISO 27001:2022) +- Interne audits en de jaarlijkse managementbeoordeling +- CoΓΆrdinatie van incidentafhandeling en corrigerende maatregelen + +Zie ook de [ISO & Kwaliteit](../ISO/iso-intro) sectie voor beleidsdocumenten. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/release-process.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/release-process.md new file mode 100644 index 0000000..bf616be --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/release-process.md @@ -0,0 +1,45 @@ +--- +id: release-process +title: Releaseproces +sidebar_label: Releaseproces +sidebar_position: 4 +description: Hoe Conduction versies beheert, branches hanteert en Nextcloud-apps uitbrengt +--- + +# Releaseproces + + +## Branch Model + +``` +feature/* ──┐ +bugfix/* ──┼──→ development ──→ beta ──→ main +hotfix/* β”€β”€β”˜ ↑ + └── (hotfix kan rechtstreeks) +``` + +- **`development`**: Integratiebranch β€” geen builds +- **`beta`**: Nachtelijke builds voor testdoeleinden +- **`main`**: Stabiele releases + +## Versiebeheer + +We gebruiken [Semantic Versioning](https://semver.org). De versie wordt **nooit handmatig aangepast** β€” hij wordt automatisch berekend op basis van PR-labels: + +| Label | Effect | +|---|---| +| `patch` | 1.0.0 β†’ 1.0.1 | +| `minor` | 1.0.0 β†’ 1.1.0 | +| `major` | 1.0.0 β†’ 2.0.0 | + +Zonder label: standaard `patch`. + +## Hotfixes + +Kritieke fixes kunnen de normale flow omzeilen en rechtstreeks naar `beta` of `main` worden gemerged. Gebruik het prefix `hotfix/` voor de branchnaam. + +## Meer Lezen + +- **Gecentraliseerde workflows**: [github.com/ConductionNL/.github](https://github.com/ConductionNL/.github/tree/main/.github/workflows) +- **Semantic Versioning**: [semver.org](https://semver.org) +- [Volledige Engelse documentatie](/docs/WayOfWork/release-process) voor setup-instructies en FAQ diff --git a/website/package-lock.json b/website/package-lock.json new file mode 100644 index 0000000..836fbc7 --- /dev/null +++ b/website/package-lock.json @@ -0,0 +1,14311 @@ +{ + "name": "conduction-docs", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "conduction-docs", + "version": "0.0.0", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/preset-classic": "2.4.3", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "prism-react-renderer": "^1.3.5", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.4.3" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@algolia/abtesting": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.15.2.tgz", + "integrity": "sha512-rF7vRVE61E0QORw8e2NNdnttcl3jmFMWS9B4hhdga12COe+lMa26bQLfcBn/Nbp9/AF/8gXdaRCPsVns3CnjsA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz", + "integrity": "sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.17.9", + "@algolia/autocomplete-shared": "1.17.9" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz", + "integrity": "sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.9" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz", + "integrity": "sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.9" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz", + "integrity": "sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==", + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/cache-browser-local-storage": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.27.0.tgz", + "integrity": "sha512-YGog2s57sO20lvpa+hv5XLAAmiTI1kHsCMRtPVfiaOdIQnvRla21lfH08onqEbZihOPVI8GULwt79zQB2ymKzg==", + "license": "MIT", + "dependencies": { + "@algolia/cache-common": "4.27.0" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.27.0.tgz", + "integrity": "sha512-Sr8zjNXj82p6lO4W9CdzfF0m0/9h/H6VAdSHOTtimm/cTzXIYXRI2IZq7+Nt2ljJ7Ukx+7dIFcxQjE57eQSPsw==", + "license": "MIT" + }, + "node_modules/@algolia/cache-in-memory": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.27.0.tgz", + "integrity": "sha512-abgMRTcVD0IllNvMM9JFhxtyLn1v6Ey7mQ7+BGS3JCzvkCX7KZqlS0BIuVUDgx9sPIfOeNsG/awGzMmP50TwZw==", + "license": "MIT", + "dependencies": { + "@algolia/cache-common": "4.27.0" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.49.2.tgz", + "integrity": "sha512-XyvKCm0RRmovMI/ChaAVjTwpZhXdbgt3iZofK914HeEHLqD1MUFFVLz7M0+Ou7F56UkHXwRbpHwb9xBDNopprQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-account": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.27.0.tgz", + "integrity": "sha512-sSHxwrKTKJrwfoR/LcQJZfmiWJcM5d9Rp7afMChxOcdGdkSdIwrNBC8SCcHRenA3GsZ6mg+j6px7KWYxJ34btA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/client-search": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-account/node_modules/@algolia/client-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", + "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-account/node_modules/@algolia/client-search": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz", + "integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.27.0.tgz", + "integrity": "sha512-MqIDyxODljn9ZC4oqjQD0kez2a4zjIJ9ywA/b7cIiUiK/tDjZNTVjYd9WXMKQlXnWUwfrfXJZClVVqN1iCXS+Q==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/client-search": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-analytics/node_modules/@algolia/client-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", + "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-analytics/node_modules/@algolia/client-search": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz", + "integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.49.2.tgz", + "integrity": "sha512-bn0biLequn3epobCfjUqCxlIlurLr4RHu7RaE4trgN+RDcUq6HCVC3/yqq1hwbNYpVtulnTOJzcaxYlSr1fnuw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.49.2.tgz", + "integrity": "sha512-z14wfFs1T3eeYbCArC8pvntAWsPo9f6hnUGoj8IoRUJTwgJiiySECkm8bmmV47/x0oGHfsVn3kBdjMX0yq0sNA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.27.0.tgz", + "integrity": "sha512-OZqaFFVm+10hAlmxpiTWi/o2n+YKBESbSqSy2yXAumPH/kaK4moJHFblbh8IkV3KZR0lLm4hzPtn8Q2nWNiDUA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-personalization/node_modules/@algolia/client-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", + "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.49.2.tgz", + "integrity": "sha512-HZwApmNkp0DiAjZcLYdQLddcG4Agb88OkojiAHGgcm5DVXobT5uSZ9lmyrbw/tmQBJwgu2CNw4zTyXoIB7YbPA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.49.2.tgz", + "integrity": "sha512-y1IOpG6OSmTpGg/CT0YBb/EAhR2nsC18QWp9Jy8HO9iGySpcwaTvs5kHa17daP3BMTwWyaX9/1tDTDQshZzXdg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/events": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==", + "license": "MIT" + }, + "node_modules/@algolia/ingestion": { + "version": "1.49.2", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.49.2.tgz", + "integrity": "sha512-YYJRjaZ2bqk923HxE4um7j/Cm3/xoSkF2HC2ZweOF8cXL3sqnlndSUYmCaxHFjNPWLaSHk2IfssX6J/tdKTULw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/logger-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.27.0.tgz", + "integrity": "sha512-pIrmQRXtDV+zTMVXKtKCosC2rWhn0F0TdUeb9etA6RiAz6jY6bY6f0+JX7YekDK09SnmZMLIyUa7Jci+Ied9bw==", + "license": "MIT" + }, + "node_modules/@algolia/logger-console": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.27.0.tgz", + "integrity": "sha512-UWvta8BxsR/u5z9eI088mOSLQaGtmoCtXeN3DYJurlxAdJwPuKtEb5+433kxA6/E9f2/JgoW89KZ1vNP9pcHBQ==", + "license": "MIT", + "dependencies": { + "@algolia/logger-common": "4.27.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.49.2", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.49.2.tgz", + "integrity": "sha512-9WgH+Dha39EQQyGKCHlGYnxW/7W19DIrEbCEbnzwAMpGAv1yTWCHMPXHxYa+LcL3eCp2V/5idD1zHNlIKmHRHg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.27.0.tgz", + "integrity": "sha512-CFy54xDjrsazPi3KN04yPmLRDT72AKokc3RLOdWQvG0/uEUjj7dhWqe9qenxpL4ydsjO7S1eY5YqmX+uMGonlg==", + "license": "MIT", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.27.0", + "@algolia/cache-common": "4.27.0", + "@algolia/cache-in-memory": "4.27.0", + "@algolia/client-common": "4.27.0", + "@algolia/client-search": "4.27.0", + "@algolia/logger-common": "4.27.0", + "@algolia/logger-console": "4.27.0", + "@algolia/requester-browser-xhr": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/requester-node-http": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/client-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", + "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/client-search": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz", + "integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/requester-browser-xhr": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.27.0.tgz", + "integrity": "sha512-dTenMBIIpyp5o3C2ZnfbsuSlD/lL9jPkk6T+2+qm38fyw2nf49ANbcHFE79NgiGrnmw7QrYveCs9NIP3Wk4v6g==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/requester-node-http": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.27.0.tgz", + "integrity": "sha512-y8nUqaUQeSOQ5oaNo0b2QPznyBFW9LoIwljyUphJ+gUZpU6O/j2/C8ovoqDpIe6J0etqHg5RCcBizrCFZuLpyw==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.49.2.tgz", + "integrity": "sha512-3UhYCcWX6fbtN8ABcxZlhaQEwXFh3CsFtARyyadQShHMPe3mJV9Wel4FpJTa+seugRkbezFz0tt6aPTZSYTBuA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.27.0.tgz", + "integrity": "sha512-VC3prAQVgWTubMStb3mJz6i61Hqbtagi2LeIbgNtoFJFff3XZDcAaO1D5r0GYl2+DrB2VzUHnQXbkiuI+HHYyg==", + "license": "MIT" + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.49.2.tgz", + "integrity": "sha512-G94VKSGbsr+WjsDDOBe5QDQ82QYgxvpxRGJfCHZBnYKYsy/jv9qGIDb93biza+LJWizQBUtDj7bZzp3QZyzhPQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.49.2.tgz", + "integrity": "sha512-UuihBGHafG/ENsrcTGAn5rsOffrCIRuHMOsD85fZGLEY92ate+BMTUqxz60dv5zerh8ZumN4bRm8eW2z9L11jA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.27.0.tgz", + "integrity": "sha512-PvSbELU4VjN3xSX79ki+zIdOGhTxyJXWvRDzkUjfTx2iNfPWDdTjzKbP1o+268coJztxrkuBwJz90Urek7o1Kw==", + "license": "MIT", + "dependencies": { + "@algolia/cache-common": "4.27.0", + "@algolia/logger-common": "4.27.0", + "@algolia/requester-common": "4.27.0" + } + }, + "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/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "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/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz", + "integrity": "sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-jsx": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", + "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.2.tgz", + "integrity": "sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.29.2.tgz", + "integrity": "sha512-Lc94FOD5+0aXhdb0Tdg3RUtqT6yWbI/BbFWvlaSJ3gAb9Ks+99nHRDKADVqC37er4eCB0fHyWT+y+K3QOvJKbw==", + "license": "MIT", + "dependencies": { + "core-js-pure": "^3.48.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.9.0.tgz", + "integrity": "sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==", + "license": "MIT" + }, + "node_modules/@docsearch/react": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.9.0.tgz", + "integrity": "sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.17.9", + "@algolia/autocomplete-preset-algolia": "1.17.9", + "@docsearch/css": "3.9.0", + "algoliasearch": "^5.14.2" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/client-analytics": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.49.2.tgz", + "integrity": "sha512-jq/3qvtmj3NijZlhq7A1B0Cl41GfaBpjJxcwukGsYds6aMSCWrEAJ9pUqw/C9B3hAmILYKl7Ljz3N9SFvekD3Q==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/client-personalization": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.49.2.tgz", + "integrity": "sha512-GpRf7yuuAX93+Qt0JGEJZwgtL0MFdjFO9n7dn8s2pA9mTjzl0Sc5+uTk1VPbIAuf7xhCP9Mve+URGb6J+EYxgA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/recommend": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.49.2.tgz", + "integrity": "sha512-K7Gp5u+JtVYgaVpBxF5rGiM+Ia8SsMdcAJMTDV93rwh00DKNllC19o1g+PwrDjDvyXNrnTEbofzbTs2GLfFyKA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@docsearch/react/node_modules/algoliasearch": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.49.2.tgz", + "integrity": "sha512-1K0wtDaRONwfhL4h8bbJ9qTjmY6rhGgRvvagXkMBsAOMNr+3Q2SffHECh9DIuNVrMA1JwA0zCwhyepgBZVakng==", + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.15.2", + "@algolia/client-abtesting": "5.49.2", + "@algolia/client-analytics": "5.49.2", + "@algolia/client-common": "5.49.2", + "@algolia/client-insights": "5.49.2", + "@algolia/client-personalization": "5.49.2", + "@algolia/client-query-suggestions": "5.49.2", + "@algolia/client-search": "5.49.2", + "@algolia/ingestion": "1.49.2", + "@algolia/monitoring": "1.49.2", + "@algolia/recommend": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@docusaurus/core": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.4.3.tgz", + "integrity": "sha512-dWH5P7cgeNSIg9ufReX6gaCl/TmrGKD38Orbwuz05WPhAQtFXHd5B8Qym1TiXfvUNvwoYKkAJOJuGe8ou0Z7PA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.18.6", + "@babel/generator": "^7.18.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.18.6", + "@babel/preset-env": "^7.18.6", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@babel/runtime": "^7.18.6", + "@babel/runtime-corejs3": "^7.18.6", + "@babel/traverse": "^7.18.8", + "@docusaurus/cssnano-preset": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "@slorber/static-site-generator-webpack-plugin": "^4.0.7", + "@svgr/webpack": "^6.2.1", + "autoprefixer": "^10.4.7", + "babel-loader": "^8.2.5", + "babel-plugin-dynamic-import-node": "^2.3.3", + "boxen": "^6.2.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "clean-css": "^5.3.0", + "cli-table3": "^0.6.2", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "copy-webpack-plugin": "^11.0.0", + "core-js": "^3.23.3", + "css-loader": "^6.7.1", + "css-minimizer-webpack-plugin": "^4.0.0", + "cssnano": "^5.1.12", + "del": "^6.1.1", + "detect-port": "^1.3.0", + "escape-html": "^1.0.3", + "eta": "^2.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "html-minifier-terser": "^6.1.0", + "html-tags": "^3.2.0", + "html-webpack-plugin": "^5.5.0", + "import-fresh": "^3.3.0", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "mini-css-extract-plugin": "^2.6.1", + "postcss": "^8.4.14", + "postcss-loader": "^7.0.0", + "prompts": "^2.4.2", + "react-dev-utils": "^12.0.1", + "react-helmet-async": "^1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", + "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-router": "^5.3.3", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.3.3", + "rtl-detect": "^1.0.4", + "semver": "^7.3.7", + "serve-handler": "^6.1.3", + "shelljs": "^0.8.5", + "terser-webpack-plugin": "^5.3.3", + "tslib": "^2.4.0", + "update-notifier": "^5.1.0", + "url-loader": "^4.1.1", + "wait-on": "^6.0.1", + "webpack": "^5.73.0", + "webpack-bundle-analyzer": "^4.5.0", + "webpack-dev-server": "^4.9.3", + "webpack-merge": "^5.8.0", + "webpackbar": "^5.0.2" + }, + "bin": { + "docusaurus": "bin/docusaurus.mjs" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/cssnano-preset": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.4.3.tgz", + "integrity": "sha512-ZvGSRCi7z9wLnZrXNPG6DmVPHdKGd8dIn9pYbEOFiYihfv4uDR3UtxogmKf+rT8ZlKFf5Lqne8E8nt08zNM8CA==", + "license": "MIT", + "dependencies": { + "cssnano-preset-advanced": "^5.3.8", + "postcss": "^8.4.14", + "postcss-sort-media-queries": "^4.2.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/logger": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.4.3.tgz", + "integrity": "sha512-Zxws7r3yLufk9xM1zq9ged0YHs65mlRmtsobnFkdZTxWXdTYlWWLWdKyNKAsVC+D7zg+pv2fGbyabdOnyZOM3w==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.4.3.tgz", + "integrity": "sha512-b1+fDnWtl3GiqkL0BRjYtc94FZrcDDBV1j8446+4tptB9BAOlePwG2p/pK6vGvfL53lkOsszXMghr2g67M0vCw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.18.8", + "@babel/traverse": "^7.18.8", + "@docusaurus/logger": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@mdx-js/mdx": "^1.6.22", + "escape-html": "^1.0.3", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "image-size": "^1.0.1", + "mdast-util-to-string": "^2.0.0", + "remark-emoji": "^2.2.0", + "stringify-object": "^3.3.0", + "tslib": "^2.4.0", + "unified": "^9.2.2", + "unist-util-visit": "^2.0.3", + "url-loader": "^4.1.1", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/module-type-aliases": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.4.3.tgz", + "integrity": "sha512-cwkBkt1UCiduuvEAo7XZY01dJfRn7UR/75mBgOdb1hKknhrabJZ8YH+7savd/y9kLExPyrhe0QwdS9GuzsRRIA==", + "license": "MIT", + "dependencies": { + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/types": "2.4.3", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "*", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.3.tgz", + "integrity": "sha512-PVhypqaA0t98zVDpOeTqWUTvRqCEjJubtfFUQ7zJNYdbYTbS/E/ytq6zbLVsN/dImvemtO/5JQgjLxsh8XLo8Q==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "cheerio": "^1.0.0-rc.12", + "feed": "^4.2.2", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "reading-time": "^1.5.0", + "tslib": "^2.4.0", + "unist-util-visit": "^2.0.3", + "utility-types": "^3.10.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.4.3.tgz", + "integrity": "sha512-N7Po2LSH6UejQhzTCsvuX5NOzlC+HiXOVvofnEPj0WhMu1etpLEXE6a4aTxrtg95lQ5kf0xUIdjX9sh3d3G76A==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/module-type-aliases": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "@types/react-router-config": "^5.0.6", + "combine-promises": "^1.1.0", + "fs-extra": "^10.1.0", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0", + "utility-types": "^3.10.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.4.3.tgz", + "integrity": "sha512-txtDVz7y3zGk67q0HjG0gRttVPodkHqE0bpJ+7dOaTH40CQFLSh7+aBeGnPOTl+oCPG+hxkim4SndqPqXjQ8Bg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "fs-extra": "^10.1.0", + "tslib": "^2.4.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.4.3.tgz", + "integrity": "sha512-LkUbuq3zCmINlFb+gAd4ZvYr+bPAzMC0hwND4F7V9bZ852dCX8YoWyovVUBKq4er1XsOwSQaHmNGtObtn8Av8Q==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "fs-extra": "^10.1.0", + "react-json-view": "^1.21.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.4.3.tgz", + "integrity": "sha512-KzBV3k8lDkWOhg/oYGxlK5o9bOwX7KpPc/FTWoB+SfKhlHfhq7qcQdMi1elAaVEIop8tgK6gD1E58Q+XC6otSQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.4.3.tgz", + "integrity": "sha512-5FMg0rT7sDy4i9AGsvJC71MQrqQZwgLNdDetLEGDHLfSHLvJhQbTCUGbGXknUgWXQJckcV/AILYeJy+HhxeIFA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-tag-manager": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-2.4.3.tgz", + "integrity": "sha512-1jTzp71yDGuQiX9Bi0pVp3alArV0LSnHXempvQTxwCGAEzUWWaBg4d8pocAlTpbP9aULQQqhgzrs8hgTRPOM0A==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-sitemap": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.4.3.tgz", + "integrity": "sha512-LRQYrK1oH1rNfr4YvWBmRzTL0LN9UAPxBbghgeFRBm5yloF6P+zv1tm2pe2hQTX/QP5bSKdnajCvfnScgKXMZQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "fs-extra": "^10.1.0", + "sitemap": "^7.1.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/preset-classic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.4.3.tgz", + "integrity": "sha512-tRyMliepY11Ym6hB1rAFSNGwQDpmszvWYJvlK1E+md4SW8i6ylNHtpZjaYFff9Mdk3i/Pg8ItQq9P0daOJAvQw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/plugin-content-blog": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/plugin-content-pages": "2.4.3", + "@docusaurus/plugin-debug": "2.4.3", + "@docusaurus/plugin-google-analytics": "2.4.3", + "@docusaurus/plugin-google-gtag": "2.4.3", + "@docusaurus/plugin-google-tag-manager": "2.4.3", + "@docusaurus/plugin-sitemap": "2.4.3", + "@docusaurus/theme-classic": "2.4.3", + "@docusaurus/theme-common": "2.4.3", + "@docusaurus/theme-search-algolia": "2.4.3", + "@docusaurus/types": "2.4.3" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/react-loadable": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "license": "MIT", + "dependencies": { + "@types/react": "*", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@docusaurus/theme-classic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.4.3.tgz", + "integrity": "sha512-QKRAJPSGPfDY2yCiPMIVyr+MqwZCIV2lxNzqbyUW0YkrlmdzzP3WuQJPMGLCjWgQp/5c9kpWMvMxjhpZx1R32Q==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/module-type-aliases": "2.4.3", + "@docusaurus/plugin-content-blog": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/plugin-content-pages": "2.4.3", + "@docusaurus/theme-common": "2.4.3", + "@docusaurus/theme-translations": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "copy-text-to-clipboard": "^3.0.1", + "infima": "0.2.0-alpha.43", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "postcss": "^8.4.14", + "prism-react-renderer": "^1.3.5", + "prismjs": "^1.28.0", + "react-router-dom": "^5.3.3", + "rtlcss": "^3.5.0", + "tslib": "^2.4.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-common": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.4.3.tgz", + "integrity": "sha512-7KaDJBXKBVGXw5WOVt84FtN8czGWhM0lbyWEZXGp8AFfL6sZQfRTluFp4QriR97qwzSyOfQb+nzcDZZU4tezUw==", + "license": "MIT", + "dependencies": { + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/module-type-aliases": "2.4.3", + "@docusaurus/plugin-content-blog": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/plugin-content-pages": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "clsx": "^1.2.1", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^1.3.5", + "tslib": "^2.4.0", + "use-sync-external-store": "^1.2.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-search-algolia": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.3.tgz", + "integrity": "sha512-jziq4f6YVUB5hZOB85ELATwnxBz/RmSLD3ksGQOLDPKVzat4pmI8tddNWtriPpxR04BNT+ZfpPUMFkNFetSW1Q==", + "license": "MIT", + "dependencies": { + "@docsearch/react": "^3.1.1", + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/theme-common": "2.4.3", + "@docusaurus/theme-translations": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "algoliasearch": "^4.13.1", + "algoliasearch-helper": "^3.10.0", + "clsx": "^1.2.1", + "eta": "^2.0.0", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-translations": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-2.4.3.tgz", + "integrity": "sha512-H4D+lbZbjbKNS/Zw1Lel64PioUAIT3cLYYJLUf3KkuO/oc9e0QCVhIYVtUI2SfBCF2NNdlyhBDQEEMygsCedIg==", + "license": "MIT", + "dependencies": { + "fs-extra": "^10.1.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/types": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.3.tgz", + "integrity": "sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.6.0", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.73.0", + "webpack-merge": "^5.8.0" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/utils": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.4.3.tgz", + "integrity": "sha512-fKcXsjrD86Smxv8Pt0TBFqYieZZCPh4cbf9oszUq/AMhZn3ujwpKaVYZACPX8mmjtYx0JOgNx52CREBfiGQB4A==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "2.4.3", + "@svgr/webpack": "^6.2.1", + "escape-string-regexp": "^4.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "github-slugger": "^1.4.0", + "globby": "^11.1.0", + "gray-matter": "^4.0.3", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.5", + "resolve-pathname": "^3.0.0", + "shelljs": "^0.8.5", + "tslib": "^2.4.0", + "url-loader": "^4.1.1", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-common": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.4.3.tgz", + "integrity": "sha512-/jascp4GbLQCPVmcGkPzEQjNaAk3ADVfMtudk49Ggb+131B1WDD6HqlSmDf8MxGdy7Dja2gc+StHf01kiWoTDQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-validation": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.4.3.tgz", + "integrity": "sha512-G2+Vt3WR5E/9drAobP+hhZQMaswRwDlp6qOMi7o7ZypB+VO7N//DZWhZEwhcRGepMDJGQEwtPv7UxtYwPL9PBw==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "2.4.3", + "@docusaurus/utils": "2.4.3", + "joi": "^17.6.0", + "js-yaml": "^4.1.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/@mdx-js/mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", + "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "license": "MIT", + "dependencies": { + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/mdx/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@mdx-js/mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@mdx-js/mdx/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/@mdx-js/mdx/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@mdx-js/mdx/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@mdx-js/mdx/node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "license": "MIT", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", + "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0" + } + }, + "node_modules/@mdx-js/util": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", + "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "license": "MIT" + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@slorber/static-site-generator-webpack-plugin": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz", + "integrity": "sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==", + "license": "MIT", + "dependencies": { + "eval": "^0.1.8", + "p-map": "^4.0.0", + "webpack-sources": "^3.2.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", + "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", + "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", + "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", + "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", + "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", + "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", + "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", + "@svgr/babel-plugin-remove-jsx-attribute": "*", + "@svgr/babel-plugin-remove-jsx-empty-expression": "*", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", + "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", + "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", + "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.0", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", + "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/hast-util-to-babel-ast": "^6.5.1", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "^6.0.0" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", + "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "svgo": "^2.8.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/webpack": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz", + "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-constant-elements": "^7.18.12", + "@babel/preset-env": "^7.19.4", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@svgr/core": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "@svgr/plugin-svgo": "^6.5.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "license": "MIT" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-config": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz", + "integrity": "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "^5.1.0" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "license": "MIT" + }, + "node_modules/@types/sax": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/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/accepts/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/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/algoliasearch": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.27.0.tgz", + "integrity": "sha512-C88C5grLa5VOCp9eYZJt+q99ik7yNdm92l7Q9+4XK0Md8kL05Lg8l2v9ZVX0uMW3mH9pAFxMMXlLOvqNumA4lw==", + "license": "MIT", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.27.0", + "@algolia/cache-common": "4.27.0", + "@algolia/cache-in-memory": "4.27.0", + "@algolia/client-account": "4.27.0", + "@algolia/client-analytics": "4.27.0", + "@algolia/client-common": "4.27.0", + "@algolia/client-personalization": "4.27.0", + "@algolia/client-search": "4.27.0", + "@algolia/logger-common": "4.27.0", + "@algolia/logger-console": "4.27.0", + "@algolia/recommend": "4.27.0", + "@algolia/requester-browser-xhr": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/requester-node-http": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/algoliasearch-helper": { + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.28.0.tgz", + "integrity": "sha512-GBN0xsxGggaCPElZq24QzMdfphrjIiV2xA+hRXE4/UMpN3nsF2WrM8q+x80OGvGpJWtB7F+4Hq5eSfWwuejXrg==", + "license": "MIT", + "dependencies": { + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 6" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/client-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", + "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/client-search": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz", + "integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/requester-browser-xhr": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.27.0.tgz", + "integrity": "sha512-dTenMBIIpyp5o3C2ZnfbsuSlD/lL9jPkk6T+2+qm38fyw2nf49ANbcHFE79NgiGrnmw7QrYveCs9NIP3Wk4v6g==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/requester-node-http": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.27.0.tgz", + "integrity": "sha512-y8nUqaUQeSOQ5oaNo0b2QPznyBFW9LoIwljyUphJ+gUZpU6O/j2/C8ovoqDpIe6J0etqHg5RCcBizrCFZuLpyw==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.27", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", + "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001774", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, + "node_modules/babel-loader": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz", + "integrity": "sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==", + "license": "MIT", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.4", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-apply-mdx-type-prop": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", + "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@mdx-js/util": "1.6.22" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@babel/core": "^7.11.6" + } + }, + "node_modules/babel-plugin-apply-mdx-type-prop/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "license": "MIT" + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-extract-import-names": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", + "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/babel-plugin-extract-import-names/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "license": "MIT" + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==", + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.10", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.10.tgz", + "integrity": "sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "license": "MIT" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/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/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "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/boxen": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", + "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "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/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001781", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz", + "integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/combine-promises": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", + "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compressible/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/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/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/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "license": "BSD-2-Clause", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "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.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" + }, + "node_modules/copy-text-to-clipboard": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.2.tgz", + "integrity": "sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "license": "MIT", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz", + "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.49.0.tgz", + "integrity": "sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "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/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", + "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", + "license": "MIT", + "dependencies": { + "cssnano": "^5.1.8", + "jest-worker": "^29.1.2", + "postcss": "^8.4.17", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "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-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "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/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-advanced": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz", + "integrity": "sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==", + "license": "MIT", + "dependencies": { + "autoprefixer": "^10.4.12", + "cssnano-preset-default": "^5.2.14", + "postcss-discard-unused": "^5.1.0", + "postcss-merge-idents": "^5.1.1", + "postcss-reduce-idents": "^5.2.0", + "postcss-zindex": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "license": "MIT", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "license": "MIT" + }, + "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-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "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/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "license": "MIT", + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detab": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", + "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", + "license": "MIT", + "dependencies": { + "repeat-string": "^1.5.4" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" + }, + "node_modules/detect-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "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/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "license": "BSD-3-Clause" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "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/electron-to-chromium": { + "version": "1.5.321", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz", + "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/emoticon": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz", + "integrity": "sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.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-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eta": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", + "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/eta-dev/eta?sponsor=1" + } + }, + "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/eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "dependencies": { + "@types/node": "*", + "require-like": ">= 0.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/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/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/express/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "license": "BSD-3-Clause", + "dependencies": { + "fbjs": "^3.0.0" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "license": "MIT", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "license": "MIT" + }, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "license": "MIT", + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flux": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz", + "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==", + "license": "BSD-3-Clause", + "dependencies": { + "fbemitter": "^3.0.0", + "fbjs": "^3.0.1" + }, + "peerDependencies": { + "react": "^15.0.2 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "license": "MIT", + "engines": { + "node": ">=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/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "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-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" + }, + "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": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", + "license": "ISC" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "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/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "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-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-to-hyperscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", + "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.3", + "comma-separated-tokens": "^1.0.0", + "property-information": "^5.3.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^4.0.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", + "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "license": "MIT", + "dependencies": { + "@types/parse5": "^5.0.0", + "hastscript": "^6.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "vfile-location": "^3.2.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", + "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^6.0.0", + "hast-util-to-parse5": "^6.0.0", + "html-void-elements": "^1.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^3.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" + }, + "node_modules/hast-util-to-parse5": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", + "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", + "license": "MIT", + "dependencies": { + "hast-to-hyperscript": "^9.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/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/hpack.js/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/hpack.js/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/hpack.js/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/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.6", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.6.tgz", + "integrity": "sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==", + "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "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-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "license": "MIT" + }, + "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/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "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/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "license": "MIT", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infima": { + "version": "0.2.0-alpha.43", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz", + "integrity": "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", + "license": "MIT" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "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", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "license": "MIT", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "license": "MIT" + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "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/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "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/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "license": "MIT", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/launch-editor": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.2.tgz", + "integrity": "sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "node_modules/lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/mdast-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", + "license": "MIT", + "dependencies": { + "unist-util-remove": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "license": "MIT", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", + "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "license": "MIT", + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.1.tgz", + "integrity": "sha512-k7G3Y5QOegl380tXmZ68foBRRjE9Ljavx835ObdvmZjQ639izvZD8CS7BkWw1qKPPzHsGL/JDhl0uyU1zc2rJw==", + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "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/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", + "license": "MIT" + }, + "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/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" + }, + "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/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "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/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "license": "MIT", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "license": "MIT", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==", + "license": "ISC" + }, + "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/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", + "license": "MIT", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-unused": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz", + "integrity": "sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", + "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.3.5", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/postcss-merge-idents": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz", + "integrity": "sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "license": "MIT", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "license": "MIT", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-idents": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz", + "integrity": "sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sort-media-queries": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz", + "integrity": "sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==", + "license": "MIT", + "dependencies": { + "sort-css-media-queries": "2.1.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.4.16" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/postcss-zindex": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz", + "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prism-react-renderer": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", + "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", + "license": "MIT", + "peerDependencies": { + "react": ">=0.14.9" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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-addr/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/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "license": "MIT", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==", + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/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/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==", + "license": "MIT", + "dependencies": { + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" + } + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-error-overlay": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz", + "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==", + "license": "MIT" + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, + "node_modules/react-helmet-async": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-json-view": { + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", + "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", + "license": "MIT", + "dependencies": { + "flux": "^4.0.1", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^8.3.2" + }, + "peerDependencies": { + "react": "^17.0.0 || ^16.3.0 || ^15.5.4", + "react-dom": "^17.0.0 || ^16.3.0 || ^15.5.4" + } + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "license": "MIT" + }, + "node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "license": "MIT", + "dependencies": { + "@types/react": "*", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", + "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.3" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "react-loadable": "*", + "webpack": ">=4.41.1 || 5.x" + } + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2" + }, + "peerDependencies": { + "react": ">=15", + "react-router": ">=5" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.9.tgz", + "integrity": "sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reading-time": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==", + "license": "MIT" + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "license": "MIT", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "license": "MIT", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.2.0.tgz", + "integrity": "sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==", + "license": "MIT", + "dependencies": { + "emoticon": "^3.2.0", + "node-emoji": "^1.10.0", + "unist-util-visit": "^2.0.3" + } + }, + "node_modules/remark-footnotes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", + "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "license": "MIT", + "dependencies": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/remark-mdx/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "license": "MIT" + }, + "node_modules/remark-mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/remark-mdx/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/remark-mdx/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/remark-mdx/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remark-mdx/node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "license": "MIT", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "license": "MIT", + "dependencies": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", + "license": "MIT", + "dependencies": { + "mdast-squeeze-paragraphs": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", + "engines": { + "node": "*" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", + "license": "MIT" + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "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/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rtl-detect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz", + "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==", + "license": "BSD-3-Clause" + }, + "node_modules/rtlcss": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", + "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + } + }, + "node_modules/rtlcss/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "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/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/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "license": "MIT", + "peer": true + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "license": "MIT", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "license": "MIT", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.7.tgz", + "integrity": "sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==", + "license": "MIT", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "mime-types": "2.1.18", + "minimatch": "3.1.5", + "path-is-inside": "1.0.2", + "path-to-regexp": "3.3.0", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/path-to-regexp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", + "license": "MIT" + }, + "node_modules/serve-index": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" + }, + "engines": { + "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/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/serve-index/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/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "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/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "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/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "license": "BSD-3-Clause", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "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/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/sitemap": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.3.tgz", + "integrity": "sha512-tAjEd+wt/YwnEbfNB2ht51ybBJxbEWwe5ki/Z//Wh0rpBFTCUSj46GnxUKEWzhfuJTsee8x3lybHxFgUMig2hw==", + "license": "MIT", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sort-css-media-queries": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz", + "integrity": "sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==", + "license": "MIT", + "engines": { + "node": ">= 6.3.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "license": "MIT" + }, + "node_modules/state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "license": "MIT" + }, + "node_modules/svgo": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.2.tgz", + "integrity": "sha512-TyzE4NVGLUFy+H/Uy4N6c3G0HEeprsVfge6Lmq+0FdQQ/zqoVYB62IsBZORsiL+o96s6ff/V6/3UQo/C0cgCAA==", + "license": "MIT", + "dependencies": { + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "sax": "^1.5.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/svgo/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.46.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", + "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/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/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "license": "MIT" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "license": "MIT" + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", + "deprecated": "Use String.prototype.trim() instead" + }, + "node_modules/trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "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": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/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/type-is/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/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", + "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/undici": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.24.5.tgz", + "integrity": "sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "license": "MIT" + }, + "node_modules/unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "license": "MIT", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", + "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", + "license": "MIT", + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "license": "MIT", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "license": "BSD-2-Clause", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/update-notifier/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/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/url-loader/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/url-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "license": "MIT", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/use-composed-ref": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.4.0.tgz", + "integrity": "sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.1.tgz", + "integrity": "sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.3.0.tgz", + "integrity": "sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==", + "license": "MIT", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "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/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "license": "MIT" + }, + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", + "license": "MIT" + }, + "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/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "license": "MIT", + "dependencies": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-namespaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", + "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/webpack": { + "version": "5.105.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", + "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.16.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/webpack-dev-middleware/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/webpack-dev-middleware/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/webpack-dev-middleware/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", + "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/webpack/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/webpack/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/webpack/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "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/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "license": "MIT", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "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": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/website/sidebars.js b/website/sidebars.js index 278041a..fef5990 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -1,35 +1,39 @@ // @ts-check -// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...) - -/** - * Creating a sidebar enables you to: - - create an ordered group of docs - - render a sidebar for each doc of that group - - provide next/previous navigation - - The sidebars can be generated from the filesystem, or explicitly defined here. - - Create as many sidebars as you want. - - @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} - */ - const sidebars = { - // By default, Docusaurus generates a sidebar from the docs folder structure - tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], - - // But you can create a sidebar manually - /* +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { tutorialSidebar: [ 'intro', - 'hello', { type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], + label: 'How We Work', + items: [ + 'WayOfWork/way-of-work', + 'WayOfWork/organisation', + 'WayOfWork/way-of-working', + 'WayOfWork/release-process', + 'WayOfWork/vacancies', + 'WayOfWork/contributing', + ], + }, + { + type: 'category', + label: 'ISO & Quality', + items: [ + 'ISO/iso-intro', + // quality-policy and security-policy are draft β€” visible after management approval + 'ISO/incident-reporting', + 'ISO/security', + ], + }, + { + type: 'category', + label: 'Products & Services', + items: [ + 'Products/products-overview', + ], }, ], - */ }; module.exports = sidebars; From cad5d5378a10fd42be07e0bf3d4e7e9a4d8407f0 Mon Sep 17 00:00:00 2001 From: "mwesterweel@hotmail.com" Date: Wed, 8 Apr 2026 19:49:04 +0200 Subject: [PATCH 2/7] =?UTF-8?q?checkpoint:=20HWW=202.0=20session=20?= =?UTF-8?q?=E2=80=94=20handbook=20restructure,=20i18n=20fix,=20data=20cent?= =?UTF-8?q?ralization?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Save point before ISO drive audit. All changes build successfully (EN + NL). - Intro.md restructured into 4 thematic blocks (Working, Building, Support, About) - Sidebar reorganized to match themes - Homepage i18n fixed with Translate component + NL code.json - New pages: onboarding, customer-support, code-of-conduct, spec-driven-development, development-pipeline, about-this-manual - Security page expanded (passwords, clean desk, BYOD, ESET, NordLayer) - Way of Working expanded (scrum ceremonies, story points) - CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md synced with docs pages - CI workflow for docs sync check - Centralized site-data.json + ToolList/Val/Email components - Incident reporting corrected (Jira label flow, not Slack) - All horizontal rules removed from docs Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/docs-sync-check.yml | 57 ++++++ SECURITY.md | 52 ++++++ website/docs/ISO/incident-reporting.md | 20 +- website/docs/ISO/quality-policy.md | 2 - website/docs/ISO/security-policy.md | 2 - website/docs/ISO/security.md | 83 ++++++--- website/docs/Intro.md | 176 ++++++------------ website/docs/WayOfWork/Issue_flow.md | 34 ++++ website/docs/WayOfWork/Vacancies.md | 6 - website/docs/WayOfWork/about-this-manual.md | 80 ++++++++ website/docs/WayOfWork/code-of-conduct.md | 43 +++++ website/docs/WayOfWork/contributing.md | 163 ++++++++++------ website/docs/WayOfWork/customer-support.md | 31 +++ .../docs/WayOfWork/development-pipeline.md | 88 +++++++++ website/docs/WayOfWork/intro.md | 30 ++- website/docs/WayOfWork/onboarding.md | 50 +++++ website/docs/WayOfWork/release-process.md | 2 - .../docs/WayOfWork/spec-driven-development.md | 62 ++++++ website/i18n/nl/code.json | 35 ++++ .../current.json | 28 +-- .../current/ISO/incident-reporting.md | 20 +- .../current/ISO/quality-policy.md | 2 - .../current/ISO/security-policy.md | 2 - .../current/ISO/security.md | 83 ++++++--- .../current/Intro.md | 140 +++++--------- .../current/WayOfWork/Issue_flow.md | 33 ++++ .../current/WayOfWork/about-this-manual.md | 80 ++++++++ .../current/WayOfWork/code-of-conduct.md | 43 +++++ .../current/WayOfWork/contributing.md | 151 ++++++++++----- .../current/WayOfWork/customer-support.md | 31 +++ .../current/WayOfWork/development-pipeline.md | 88 +++++++++ .../current/WayOfWork/intro.md | 30 ++- .../current/WayOfWork/onboarding.md | 50 +++++ .../WayOfWork/spec-driven-development.md | 62 ++++++ website/sidebars.js | 28 ++- .../src/components/HomepageFeatures/index.js | 75 +++----- website/src/components/SiteData.js | 23 +++ website/src/components/ToolList.js | 8 + website/src/data/site-data.json | 36 ++++ website/src/pages/index.js | 15 +- 40 files changed, 1557 insertions(+), 487 deletions(-) create mode 100644 .github/workflows/docs-sync-check.yml create mode 100644 website/docs/WayOfWork/about-this-manual.md create mode 100644 website/docs/WayOfWork/code-of-conduct.md create mode 100644 website/docs/WayOfWork/customer-support.md create mode 100644 website/docs/WayOfWork/development-pipeline.md create mode 100644 website/docs/WayOfWork/onboarding.md create mode 100644 website/docs/WayOfWork/spec-driven-development.md create mode 100644 website/i18n/nl/code.json create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/about-this-manual.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/code-of-conduct.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/customer-support.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/development-pipeline.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/onboarding.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/spec-driven-development.md create mode 100644 website/src/components/SiteData.js create mode 100644 website/src/components/ToolList.js create mode 100644 website/src/data/site-data.json diff --git a/.github/workflows/docs-sync-check.yml b/.github/workflows/docs-sync-check.yml new file mode 100644 index 0000000..29949df --- /dev/null +++ b/.github/workflows/docs-sync-check.yml @@ -0,0 +1,57 @@ +name: Docs Sync Check + +on: + pull_request: + paths: + - 'CONTRIBUTING.md' + - 'SECURITY.md' + - 'CODE_OF_CONDUCT.md' + - 'website/docs/WayOfWork/contributing.md' + - 'website/docs/ISO/security.md' + - 'website/docs/WayOfWork/code-of-conduct.md' + +jobs: + check-sync: + name: Verify repo docs match website docs + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Check CONTRIBUTING.md sync + run: | + # Strip frontmatter and sync comment from docs version + sed '1,/^---$/d' website/docs/WayOfWork/contributing.md | sed '/^{\/\*.*\*\/}$/d' | sed '/^$/N;/^\n$/d' > /tmp/docs-contributing.md + # Compare content sections (ignore minor whitespace) + # The docs version should contain all content from the repo version + echo "Checking CONTRIBUTING.md sync..." + if ! diff -q <(grep -c '^## ' CONTRIBUTING.md) <(grep -c '^## ' /tmp/docs-contributing.md) > /dev/null 2>&1; then + echo "::warning::CONTRIBUTING.md and website/docs/WayOfWork/contributing.md have different section counts. They may be out of sync." + fi + echo "CONTRIBUTING.md section count: $(grep -c '^## ' CONTRIBUTING.md)" + echo "Docs version section count: $(grep -c '^## ' /tmp/docs-contributing.md)" + + - name: Check SECURITY.md sync + run: | + sed '1,/^---$/d' website/docs/ISO/security.md | sed '/^{\/\*.*\*\/}$/d' | sed '/^$/N;/^\n$/d' > /tmp/docs-security.md + echo "Checking SECURITY.md sync..." + if ! diff -q <(grep -c '^## ' SECURITY.md) <(grep -c '^## ' /tmp/docs-security.md) > /dev/null 2>&1; then + echo "::warning::SECURITY.md and website/docs/ISO/security.md have different section counts. They may be out of sync." + fi + echo "SECURITY.md section count: $(grep -c '^## ' SECURITY.md)" + echo "Docs version section count: $(grep -c '^## ' /tmp/docs-security.md)" + + - name: Check CODE_OF_CONDUCT.md sync + run: | + sed '1,/^---$/d' website/docs/WayOfWork/code-of-conduct.md | sed '/^{\/\*.*\*\/}$/d' | sed '/^$/N;/^\n$/d' > /tmp/docs-coc.md + echo "Checking CODE_OF_CONDUCT.md sync..." + # Strict check for CoC β€” content should be nearly identical + repo_hash=$(sed 's/^# .*//' CODE_OF_CONDUCT.md | md5sum | cut -d' ' -f1) + docs_hash=$(sed 's/^# .*//' /tmp/docs-coc.md | md5sum | cut -d' ' -f1) + if [ "$repo_hash" != "$docs_hash" ]; then + echo "::warning::CODE_OF_CONDUCT.md and website/docs/WayOfWork/code-of-conduct.md content differs. Please sync them." + echo "" + echo "Diff:" + diff <(sed 's/^# .*//' CODE_OF_CONDUCT.md) <(sed 's/^# .*//' /tmp/docs-coc.md) || true + else + echo "CODE_OF_CONDUCT.md is in sync." + fi diff --git a/SECURITY.md b/SECURITY.md index 4b69598..d73d701 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -125,3 +125,55 @@ We appreciate responsible disclosure. Contributors who report valid vulnerabilit ## Internal Incident Reporting Conduction employees: see the [Incident Reporting](https://docs.conduction.nl/docs/ISO/incident-reporting) procedure on our internal documentation site. + +--- + +## Employee Security Practices + +The sections below apply to all Conduction employees. + +### Passwords + +All Conduction passwords must be at least **10 characters** and contain: + +- A letter +- A number +- A special character + +Store all credentials in [Passwork](https://www.passwork.me/). Never share passwords through Slack, email, or any other communication channel. + +### Data Handling + +- Never store personal or private data of Conduction or its clients on your local device +- Never push API keys or environment variables to GitHub +- Share files only through Google Drive or Passwork β€” never via USB, email, or Slack +- If you must store sensitive data locally, encrypt it with **BitLocker** +- Downloaded documents with privacy-sensitive data must be removed from your laptop within **5 days** + +### Clean Desk & Clear Screen + +- Always lock your device when you step away β€” even for coffee +- Never leave your device unattended +- Store your device in a locker at end of day, or take it with you +- Keep no notes, printouts, or peripherals lying around + +### Bring Your Own Device (BYOD) + +You choose your own development machine. The only requirements: + +1. It can run the required local tooling +2. It conforms to the security requirements on this page (antivirus, encryption, VPN) + +### VPN + +Remote work β€” especially with sensitive data β€” requires a VPN connection. + +- [NordLayer VPN](https://nordlayer.com/) β€” install and activate whenever working remotely +- If unsure whether you need it, check with your team lead + +### Antivirus + +ESET must be activated on all devices used for Conduction work, at all times. Request an exception from your team lead if needed. + +- [ESET Business Edition β€” setup and downloads](https://www.eset.com/int/business/) +- Contact IT for your license key and 2FA setup diff --git a/website/docs/ISO/incident-reporting.md b/website/docs/ISO/incident-reporting.md index 5de90de..ee3884c 100644 --- a/website/docs/ISO/incident-reporting.md +++ b/website/docs/ISO/incident-reporting.md @@ -12,8 +12,6 @@ Conduction has a duty to detect, report, and learn from incidents β€” both secur **If you suspect something is wrong, report it immediately. There is no penalty for reporting in good faith.** ---- - ## What to Report ### Security Incidents (ISO 27001:2022 A.6.8) @@ -35,22 +33,18 @@ Report any: - Process failure that could have led to customer impact - Near-miss: something that could have gone wrong but didn't ---- - ## How to Report -| Channel | When to use | -|---|---| -| **Slack `#incidents`** | First point of contact for all incidents β€” immediate notification | -| **Email: security@conduction.nl** | For sensitive incidents where Slack is not appropriate | -| **GitHub Issue** (private repo) | For follow-up, tracking, and closure | +**Create or flag an issue in Jira** and label it **`security-incident`** or **`quality-incident`**. This is the only correct way to report an incident. + +Not sure how? Ask a team member, your supervisor, or someone from management β€” they'll help you create the issue. + +Labeling an issue as an incident automatically triggers a Slack flow that requests a **root cause analysis template** to be filled in. **Response time expectation:** - Security incidents: acknowledged within **4 business hours** - Quality deviations: acknowledged within **1 business day** ---- - ## What Happens After You Report 1. The Quality & Safety Lead acknowledges the report @@ -60,8 +54,6 @@ Report any: 5. Corrective action is documented and tracked to closure 6. Lessons learned are shared with the team ---- - ## Your Responsibilities - Report incidents **as soon as you discover them** β€” delay increases impact @@ -69,7 +61,5 @@ Report any: - Preserve evidence (logs, screenshots) if possible - Cooperate with the investigation ---- - _ISO 27001:2022 reference: A.6.8 β€” Information security event reporting_ _ISO 9001:2015 reference: Β§10.2 β€” Nonconformity and corrective action_ diff --git a/website/docs/ISO/quality-policy.md b/website/docs/ISO/quality-policy.md index 1947679..5b7399d 100644 --- a/website/docs/ISO/quality-policy.md +++ b/website/docs/ISO/quality-policy.md @@ -47,8 +47,6 @@ This policy is communicated to all employees via this documentation site. Employ This policy applies to all employees, contractors, and third parties acting on behalf of Conduction. ---- - _ISO 9001:2015 reference: Β§5.2 β€” Quality Policy_ _Last review: pending_ _Next review: annual management review cycle_ diff --git a/website/docs/ISO/security-policy.md b/website/docs/ISO/security-policy.md index 9e3925c..e61fffd 100644 --- a/website/docs/ISO/security-policy.md +++ b/website/docs/ISO/security-policy.md @@ -66,8 +66,6 @@ The following controls are in effect (ISO 27001:2022 Annex A): This policy is communicated to all employees via this documentation site and during onboarding. Employees are required to acknowledge this policy. Questions or concerns can be directed to the Quality & Safety Lead or raised via a [GitHub Issue](https://github.com/ConductionNL/.github/issues). ---- - _ISO 27001:2022 reference: Β§5.2 β€” Information Security Policy; Annex A.5.1_ _Last review: pending_ _Next review: annual management review cycle_ diff --git a/website/docs/ISO/security.md b/website/docs/ISO/security.md index eb01cb1..c7e3058 100644 --- a/website/docs/ISO/security.md +++ b/website/docs/ISO/security.md @@ -10,8 +10,6 @@ description: How to report vulnerabilities, our response timeline, and safe harb This security policy applies to all repositories under the [ConductionNL](https://github.com/ConductionNL) organization. ---- - ## Reporting a Vulnerability **Do NOT open a public GitHub issue for security vulnerabilities.** @@ -26,9 +24,7 @@ This creates an end-to-end encrypted security advisory visible only to maintaine ### 2. Email -Send your report to **security@conduction.nl**. - ---- +Send your report to **security@conduction.nl**. For sensitive communications, request our PGP key via email. ## What to Include @@ -38,8 +34,6 @@ Send your report to **security@conduction.nl**. - **Affected versions** β€” which releases are affected - **Suggested fix** β€” optional, but appreciated ---- - ## Response Timeline | Milestone | Target | @@ -50,8 +44,6 @@ Send your report to **security@conduction.nl**. | Fix for medium severity | Within **90 days** | | Public disclosure | After fix is released, or at **90 days** from report | ---- - ## Severity Classification We use [CVSSv3](https://www.first.org/cvss/calculator/3.1) to classify severity: @@ -63,8 +55,6 @@ We use [CVSSv3](https://www.first.org/cvss/calculator/3.1) to classify severity: | **Medium** | 4.0–6.9 | Fix within 90 days | | **Low** | 0.1–3.9 | Fixed in next scheduled release | ---- - ## Scope ### In scope @@ -79,17 +69,15 @@ We use [CVSSv3](https://www.first.org/cvss/calculator/3.1) to classify severity: - Vulnerabilities in Nextcloud core β†’ report to [Nextcloud](https://nextcloud.com/security/) - Vulnerabilities in third-party dependencies β†’ report upstream first -- Social engineering or phishing attacks -- Issues requiring highly unrealistic user actions +- Social engineering or phishing attacks against Conduction staff +- Physical security +- Issues requiring unlikely or unrealistic user actions - Denial-of-service attacks against hosted infrastructure - ---- +- Issues already publicly known ## Supported Versions -Security updates are provided for the **latest stable release** of each app only. - ---- +We provide security updates for the **latest stable release** of each app. Older versions do not receive security patches unless explicitly stated in the repository. ## Safe Harbor @@ -97,12 +85,11 @@ Conduction will not pursue legal action against security researchers who: - Report vulnerabilities through this policy in good faith - Avoid accessing, modifying, or deleting data beyond what is necessary to demonstrate the vulnerability -- Do not disrupt production services +- Do not disrupt production services or degrade user experience +- Do not exploit the vulnerability beyond what is needed to confirm its existence - Give us reasonable time to address the issue before public disclosure -We consider good-faith security research a public good. - ---- +We consider good-faith security research a public good and will work with you rather than against you. ## Bug Bounty @@ -111,8 +98,56 @@ Conduction does not currently operate a paid bug bounty program. Valid reports r - Public credit in release notes (with permission) - Acknowledgement in the GitHub Security Advisory ---- - ## Internal Incident Reporting Conduction employees: see the [Incident Reporting](incident-reporting) procedure for reporting security incidents and quality deviations. + +## Employee Security Practices + +The sections below apply to all Conduction employees. + +### Passwords + +All Conduction passwords must be at least **10 characters** and contain: + +- A letter +- A number +- A special character + +Store all credentials in [Passwork](https://www.passwork.me/). Never share passwords through Slack, email, or any other communication channel. + +### Data Handling + +- Never store personal or private data of Conduction or its clients on your local device +- Never push API keys or environment variables to GitHub +- Share files only through Google Drive or Passwork β€” never via USB, email, or Slack +- If you must store sensitive data locally, encrypt it with **BitLocker** +- Downloaded documents with privacy-sensitive data must be removed from your laptop within **5 days** + +### Clean Desk & Clear Screen + +- Always lock your device when you step away β€” even for coffee +- Never leave your device unattended +- Store your device in a locker at end of day, or take it with you +- Keep no notes, printouts, or peripherals lying around + +### Bring Your Own Device (BYOD) + +You choose your own development machine. The only requirements: + +1. It can run the required local tooling +2. It conforms to the security requirements on this page (antivirus, encryption, VPN) + +### VPN + +Remote work β€” especially with sensitive data β€” requires a VPN connection. + +- [NordLayer VPN](https://nordlayer.com/) β€” install and activate whenever working remotely +- If unsure whether you need it, check with your team lead + +### Antivirus + +ESET must be activated on all devices used for Conduction work, at all times. Request an exception from your team lead if needed. + +- [ESET Business Edition β€” setup and downloads](https://www.eset.com/int/business/) +- Contact IT for your license key and 2FA setup diff --git a/website/docs/Intro.md b/website/docs/Intro.md index f99c82e..b87b10c 100644 --- a/website/docs/Intro.md +++ b/website/docs/Intro.md @@ -1,158 +1,86 @@ --- id: intro -title: Welcome to Conduction!πŸ‘‹ -sidebar_label: About Conduction +title: "HowWeWork@Conduction" +sidebar_label: Employee Handbook sidebar_position: 1 -description: Welcome to Conduction - Building a better digital world for citizens through democratic, inclusive and transparent software +description: The Conduction employee handbook β€” how we work, what we expect, and where to find everything keywords: - - introduction - - about - - mission - - values - - government - - digital transformation - - proactive services - - citizen-centric - - open source + - employee handbook + - how we work + - onboarding + - conduction --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; +import ToolList from '@site/src/components/ToolList'; +import {Val, Email} from '@site/src/components/SiteData'; -# Welcome to Conduction!πŸ‘‹ +# HowWeWork@Conduction -Whether you're a potential employee looking for your next career move, a client seeking innovative digital solutions, a fellow IT company interested in collaboration, or even a competitor curious about our approach - we're glad you're here! +The employee handbook β€” changes? Submit a PR on [GitHub](https://github.com/ConductionNL/.github). -For **potential employees**, you'll discover our unique culture, values, and ambitious mission to transform government services. Learn how you can contribute to meaningful projects that directly impact citizens' lives. +## Who we are -For **clients**, explore how our innovative solutions and deep expertise in government digitalization can help you better serve your citizens. See real examples of how we've helped organizations like yours move from reactive to proactive service delivery. +Conduction helps bring good ideas to life. We work democratically, inclusively and transparently β€” not as corporate values on paper, but as a way of working. Our goal: **by 2035, every resident of the Netherlands automatically receives the government services they are entitled to.** -For **IT companies**, find opportunities for partnership and collaboration. We believe in open source and knowledge sharing - browse our technical documentation, reuse our components, or reach out to explore joint ventures. +**Read more:** [Our mission & values](WayOfWork/way-of-work) -And yes, even for our **competitors** - we welcome you! Feel free to learn from our approaches and methodologies. We believe that achieving better government services requires industry-wide collaboration rather than competition. +## Working at Conduction -## πŸ§™ Who is Conduction? +**Your first days** β€” you get a buddy: an experienced colleague who guides you through onboarding. They help you get access (), set up your machine, and find your way around. Don't hesitate to ask β€” that's what they're there for. -At Conduction, we are driven by a vision that sees the digitization of the world as an extraordinary opportunity. It's a chance to transform our world into something more democratic, inclusive, and transparent. We understand that digitalization is not just inevitable but comes with immense potential and challenges. +**Work rhythm** β€” we work in sprints. Standup at , report-out at (in Slack , always with a commit link for code work). Priorities come from the Product Owner, technical questions go to the dev lead. -**Our Mission** is to shape this new digital world into a fair and inclusive environment for everyone, while also safeguarding it against the threats posed by digitalization. We firmly believe that achieving this goal requires us to adhere to the fundamental principles and rights of humanity. +**Vacation & sick leave** β€” request vacation at least in advance via the HR portal and discuss in ****. Sick? Call HR before . Running late? Drop a message β€” twice a month you treat the team to cake, the third time means a chat with HR. -Our mission is simple yet profound: **"Make the digital world a better place for its citizens by creating democratic, inclusive, transparent, understandable, and affordable software for citizens."** +**Ground rules** β€” treat each other with respect. Talk *with* each other, not *about* each other. Discrimination, harassment, or bullying is never accepted. -## Our (Big Hairy Audacious) Goal +**Read more:** +- [Onboarding & buddy system](WayOfWork/onboarding) +- [Organisation](WayOfWork/organisation) β€” roles, teams, structure +- [Vacancies](WayOfWork/vacancies) +- [Code of Conduct(ion)](WayOfWork/code-of-conduct) -We have set a bold goal for ourselves: **"By 2035, Conduction ensures that all residents of the Netherlands automatically receive the government services they are entitled to."** +## Building software -Imagine a world where no one falls through the cracks of our social support system. Where a single mother doesn't miss out on crucial childcare benefits simply because she wasn't aware they existed. Where elderly citizens automatically receive the care and support they're entitled to, without having to navigate complex application procedures. Where those with limited literacy or digital skills aren't left behind in accessing essential government services. +**What we build** β€” open-source components for digital government infrastructure, built on Common Ground principles. Our code lives on [GitHub](https://github.com/ConductionNL). -Today, many citizens, especially those who are less educated or digitally skilled, miss out on benefits and support they're legally entitled to. They might struggle with complex forms, be unaware of available services, or feel overwhelmed by bureaucratic procedures. This creates an unfair system where those who need help the most are often least likely to receive it. +**How we build** β€” work consists of issues. Write them so a colleague can pick them up without extra explanation. Four-eyes principle on all code. Never push API keys. Tooling setup? Ask your buddy. -Through proactive service delivery, we envision a future where government services automatically reach citizens when they need them. Instead of citizens having to search for and apply to various schemes, the government proactively identifies their needs and ensures they receive appropriate support. This shift from reactive to proactive service delivery will create a more equitable society where everyone receives the support they're entitled to, regardless of their educational background, digital literacy, or social circumstances. +**Projects** β€” every project starts with a kick-off. Haven't had one? Ask for it β€” never work on assumptions. -## Our Core Values: The Foundation of Our 2035 Goal +> *Assumption is the mother of all fuckups.* -To achieve our ambitious goal of ensuring all Dutch residents automatically receive their entitled government services by 2035, we need strong foundational values that guide our approach. Here's how our core values directly support this mission: +Scope, budget and planning are in the quotation. Anything outside: discuss with your supervisor first. +**Time tracking** β€” log hours in Tempo, always on an issue with the correct account. Don't know how? Just ask. - - +**Read more:** +- [Spec-driven development](WayOfWork/spec-driven-development) β€” OpenSpec, Claude Code, the four-stage pipeline +- [Development pipeline](WayOfWork/development-pipeline) β€” quality gates, security checks, automated releases +- [Way of working](WayOfWork/way-of-working) β€” sprints, issue flow, story points +- [Contributing guide](WayOfWork/contributing) β€” code standards, branching, reviews +- [Release process](WayOfWork/release-process) β€” branch model, versioning, deployment -**Democratic:** To create truly automated and proactive government services, we must incorporate diverse perspectives and needs. By actively seeking input from all stakeholders and valuing feedback, we ensure our solutions work for everyone, not just the digitally savvy. +## Support & safety -**Inclusive:** Automatic service delivery can only succeed if it reaches ALL citizens. Our commitment to creating solutions where everyone feels respected, supported, and valued ensures we don't leave anyone behind - whether they're elderly, disabled, or digitally challenged. +**Helping customers** β€” support goes through **** (auto-creates a Jira ticket). Quick fix under 5 minutes? Just solve it. Longer? Create an issue. Complaints go to ****. - **Transparent:** For citizens to trust automated government services, they need to understand how decisions are made. Our dedication to open communication and honest operations builds this crucial trust, helping citizens feel confident in receiving proactive services. +**Helping each other** β€” stuck on something? Flag it as an impediment, post in Slack with a link to the issue, and raise it at standup. Your buddy is your first port of call. -**Responsible and Sustainable:** Automated service delivery must be built to last. We develop solutions that not only serve current citizens but are sustainable for future generations, ensuring our 2035 goal creates lasting positive change. +**Incidents** β€” spot a security or quality incident? Talk to your supervisor immediately. Flag or create an issue with the label "security incident" or "quality incident". Write a memo with root cause analysis afterwards. Remember: **identify the risk -> assess the risk -> mitigate the risk -> review the measures.** -**Innovative:** Achieving universal automatic service delivery requires creative solutions to complex challenges. Our commitment to innovation and efficiency drives us to find new ways to identify citizen needs and deliver services proactively, making our 2035 goal achievable. +**Security** β€” access via your Conduction Google account, credentials in Passwork. Treat sensitive data like your nudes β€” share only with those who need it. Never send sensitive data via Slack or email. VPN for critical servers. ESET activated at all times. - - +**Read more:** +- [Customer support](WayOfWork/customer-support) β€” support flow and complaints +- [Incident reporting](ISO/incident-reporting) β€” procedures and templates +- [Security policy](ISO/security) β€” passwords, clean desk, BYOD, VPN, antivirus -**Innovative:** Innovation is at the heart of achieving our 2035 goal. We don't just follow trends - we create solutions that truly transform government service delivery. When working with clients, this means we actively explore cutting-edge technologies and creative approaches. For example, instead of building another form portal, we might suggest using AI to proactively identify citizen needs. +## Want to know more? -**Knowledgeable:** Deep expertise is crucial for revolutionizing government services. We continuously invest in learning and understanding both technology and government processes. Clients experience this through our ability to provide strategic guidance - we don't just build what's asked for, but help shape solutions based on our comprehensive understanding of the digital government landscape. +For those who want the full picture: -**Contrarian:** To achieve automatic service delivery by 2035, we must challenge conventional thinking in government IT. The public sector often sticks to outdated technologies and standards due to risk aversion and institutional inertia. When a client requests a traditional solution based on legacy systems, we dare to propose modern alternatives that better serve citizens. For example, while many government organizations still rely heavily on local proprietary standards, we advocate for adopting international open standards that enable integration with the broader software ecosystem. This constructive contrarian attitude helps break the "we've always done it this way" mindset that slows digital innovation in government. By thoughtfully questioning established practices and introducing proven new technologies, we help modernize public services while managing risks responsibly. - -**Cooperative:** We believe that transforming government services requires working together. Rather than competing, we actively seek partnerships with other companies - even competitors - because achieving our 2035 goal is more important than individual success. Clients see this in how we: -- Openly share knowledge and code with the community -- Connect clients with other vendors when their solutions might be a better fit -- Build upon existing open-source solutions instead of reinventing the wheel -- Actively participate in and contribute to various open-source communities - - - - -## Our Behavior: Living Our Values - -Our core values directly shape how we work and interact. Here's how our values translate into expected behaviors: - -**Innovation in Action:** -- Continuously explore and propose new technologies and approaches -- Challenge the status quo with creative solutions -- Take calculated risks to drive meaningful change -- Stay current with emerging trends and technologies - -**Knowledge in Practice:** -- Invest time in continuous learning and skill development -- Share expertise generously with colleagues and clients -- Make decisions based on deep understanding rather than assumptions -- Actively contribute to knowledge sharing sessions and documentation - -**Constructive Contrarian Mindset:** -- Question established practices respectfully and thoughtfully -- Propose alternative solutions backed by solid reasoning -- Stand firm on principles while remaining open to dialogue -- Champion modern standards and best practices - -**Cooperation in Daily Work:** -- Actively seek collaboration opportunities -- Share successes and learnings openly with the community -- Put collective goals above individual recognition -- Support colleagues and partners in their growth -- Maintain transparent communication in all interactions - -These behaviors aren't just guidelines - they're essential to achieving our 2035 goal and creating lasting positive change in government services. - -## β€πŸ’» Our Core Competencies - -Our core competencies are the backbone of our company's success: - -**1. Knowledge of Ecosystem and Architecture:** We possess a deep understanding of the digital ecosystem and architecture, enabling us to provide valuable insights. -**2. Critical Approach:** We are not mere order-takers; we critically engage with our clients, ensuring the best outcomes. -**3. Holistic Approach:** We connect our clients with other solutions and vendors, creating comprehensive solutions. -**4. Integration:** We unite different systems and processes to deliver efficient, value-added solutions. -**5. Continuous Innovation:** We constantly create innovative solutions that positively impact society and the digitization of our world. - -## πŸ‘© Our Market (Core Customers) - -- Small and medium-sized municipalities. -- Government collaborations and alliances. -- Partnering with other vendors rather than just being their contractors. -- Various government bodies. - -## πŸ™‹ Brand Promises - -- We are committed to being open and transparent in all our endeavors. -- No lock-in – we provide solutions that are free from restrictions. -- We offer knowledge and work collaboratively. -- We prioritize integration, making systems work seamlessly together. - -## 🌈 Join Our Team at Conduction - -Are you passionate about making the digital world more democratic, inclusive, and transparent? Do you thrive in an innovative and collaborative environment? If so, we'd love to have you join our team at Conduction! - -Working at Conduction means being part of a dedicated group of professionals who are committed to driving positive change through technology. We value diversity, encourage open communication, and provide opportunities for growth and development. - -**Why Conduction?** - -- **Meaningful Work:** At Conduction, your work directly contributes to our mission of making the digital world a better place for all citizens. -- **Innovation:** We are at the forefront of innovation, exploring new technologies and creative solutions to tackle complex challenges. -- **Collaboration:** We believe in the power of collaboration and teamwork. Your ideas and input are valued here. -- **Professional Growth:** We support your professional development and provide opportunities for advancement within the organization. - -If you're ready to be part of a team that's making a real difference in the world of technology, explore our [career opportunities](https://www.conduction.nl/careers) and join us on this exciting journey! - -For more information and updates, visit our website: [Conduction.nl](https://www.conduction.nl/) \ No newline at end of file +- [Mission & values](WayOfWork/way-of-work) β€” who we are, what drives us, KPIs +- [ISO & Quality](ISO/iso-intro) β€” our certification journey (ISO 9001 & 27001) +- [Products & Services](Products/products-overview) β€” what we offer +- [How this manual works](WayOfWork/about-this-manual) β€” structure, data sources, and how to contribute diff --git a/website/docs/WayOfWork/Issue_flow.md b/website/docs/WayOfWork/Issue_flow.md index 14c4595..025bcd6 100644 --- a/website/docs/WayOfWork/Issue_flow.md +++ b/website/docs/WayOfWork/Issue_flow.md @@ -8,6 +8,40 @@ description: How Conduction plans sprints, manages issues, and ships software # Issue Flow and Sprint Planning Process +## Scrum Ceremonies + +We follow Scrum with two-week sprints. Here's the recurring rhythm: + +| Ceremony | When | What | +|---|---|---| +| **Retrospective & Sprint Planning** | Monday 09:00 | Review last sprint on Miro (what went well / could be better), then plan the next sprint | +| **Standup** | Daily 10:00 (except Monday) | Quick round: what are you working on, any blockers? | +| **Report-out** | Daily 16:30 (except Friday) | Written in Slack #general β€” what you did, any impediments | +| **Sprint Review & Presentations** | Friday (every 2 weeks) | Demo your work to the team, followed by a borrel | + +**Office attendance:** at least one day per week in the office. If you're scheduled for the office and can't make it, notify before the workday starts. + +**Rescheduling meetings:** whoever cancels is responsible for rescheduling immediately. + +## Story Points + +We estimate complexity, not time. Story points measure how hard something is β€” a senior may finish faster than a junior, but the complexity is the same. + +| Size | Story Points | Roughly | +|---|---|---| +| Small | 5 | Half a day | +| Medium | 10 | A day | +| Large | 20 | Half a week | +| XL | 40 | A week | +| XXL | 80 | Two weeks | +| XXXL | 160 | A month | + +**Rules:** +- A single story should not exceed 10 story points β€” break it down +- Anything above 10 points is an epic +- Use timeboxing: if you've spent a full day on a 10-point story, escalate at the standup +- Average burn rate: **10 story points per developer per day** + ## Epic Creation and Sizing 1. Create Epics in Jira, linked to specific goals diff --git a/website/docs/WayOfWork/Vacancies.md b/website/docs/WayOfWork/Vacancies.md index a0761ae..6dfd7b9 100644 --- a/website/docs/WayOfWork/Vacancies.md +++ b/website/docs/WayOfWork/Vacancies.md @@ -31,8 +31,6 @@ As a Senior Backend Developer at Conduction, you will play a key role in develop To apply for this position, create an **application issue** in this repository with the title "Application - Senior Backend Developer (PHP Symfony)". Include your CV and a brief cover letter in the issue description explaining why you are suitable for this role. ---- - ### Senior Frontend Developer (React / NL Design) **Location:** 60% Remote, 40% Office-based in Amsterdam @@ -52,8 +50,6 @@ As a Senior Frontend Developer at Conduction, you will be responsible for creati To apply for this position, create an **application issue** in this repository with the title "Application - Senior Frontend Developer (React / NL Design)". Include your CV and a brief cover letter in the issue description explaining why you are suitable for this role. ---- - ## Why Join Conduction? - Contribute to meaningful projects with a positive impact on society. @@ -75,5 +71,3 @@ If you are interested in any of the above positions or think you can contribute 4. In the issue description, include your CV and a brief cover letter explaining your interest in the role and why you are a strong candidate. Our HR team will review your application and contact you. Thank you for considering a career at Conduction. We look forward to welcoming talented individuals to our team! - ---- diff --git a/website/docs/WayOfWork/about-this-manual.md b/website/docs/WayOfWork/about-this-manual.md new file mode 100644 index 0000000..6a48756 --- /dev/null +++ b/website/docs/WayOfWork/about-this-manual.md @@ -0,0 +1,80 @@ +--- +id: about-this-manual +title: How This Manual Works +sidebar_label: About This Manual +sidebar_position: 99 +description: How the employee handbook is built, where data lives, and how to contribute +--- + +# How This Manual Works + +This employee handbook is a [Docusaurus](https://docusaurus.io/) site hosted on GitHub Pages. The source lives in the [ConductionNL/.github](https://github.com/ConductionNL/.github) repository under `website/`. + +## Structure + +The handbook is organized in four themes: + +| Theme | What it covers | +|---|---| +| **Working at Conduction** | Onboarding, organisation, code of conduct, vacancies | +| **Building Software** | Sprints, contributing, releases | +| **Support & Safety** | Customer support, incidents, security policy | +| **About Conduction** | Mission, ISO, products | + +The landing page ([Employee Handbook](/docs/intro)) gives a complete overview. Deeper pages expand on each topic. + +## Languages + +The site supports English (default) and Dutch. English docs live in `website/docs/`, Dutch translations in `website/i18n/nl/docusaurus-plugin-content-docs/current/`. + +## Centralized data + +To avoid hardcoding values that change (tool names, email addresses, schedules), we use a central data file: + +**`website/src/data/site-data.json`** + +This file contains: +- **`tools`** β€” tool lists by category (onboarding, security, development) +- **`emails`** β€” company email addresses (support, complaints, security, general) +- **`slack`** β€” Slack channel names +- **`schedule`** β€” standup time, report-out time, sick call deadline, sprint length +- **`links`** β€” URLs for external tools (Passwork, NordLayer, ESET) + +Pages reference this data via React components: + +```jsx +import ToolList from '@site/src/components/ToolList'; +import {Val, Email} from '@site/src/components/SiteData'; + +// Renders: "Google Workspace, GitHub, Jira, Slack, Passwork" + + +// Renders: "10:00" + + +// Renders: a mailto link + +``` + +**When a tool, email address, or schedule changes β€” update `site-data.json` once. All pages update automatically.** + +## Synced files + +Three files in the repo root are mirrored as docs pages: + +| Repo root | Docs page | +|---|---| +| `CONTRIBUTING.md` | `docs/WayOfWork/contributing.md` | +| `SECURITY.md` | `docs/ISO/security.md` | +| `CODE_OF_CONDUCT.md` | `docs/WayOfWork/code-of-conduct.md` | + +A CI workflow (`.github/workflows/docs-sync-check.yml`) checks on every PR whether these files are still in sync. If they diverge, the workflow warns. + +## How to contribute + +1. Create a branch from `development` +2. Edit markdown files under `website/docs/` (English) or `website/i18n/nl/` (Dutch) +3. Test locally: `cd website && npm install && npm run start` +4. Open a PR + +For details, see the [Contributing guide](contributing). diff --git a/website/docs/WayOfWork/code-of-conduct.md b/website/docs/WayOfWork/code-of-conduct.md new file mode 100644 index 0000000..40928ad --- /dev/null +++ b/website/docs/WayOfWork/code-of-conduct.md @@ -0,0 +1,43 @@ +--- +id: code-of-conduct +title: Code of Conduct(ion) +sidebar_label: Code of Conduct +sidebar_position: 4 +description: Our community standards β€” how we treat each other at Conduction +--- + +# Code of Conduct(ion) + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes +- Focusing on what is best not just for us as individuals, but for the overall community + +Examples of unacceptable behavior: + +- The use of sexualized language or imagery, and sexual attention or advances of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information without explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders at **info@conduction.nl**. + +All complaints will be reviewed and investigated promptly and fairly. Community leaders are obligated to respect the privacy and security of the reporter. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1. diff --git a/website/docs/WayOfWork/contributing.md b/website/docs/WayOfWork/contributing.md index 30b07a3..834bff6 100644 --- a/website/docs/WayOfWork/contributing.md +++ b/website/docs/WayOfWork/contributing.md @@ -8,11 +8,13 @@ description: How to contribute to Conduction's open-source projects β€” code, do # Contributing to Conduction -Thank you for your interest in contributing! Every contribution β€” code, documentation, translation, issue report, or idea β€” helps us move toward our goal: ensuring every resident of the Netherlands automatically receives the government services they are entitled to. +Thank you for your interest in contributing! Conduction builds open-source components for digital government infrastructure. Every contribution β€” code, documentation, translation, issue report, or idea β€” helps us move toward our goal: ensuring every resident of the Netherlands automatically receives the government services they are entitled to. -This guide applies to all repositories under [ConductionNL](https://github.com/ConductionNL). The authoritative source is [CONTRIBUTING.md](https://github.com/ConductionNL/.github/blob/main/CONTRIBUTING.md) in our organization `.github` repository. +This document applies to all repositories under the [ConductionNL](https://github.com/ConductionNL) organization. ---- +## Code of Conduct + +This project is governed by our [Code of Conduct(ion)](code-of-conduct). By participating, you are expected to uphold this code. Please report unacceptable behavior to [info@conduction.nl](mailto:info@conduction.nl). ## Ways to Contribute @@ -20,23 +22,40 @@ You don't need to write code to contribute: | Contribution type | Where | |---|---| -| πŸ› Report a bug | GitHub Issues | -| πŸ’‘ Suggest a feature | GitHub Issues | -| πŸ“– Improve documentation | PR to the relevant repo | -| 🌐 Translate content | PR to `.github` (this docs site) | -| πŸ” Review a pull request | GitHub PR review | -| πŸ’¬ Answer questions | GitHub Discussions / Issues | -| πŸ”’ Report a security issue | See [Security Policy](../ISO/security) | - ---- +| Report a bug | GitHub Issues | +| Suggest a feature | GitHub Issues | +| Improve documentation | PR to the relevant repo | +| Translate content | PR to `.github` (docs site) | +| Review a pull request | GitHub PR review | +| Answer questions | GitHub Discussions / Issues | +| Report a security issue | See [Security Policy](../ISO/security) | ## First-Time Contributors New to open source or to Conduction? Look for issues labeled [`good first issue`](https://github.com/search?q=org%3AConductionNL+label%3A%22good+first+issue%22&type=issues) β€” these are scoped to be approachable without deep context. -If you're unsure where to start, leave a comment on an issue you're interested in. We'll help you get oriented. +If you're unsure where to start, open a discussion or leave a comment on an issue you're interested in. We'll help you get oriented. ---- +## Reporting Bugs + +Before filing a bug report, check existing issues β€” it may already be reported. When creating a report, include: + +- A clear, descriptive title +- Exact steps to reproduce the problem +- Expected vs actual behavior +- Screenshots, logs, or error messages where relevant +- Version of the app and Nextcloud (if applicable) + +**For security issues, do NOT open a public issue. See [Security Policy](../ISO/security).** + +## Suggesting Enhancements + +Enhancement suggestions are tracked as GitHub Issues. Include: + +- A clear, descriptive title +- The problem you are trying to solve (not just the solution) +- Current behavior vs desired behavior +- Why this would be useful to others ## Contributing Code @@ -45,60 +64,84 @@ If you're unsure where to start, leave a comment on an issue you're interested i 1. Fork the repository 2. Create a branch from `development`: `git checkout -b feature/your-feature-name` 3. Make your changes and commit using [Conventional Commits](#commit-messages) -4. Sign off your commits (see [DCO](#developer-certificate-of-origin)) -5. Push to your fork and open a PR targeting `development` +4. Sign off your commits (see [DCO](#developer-certificate-of-origin-dco)) +5. Push to your fork and open a PR targeting the `development` branch +6. Wait for CI to pass and request a review ### Conduction team members (direct branch) -1. Create a branch from `development`: `feature/*` or `bugfix/*` +1. Create a branch from `development`: `feature/*`, `bugfix/*` 2. Open a PR to `development` when ready ### PR checklist -- [ ] CI quality checks pass locally +Before opening a PR: + +- [ ] CI quality checks pass locally (`composer cs:check`, `composer phpstan`, `npm run lint`) - [ ] New code has tests where applicable - [ ] Documentation updated if behavior changes -- [ ] PR labeled with `major`, `minor`, or `patch` +- [ ] PR labeled with `major`, `minor`, or `patch` (controls version bump) - [ ] DCO sign-off on all commits (`git commit -s`) ---- - ## Branch Model +All branches are protected via organization-wide rulesets. Direct pushes are not allowed. Every change flows through a pull request with peer review and CI. + ``` feature/* ──┐ bugfix/* ──┼──→ development ──→ beta ──→ main -hotfix/* β”€β”€β”˜ +hotfix/* β”€β”€β”˜ ↑ + └── (hotfix can target beta or main directly) ``` -| Target | Allowed sources | Reviews required | -|---|---|---| -| `development` | `feature/*`, `bugfix/*` | 1 | -| `beta` | `development`, `hotfix/*` | 1 | -| `main` | `beta`, `hotfix/*` | 2 | +| Target | Allowed sources | Reviews required | CI required | +|---|---|---|---| +| `development` | `feature/*`, `bugfix/*` | 1 | Quality CI | +| `beta` | `development`, `hotfix/*` | 1 | Quality CI | +| `main` | `beta`, `hotfix/*` | 2 | Branch Protection CI | -No force pushes. No direct pushes. All changes via pull request. See the full [Release Process](release-process) for details. - ---- +All rulesets enforce: no force pushes, no branch deletion, stale reviews dismissed on new pushes, all threads resolved before merge. ## Quality Workflow -Every PR triggers automated quality checks β€” all must pass before merge. +Every PR triggers automated quality checks. **All must pass before merge.** + +### PHP + +| Check | Tool | +|---|---| +| Syntax | `php -l` | +| Code style | PHPCS (PSR-12) | +| Static analysis | PHPStan (level 5) + Psalm | +| Mess detection | PHPMD | + +### Frontend -**PHP:** syntax lint, PHPCS (PSR-12), PHPStan (level 5), Psalm, PHPMD +| Check | Tool | +|---|---| +| JavaScript/Vue | ESLint | +| CSS/SCSS | Stylelint | -**Frontend:** ESLint, Stylelint +### Dependencies -**Dependencies:** license compliance, vulnerability scan +- License compliance (npm + composer) +- Known vulnerability scan (npm audit + composer audit) + +**Run locally:** ```bash -# Run locally -composer cs:check && composer phpstan && composer psalm +# PHP +composer cs:check +composer cs:fix +composer phpstan +composer psalm +composer phpmd + +# Frontend npm run lint +npx stylelint "src/**/*.{css,scss,vue}" ``` ---- - ## Commit Messages We use [Conventional Commits](https://www.conventionalcommits.org/): @@ -108,25 +151,36 @@ feat: add proactive service matching fix: resolve null pointer in namespace parser docs: update contributing guide chore: upgrade PHPStan to v2 +refactor: extract classifier into own class ``` -- Imperative mood ("add" not "added") -- First line under 72 characters -- Reference issues with `Closes #123` in the body - ---- +- Use the **imperative mood** ("add" not "added") +- Keep the first line under 72 characters +- Reference issues with `Closes #123` in the body where applicable -## Developer Certificate of Origin +## Developer Certificate of Origin (DCO) -All contributions must be signed off: +All contributions must be signed off. This certifies that you wrote the code or have the right to submit it: ```bash git commit -s -m "feat: your commit message" ``` -This adds `Signed-off-by: Your Name ` and certifies you have the right to submit the contribution under the project license. See [developercertificate.org](https://developercertificate.org/). +This adds a `Signed-off-by: Your Name ` trailer. By signing off, you agree to the [Developer Certificate of Origin](https://developercertificate.org/). ---- +If you forget, amend your last commit: `git commit --amend -s` + +## Release Process + +Releases are fully automated via GitHub Actions on merge to `beta` (nightly) or `main` (stable). Version numbers are calculated from PR labels: + +| Label | Effect | +|---|---| +| `major` | `1.0.0` β†’ `2.0.0` | +| `minor` | `1.0.0` β†’ `1.1.0` | +| `patch` (default) | `1.0.0` β†’ `1.0.1` | + +See [Release Process](release-process) for full details. ## Development Setup @@ -134,9 +188,16 @@ This adds `Signed-off-by: Your Name ` and certifies you have the right to 2. Install Composer 3. Clone the repository (or your fork) 4. Run `composer install && npm install` -5. Set up a [Nextcloud dev environment](https://github.com/ConductionNL/nextcloud-docker-dev) +5. Configure your [Nextcloud development environment](https://github.com/ConductionNL/nextcloud-docker-dev) ---- +## Documentation + +Documentation source lives in `website/` (this repo) and is published to [docs.conduction.nl](https://docs.conduction.nl). + +To contribute to the docs: +1. Edit the relevant Markdown files under `website/docs/` +2. For Dutch translations, edit the corresponding file under `website/i18n/nl/` +3. Test locally: `cd website && npm install && npm run start` ## Community @@ -144,8 +205,6 @@ This adds `Signed-off-by: Your Name ` and certifies you have the right to - [LinkedIn](https://www.linkedin.com/company/conduction/) - [GitHub Discussions](https://github.com/orgs/ConductionNL/discussions) ---- - ## License -By contributing, you agree that your contributions will be licensed under the same license as the project (EUPL-1.2 unless stated otherwise). +By contributing, you agree that your contributions will be licensed under the same license as the project (EUPL-1.2 unless stated otherwise in the repository). diff --git a/website/docs/WayOfWork/customer-support.md b/website/docs/WayOfWork/customer-support.md new file mode 100644 index 0000000..140c928 --- /dev/null +++ b/website/docs/WayOfWork/customer-support.md @@ -0,0 +1,31 @@ +--- +id: customer-support +title: Customer Support +sidebar_label: Customer Support +sidebar_position: 7 +description: How Conduction handles customer support tickets and complaints +--- + +# Customer Support + +## Quick Fixes + +If a customer issue takes **less than 5 minutes** to resolve and doesn't require looking up internals or environment settings β€” just fix it. No need to create an issue. + +If it takes longer than 5 minutes, create an issue. Minimum time logged: **1 hour**. + +## Support Flow + +1. **Email** β€” customers send queries to **support@conduction.nl**, which auto-creates a Jira ticket +2. **Slack** β€” right-click a customer message and select "create issue from" to generate a Jira ticket +3. **Assign** β€” review the ticket and assign it to the right person +4. **Update** β€” keep the customer informed about progress, even if there's no significant update +5. **Follow up** β€” after resolution, confirm with the customer that the issue is resolved + +## Customer Complaints + +Complaints go to **klachten@conduction.nl**. Examples: billing errors, inappropriate employee behavior, quality issues. + +## Four-Eyes Principle + +All code changes require peer review. **Core bundles** and **payment-related code** require a **six-eyes principle** β€” two reviewers. No code may be merged into protected branches without the required review. diff --git a/website/docs/WayOfWork/development-pipeline.md b/website/docs/WayOfWork/development-pipeline.md new file mode 100644 index 0000000..28e256e --- /dev/null +++ b/website/docs/WayOfWork/development-pipeline.md @@ -0,0 +1,88 @@ +--- +id: development-pipeline +title: Automated Development Pipeline +sidebar_label: Development Pipeline +sidebar_position: 3 +description: How code flows from branch to production β€” quality gates, security checks, and automated releases +--- + +# Automated Development Pipeline + +Every line of code at Conduction passes through an automated pipeline before it reaches production. The pipeline enforces quality, security, and compliance β€” no exceptions. + +## Branch Flow + +``` +feature/* ──┐ +bugfix/* ──┼──→ development ──→ beta ──→ main +hotfix/* β”€β”€β”˜ +``` + +All branches are protected. No direct pushes. Every change flows through a pull request with peer review and CI. + +| Target | Reviews required | What triggers | +|---|---|---| +| `development` | 1 reviewer | Quality CI | +| `beta` | 1 reviewer | Quality CI + beta release | +| `main` | 2 reviewers | Full CI + stable release | + +## Quality Gates + +Every PR triggers **four parallel quality gates** β€” all must pass before merge: + +### PHP Quality +| Check | Tool | +|---|---| +| Syntax | `php -l` | +| Code style | PHPCS (PSR-12) | +| Static analysis | PHPStan + Psalm | +| Mess detection | PHPMD | +| Code metrics | PHPMetrics | + +### Frontend Quality +| Check | Tool | +|---|---| +| JavaScript/Vue | ESLint | +| CSS/SCSS | Stylelint | + +### Dependency Checks +| Check | What it catches | +|---|---| +| License compliance | Copyleft or restricted licenses in dependencies | +| Vulnerability scan | Known CVEs in composer and npm packages | +| SBOM generation | CycloneDX bill of materials for audit trail | + +### Security +| Check | What it catches | +|---|---| +| `composer audit` | Known PHP dependency vulnerabilities | +| `npm audit` | Known JS dependency vulnerabilities | + +## Automated Releases + +Releases are fully automated via GitHub Actions: + +- **Merge to `beta`** β†’ beta release (nightly channel) +- **Merge to `main`** β†’ stable release + +Version numbers are calculated from PR labels: + +| Label | Version bump | +|---|---| +| `major` | 1.0.0 β†’ 2.0.0 | +| `minor` | 1.0.0 β†’ 1.1.0 | +| `patch` (default) | 1.0.0 β†’ 1.0.1 | + +## Hydra β€” Agentic Development Pipeline + +:::info Coming soon + +Conduction is developing **Hydra**, an agentic spec-driven development pipeline that builds applications from structured specifications with government-grade traceability, SBOM generation, and audit trails. This section will be updated when Hydra is publicly available. + +::: + +## Further Reading + +- [Contributing guide](contributing) β€” PR checklist, commit conventions, DCO +- [Release process](release-process) β€” full versioning and deployment details +- [Spec-driven development](spec-driven-development) β€” how specs feed the pipeline diff --git a/website/docs/WayOfWork/intro.md b/website/docs/WayOfWork/intro.md index dc61e92..8de247d 100644 --- a/website/docs/WayOfWork/intro.md +++ b/website/docs/WayOfWork/intro.md @@ -34,9 +34,37 @@ We work in small, self-directed teams using agile methods. We prefer GitHub Issu - **We build on Common Ground** β€” open standards for Dutch government software - **We eat our own dog food** β€” we use the products we build +## KPIs and Goals + +We set yearly Key Performance Indicators to know if we're on track. KPIs may shift year to year, but the aim is steady improvement. Everyone should be aware of the current goals and KPIs β€” ask your team lead for the latest version. + +What we measure ties directly to our mission: publishing code that's actually used, building accessible software, and making customers happy. + +## Project Management + +Every project starts with a **kick-off**. If you haven't had one, ask for it β€” never work on assumptions. + +- Scope, budget and planning are defined in the quotation +- Anything outside the quotation scope: discuss with your supervisor first +- All work must be traceable to issues + +### Crisis Management + +When a project turns into a crisis situation: + +1. **Re-refine** β€” control is everything; investment in refinement always pays off +2. **Be realistic** β€” clear expectations beat false promises. Don't say "maybe" when you mean "no" +3. **Multidisciplinary team** β€” include backend, frontend, and project management +4. **Go/no-go moment** β€” establish clear criteria and communicate them to the client +5. **Clear communication** β€” dedicated Slack channel with all stakeholders including the client +6. **Weekend work** β€” use evenings/weekends to prepare the next day; do regular development during working hours +7. **Don't rush** β€” keep time to refine and think. Quick fixes come back to haunt you + ## Further Reading -- [Full company introduction](/docs/intro) β€” market position, competencies, brand promises +- [Employee handbook](/docs/intro) β€” the quick-reference overview - [Organizational structure](organisation) β€” roles, responsibilities, team structure - [Way of working](way-of-working) β€” sprints, issue flow, code standards - [Release process](release-process) β€” branch model, versioning, deployment +- [Onboarding](onboarding) β€” buddy system and getting started +- [Customer support](customer-support) β€” support flow and complaints diff --git a/website/docs/WayOfWork/onboarding.md b/website/docs/WayOfWork/onboarding.md new file mode 100644 index 0000000..718626d --- /dev/null +++ b/website/docs/WayOfWork/onboarding.md @@ -0,0 +1,50 @@ +--- +id: onboarding +title: Onboarding & Buddy System +sidebar_label: Onboarding +sidebar_position: 5 +description: How onboarding works at Conduction and what the buddy system means +--- + +import ToolList from '@site/src/components/ToolList'; + +# Onboarding & Buddy System + +## Buddy System + +From day one, you get assigned a **buddy** β€” an experienced colleague who guides you through your first weeks. Your buddy is your go-to person for: + +- Questions about how things work +- Help with tooling and access +- Understanding our culture and way of working +- Navigating projects and team dynamics + +Don't hesitate to ask. That's literally what they're there for. + +## Your First Weeks + +During onboarding, you'll: + +1. **Get access** β€” +2. **Set up your machine** β€” install required tooling (your buddy helps) +3. **Security setup** β€” ESET antivirus, VPN, BitLocker if needed +4. **Meet the team** β€” introductions, attend standups and ceremonies +5. **Start contributing** β€” pick up your first issues with buddy support + +## Code of Conduct + +We treat each other with respect. Our agreements: + +- Talk **with** each other, not **about** each other +- Listen and ask questions when things are unclear +- Help each other β€” give constructive feedback and compliments +- Keep your commitments, and communicate when you can't +- Don't be afraid to ask for help +- Resolve conflicts by talking directly +- Discrimination, harassment, aggression, or bullying is never accepted + +If you experience unwanted behavior, first try to address the person directly. If that's not possible, contact the internal confidential counselor. An external counselor is available through our occupational health service. + +## Questions? + +Ask your buddy. That's the whole point. diff --git a/website/docs/WayOfWork/release-process.md b/website/docs/WayOfWork/release-process.md index 2656254..a1ea243 100644 --- a/website/docs/WayOfWork/release-process.md +++ b/website/docs/WayOfWork/release-process.md @@ -227,8 +227,6 @@ A: Check the latest git tag with `git tag -l 'v*' --sort=-v:refname | head -1`, **Q: What about the Nextcloud App Store version compatibility (``)?** A: This is still managed in your repo's `appinfo/info.xml`. Only the `` tag is overwritten in the tarball β€” all other fields (name, description, nextcloud version requirements, etc.) come from your repo as-is. ---- - ## Further Reading - **Centralized workflows**: [github.com/ConductionNL/.github](https://github.com/ConductionNL/.github/tree/main/.github/workflows) β€” all shared workflow definitions diff --git a/website/docs/WayOfWork/spec-driven-development.md b/website/docs/WayOfWork/spec-driven-development.md new file mode 100644 index 0000000..712556d --- /dev/null +++ b/website/docs/WayOfWork/spec-driven-development.md @@ -0,0 +1,62 @@ +--- +id: spec-driven-development +title: Spec-Driven Development +sidebar_label: Spec-Driven Development +sidebar_position: 2 +description: How Conduction uses OpenSpec and Claude Code to go from idea to implementation +--- + +# Spec-Driven Development + +At Conduction, we don't start coding before we know what we're building. We use a **spec-driven workflow** where every change is defined as structured artifacts before implementation begins. Specs live alongside code and persist across sessions, ensuring continuity and traceability. + +## The Pipeline + +All development follows four stages: + +| Stage | What happens | Output | +|---|---|---| +| **1. Obtain** | Discover requirements β€” from issues, tenders, app research, documentation | Understanding of what to build | +| **2. Specify** | Write structured specs that define the change | proposal.md β†’ specs.md β†’ design.md β†’ tasks.md β†’ GitHub Issues | +| **3. Build** | Implement by assembling components, schemas, and workflows | Working software | +| **4. Validate** | Verify quality, run tests, check against specs | Confidence to ship | + +## OpenSpec + +OpenSpec is our specification format. Every change produces a chain of artifacts: + +``` +proposal.md ──► specs.md ──► design.md ──► tasks.md ──► GitHub Issues +``` + +- **Proposal** β€” what and why (problem statement, scope, stakeholders) +- **Specs** β€” detailed requirements with GIVEN/WHEN/THEN acceptance criteria +- **Design** β€” technical approach, component selection, data model +- **Tasks** β€” breakdown into implementable units +- **Issues** β€” tasks become trackable GitHub Issues with an epic + +Org-wide specs (test coverage baselines, API patterns, NL Design System compliance, i18n requirements) live in the [`openspec/`](https://github.com/ConductionNL/.github/tree/main/openspec) directory of this repository. Individual apps extend these with app-specific specs. + +## Claude Code + +We use [Claude Code](https://docs.anthropic.com/en/docs/claude-code) as our development orchestrator. Claude acts as an **architect and assembler** β€” it defines, configures, and validates, but delegates actual implementation to the platform's building blocks: + +| Layer | Tool | What Claude does | +|---|---|---| +| **Frontend** | `@conduction/nextcloud-vue` | Select and configure components, define views and routing | +| **Backend data** | OpenRegister | Define schemas, registers, object structures, validation rules | +| **Backend logic** | n8n workflows | Design workflow logic, configure triggers, map data | + +A shared configuration repository ([`claude-code-config`](https://github.com/ConductionNL/claude-code-config)) provides all commands, skills, and workflow instructions. It's added as a git submodule at `.claude/` in each app repository. + +## Key Commands + +| Command | Stage | Purpose | +|---|---|---| +| `/opsx-explore` | Obtain | Investigate a topic or problem | +| `/opsx-new` | Specify | Start a new change with a proposal | +| `/opsx-ff` | Specify | Generate all spec artifacts in one go | +| `/opsx-plan-to-issues` | Specify | Convert tasks to GitHub Issues | +| `/opsx-apply` | Build | Implement tasks from the specs | +| `/opsx-verify` | Validate | Check implementation against specs | +| `/opsx-archive` | Done | Archive completed change | diff --git a/website/i18n/nl/code.json b/website/i18n/nl/code.json new file mode 100644 index 0000000..7e61c2c --- /dev/null +++ b/website/i18n/nl/code.json @@ -0,0 +1,35 @@ +{ + "homepage.vision": { + "message": "In 2035 zorgt Conduction ervoor dat alle inwoners van Nederland automatisch de overheidsdiensten ontvangen waar ze recht op hebben." + }, + "homepage.cta": { + "message": "Bekijk Onze Documentatie" + }, + "homepage.feature.howWeWork.title": { + "message": "Hoe We Werken" + }, + "homepage.feature.howWeWork.description": { + "message": "Ons medewerkershandboek: processen, cultuur en hoe we samenwerken. Alles wat je nodig hebt om te starten en op een lijn te blijven." + }, + "homepage.feature.howWeWork.button": { + "message": "Lees Hoe We Werken" + }, + "homepage.feature.iso.title": { + "message": "ISO & Kwaliteit" + }, + "homepage.feature.iso.description": { + "message": "Onze inzet voor kwaliteit en veiligheid via ISO 9001 en 27001 certificering. Incidentmelding, beveiligingsbeleid en kwaliteitsmanagement." + }, + "homepage.feature.iso.button": { + "message": "Bekijk ISO Documentatie" + }, + "homepage.feature.products.title": { + "message": "Producten & Diensten" + }, + "homepage.feature.products.description": { + "message": "Onze open-source componenten en diensten voor de digitale overheidsinfrastructuur. Technische documentatie en implementatiegidsen." + }, + "homepage.feature.products.button": { + "message": "Verken Producten" + } +} diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current.json b/website/i18n/nl/docusaurus-plugin-content-docs/current.json index eeccf75..07806c0 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current.json +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current.json @@ -1,18 +1,22 @@ { - "sidebar.tutorialSidebar.link.About Conduction": { - "message": "Over Conduction", - "description": "Sidebar label for About Conduction page" + "sidebar.tutorialSidebar.link.Employee Handbook": { + "message": "Medewerkershandboek", + "description": "Sidebar label for Employee Handbook landing page" + }, + "sidebar.tutorialSidebar.category.Working at Conduction": { + "message": "Werken bij Conduction", + "description": "Sidebar category for HR, onboarding, organisation" }, - "sidebar.tutorialSidebar.category.How We Work": { - "message": "Hoe We Werken", - "description": "Sidebar category label for Way of Work section" + "sidebar.tutorialSidebar.category.Building Software": { + "message": "Software Bouwen", + "description": "Sidebar category for development, contributing, releases" }, - "sidebar.tutorialSidebar.category.ISO & Quality": { - "message": "ISO & Kwaliteit", - "description": "Sidebar category label for ISO section" + "sidebar.tutorialSidebar.category.Support & Safety": { + "message": "Support & Veiligheid", + "description": "Sidebar category for customer support, incidents, security" }, - "sidebar.tutorialSidebar.category.Products & Services": { - "message": "Producten & Diensten", - "description": "Sidebar category label for Products section" + "sidebar.tutorialSidebar.category.About Conduction": { + "message": "Over Conduction", + "description": "Sidebar category for mission, ISO, products" } } diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md index 600f04b..770b2aa 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md @@ -12,8 +12,6 @@ Conduction heeft de plicht om incidenten te detecteren, te melden en ervan te le **Vermoed je dat er iets mis is? Meld het direct. Er is geen straf voor melden te goeder trouw.** ---- - ## Wat Te Melden ### Beveiligingsincidenten (ISO 27001:2022 A.6.8) @@ -35,22 +33,18 @@ Meld elk geval van: - Procesfout die tot klantimpact had kunnen leiden - Bijna-ongeluk: iets dat mis had kunnen gaan maar gelukkig niet is misgegaan ---- - ## Hoe Te Melden -| Kanaal | Wanneer te gebruiken | -|---|---| -| **Slack `#incidents`** | Eerste contactpunt voor alle incidenten β€” directe melding | -| **E-mail: security@conduction.nl** | Voor gevoelige incidenten waarvoor Slack niet geschikt is | -| **GitHub Issue** (privΓ© repo) | Voor opvolging, tracking en afsluiting | +**Maak of flag een issue in Jira** en label het als **`security-incident`** of **`quality-incident`**. Dit is de enige juiste manier om een incident te melden. + +Weet je niet hoe? Vraag een teamlid, je leidinggevende of iemand van het management β€” zij helpen je het issue aan te maken. + +Het labelen van een issue als incident triggert automatisch een Slack-flow die vraagt om een **root cause analysis template** in te vullen. **Verwachte reactietijd:** - Beveiligingsincidenten: bevestigd binnen **4 werkuren** - Kwaliteitsafwijkingen: bevestigd binnen **1 werkdag** ---- - ## Wat Er Na Je Melding Gebeurt 1. De Kwaliteits- & Veiligheidsmanager bevestigt de melding @@ -60,8 +54,6 @@ Meld elk geval van: 5. Corrigerende maatregel wordt gedocumenteerd en gevolgd tot afsluiting 6. Lessen worden gedeeld met het team ---- - ## Jouw Verantwoordelijkheden - Meld incidenten **zodra je ze ontdekt** β€” vertraging vergroot de impact @@ -69,7 +61,5 @@ Meld elk geval van: - Bewaar bewijsmateriaal (logbestanden, screenshots) indien mogelijk - Werk mee aan het onderzoek ---- - _ISO 27001:2022 referentie: A.6.8 β€” Melden van informatiebeveiligingsgebeurtenissen_ _ISO 9001:2015 referentie: Β§10.2 β€” Afwijking en corrigerende maatregel_ diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md index 99a7d4d..48ee2eb 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md @@ -41,8 +41,6 @@ Het management van Conduction verbindt zich tot: Dit beleid wordt gecommuniceerd aan alle medewerkers via deze documentatiesite. Van medewerkers wordt verwacht dat zij dit beleid begrijpen en de principes toepassen in hun dagelijkse werk. Vragen of opmerkingen kunnen worden gericht aan de kwaliteitsmanager of ingediend via een [GitHub Issue](https://github.com/ConductionNL/.github/issues). ---- - _ISO 9001:2015 referentie: Β§5.2 β€” Kwaliteitsbeleid_ _Laatste beoordeling: in behandeling_ _Volgende beoordeling: jaarlijkse managementbeoordeling_ diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md index 6cb1ff4..ea0da12 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md @@ -58,8 +58,6 @@ De volgende maatregelen zijn van kracht (ISO 27001:2022 Bijlage A): - **Incidentbeheer** (A.6.8): Alle vermoedens van incidenten moeten worden gemeld β€” zie [Incidentmelding](incident-reporting) - **BedrijfscontinuΓ―teit** (A.5.29): Kritieke diensten hebben gedocumenteerde herstelprocedures ---- - _ISO 27001:2022 referentie: Β§5.2 β€” Informatiebeveiligingsbeleid; Bijlage A.5.1_ _Laatste beoordeling: in behandeling_ _Volgende beoordeling: jaarlijkse managementbeoordeling_ diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md index 44b8458..3fe3e8a 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md @@ -10,8 +10,6 @@ description: Hoe je kwetsbaarheden meldt, onze responstijden en safe harbor-verk Dit beveiligingsbeleid geldt voor alle repositories onder de [ConductionNL](https://github.com/ConductionNL)-organisatie. ---- - ## Een Kwetsbaarheid Melden **Maak GEEN openbaar GitHub-issue aan voor beveiligingskwetsbaarheden.** @@ -26,9 +24,7 @@ Dit maakt een end-to-end versleuteld beveiligingsadvies aan, zichtbaar alleen vo ### 2. E-mail -Stuur je melding naar **security@conduction.nl**. - ---- +Stuur je melding naar **security@conduction.nl**. Voor gevoelige communicatie kun je onze PGP-sleutel opvragen per e-mail. ## Wat te Vermelden @@ -38,8 +34,6 @@ Stuur je melding naar **security@conduction.nl**. - **Getroffen versies** β€” welke releases zijn getroffen - **Suggestie voor oplossing** β€” optioneel, maar welkom ---- - ## Responstijden | Mijlpaal | Streefdatum | @@ -50,8 +44,6 @@ Stuur je melding naar **security@conduction.nl**. | Fix voor gemiddeld | Binnen **90 dagen** | | Publieke bekendmaking | Na release van de fix, of na **90 dagen** vanaf melding | ---- - ## Ernsttyclassificatie We gebruiken [CVSSv3](https://www.first.org/cvss/calculator/3.1): @@ -63,8 +55,6 @@ We gebruiken [CVSSv3](https://www.first.org/cvss/calculator/3.1): | **Gemiddeld** | 4,0–6,9 | Fix binnen 90 dagen | | **Laag** | 0,1–3,9 | Opgelost in volgende geplande release | ---- - ## Toepassingsgebied ### Binnen scope @@ -79,17 +69,15 @@ We gebruiken [CVSSv3](https://www.first.org/cvss/calculator/3.1): - Kwetsbaarheden in Nextcloud core β†’ meld bij [Nextcloud](https://nextcloud.com/security/) - Kwetsbaarheden in externe dependencies β†’ meld eerst upstream -- Social engineering of phishing -- Problemen die onrealistisch gebruikersgedrag vereisen +- Social engineering of phishing tegen Conduction-medewerkers +- Fysieke beveiliging +- Problemen die onwaarschijnlijk of onrealistisch gebruikersgedrag vereisen - Denial-of-service-aanvallen op gehoste infrastructuur - ---- +- Reeds publiek bekende problemen ## Ondersteunde Versies -Beveiligingsupdates worden alleen geleverd voor de **laatste stabiele release** van elke app. - ---- +We leveren beveiligingsupdates voor de **laatste stabiele release** van elke app. Oudere versies ontvangen geen beveiligingspatches tenzij expliciet vermeld in de repository. ## Safe Harbor @@ -97,12 +85,11 @@ Conduction zal geen juridische stappen ondernemen tegen beveiligingsonderzoekers - Kwetsbaarheden te goeder trouw via dit beleid melden - Geen gegevens inzien, wijzigen of verwijderen verder dan nodig om de kwetsbaarheid aan te tonen -- Productiediensten niet verstoren +- Productiediensten niet verstoren of gebruikerservaring niet verslechteren +- De kwetsbaarheid niet exploiteren verder dan nodig om het bestaan ervan te bevestigen - Ons redelijke tijd geven om het probleem op te lossen voor publieke bekendmaking -We beschouwen beveiligingsonderzoek te goeder trouw als een publiek goed. - ---- +We beschouwen beveiligingsonderzoek te goeder trouw als een publiek goed en werken liever met je samen dan tegen je. ## Bug Bounty @@ -111,8 +98,56 @@ Conduction heeft momenteel geen betaald bug bounty-programma. Geldige meldingen - Publieke vermelding in release notes (met toestemming) - Erkenning in het GitHub Security Advisory ---- - ## Interne Incidentmelding Conduction-medewerkers: zie de [Incidentmelding](incident-reporting)-procedure voor het melden van beveiligingsincidenten en kwaliteitsafwijkingen. + +## Beveiligingspraktijken voor Medewerkers + +De onderstaande secties gelden voor alle medewerkers van Conduction. + +### Wachtwoorden + +Alle Conduction-wachtwoorden moeten minimaal **10 tekens** bevatten en bestaan uit: + +- Een letter +- Een cijfer +- Een speciaal teken + +Sla alle inloggegevens op in [Passwork](https://www.passwork.me/). Deel wachtwoorden nooit via Slack, e-mail of andere communicatiekanalen. + +### Omgang met Data + +- Sla nooit persoonlijke of vertrouwelijke data van Conduction of klanten lokaal op +- Push nooit API keys of omgevingsvariabelen naar GitHub +- Deel bestanden alleen via Google Drive of Passwork β€” nooit via USB, e-mail of Slack +- Als je gevoelige data lokaal moet opslaan, versleutel met **BitLocker** +- Gedownloade documenten met privacygevoelige data moeten binnen **5 dagen** van je laptop verwijderd worden + +### Clean Desk & Clear Screen + +- Vergrendel altijd je apparaat als je wegloopt β€” ook voor koffie +- Laat je apparaat nooit onbeheerd achter +- Berg je apparaat op in een locker aan het einde van de dag, of neem het mee +- Laat geen notities, printjes of randapparatuur rondslingeren + +### Bring Your Own Device (BYOD) + +Je kiest zelf je ontwikkelmachine. De enige eisen: + +1. Het kan de vereiste lokale tooling draaien +2. Het voldoet aan de beveiligingseisen op deze pagina (antivirus, encryptie, VPN) + +### VPN + +Thuiswerken β€” zeker met gevoelige data β€” vereist een VPN-verbinding. + +- [NordLayer VPN](https://nordlayer.com/) β€” installeer en activeer bij thuiswerken +- Twijfel je of je het nodig hebt? Vraag je teamlead + +### Antivirus + +ESET moet op alle apparaten voor Conduction-werk altijd geactiveerd zijn. Vraag een uitzondering aan bij je teamlead indien nodig. + +- [ESET Business Edition β€” installatie en downloads](https://www.eset.com/int/business/) +- Neem contact op met IT voor je licentiesleutel en 2FA-instelling diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md index 666e1ad..29f0112 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md @@ -1,125 +1,81 @@ --- id: intro -title: Welkom bij Conduction! πŸ‘‹ -sidebar_label: Over Conduction +title: "HowWeWork@Conduction" +sidebar_label: Medewerkershandboek sidebar_position: 1 -description: Welkom bij Conduction - Een betere digitale wereld voor burgers door democratische, inclusieve en transparante software +description: Het medewerkershandboek van Conduction β€” hoe we werken, wat we verwachten en waar je alles vindt --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; +import ToolList from '@site/src/components/ToolList'; +import {Val, Email} from '@site/src/components/SiteData'; -# Welkom bij Conduction! πŸ‘‹ +# HowWeWork@Conduction -Of je nu een potentiΓ«le medewerker bent op zoek naar je volgende stap, een klant die innovatieve digitale oplossingen zoekt, een collega-IT-bedrijf geΓ―nteresseerd in samenwerking, of zelfs een concurrent die nieuwsgierig is naar onze aanpak β€” we zijn blij dat je er bent! +Het medewerkershandboek β€” wijzigingen? Submit een PR op [GitHub](https://github.com/ConductionNL/.github). -Voor **potentiΓ«le medewerkers**: ontdek onze unieke cultuur, waarden en ambitieuze missie om overheidsdiensten te transformeren. Leer hoe jij kunt bijdragen aan betekenisvolle projecten die direct impact hebben op het leven van burgers. +## Wie we zijn -Voor **klanten**: verken hoe onze innovatieve oplossingen en diepgaande expertise in digitalisering van de overheid jou helpen je burgers beter te bedienen. +Conduction helpt goede ideeen tot leven brengen. We werken democratisch, inclusief en transparant β€” niet als bedrijfswaarden op papier, maar als manier van werken. Ons doel: **in 2035 zorgt Conduction ervoor dat alle inwoners van Nederland automatisch de overheidsdiensten ontvangen waar ze recht op hebben.** -Voor **IT-bedrijven**: vind mogelijkheden voor partnerschap en samenwerking. We geloven in open source en kennisdeling. +**Meer lezen:** [Onze missie & waarden](WayOfWork/way-of-work) -En ja, ook voor onze **concurrenten**: welkom! Leer gerust van onze aanpak. We geloven dat betere overheidsdiensten samenwerking op sectorniveau vereisen. +## Werken bij Conduction -## πŸ§™ Wie is Conduction? +**Je eerste dagen** β€” je krijgt een buddy: een ervaren collega die je door de onboarding begeleidt. Ze helpen je met toegang (), je machine inrichten en je weg vinden. Schroom niet om te vragen β€” daar zijn ze voor. -Bij Conduction worden we gedreven door een visie die de digitalisering van de wereld ziet als een buitengewone kans. Een kans om onze wereld democratischer, inclusiever en transparanter te maken. +**Werkritme** β€” we werken in sprints. Standup om , report-out om (in Slack , bij code-werk altijd met een commit link). Prioriteiten komen van de Product Owner, inhoudelijke vragen gaan naar de dev lead. -**Onze missie:** de nieuwe digitale wereld vormen tot een eerlijke en inclusieve omgeving voor iedereen, en haar beschermen tegen de bedreigingen die digitalisering met zich meebrengt. +**Verlof & ziekte** β€” vakantie minimaal van tevoren aanvragen via het HR-portaal en bespreken in ****. Ziek? Bel HR voor . Te laat? Even een berichtje β€” twee keer per maand trakteer je op taart, de derde keer volgt een gesprek met HR. -Simpel maar wezenlijk: **"De digitale wereld een betere plek maken voor haar burgers, door democratische, inclusieve, transparante, begrijpelijke en betaalbare software voor burgers te maken."** +**Spelregels** β€” behandel elkaar met respect. Praat *met* elkaar, niet *over* elkaar. Discriminatie, intimidatie of pesten wordt nooit geaccepteerd. -## Ons (Big Hairy Audacious) Goal +**Meer lezen:** +- [Onboarding & buddy systeem](WayOfWork/onboarding) +- [Organisatie](WayOfWork/organisation) β€” rollen, teams, structuur +- [Vacatures](WayOfWork/vacancies) +- [Code of Conduct(ion)](WayOfWork/code-of-conduct) -We hebben een ambitieus doel gesteld: **"In 2035 zorgt Conduction ervoor dat alle inwoners van Nederland automatisch de overheidsdiensten ontvangen waar ze recht op hebben."** +## Software bouwen -Stel je een wereld voor waarin niemand door de mazen van het sociale vangnet valt. Waar een alleenstaande moeder geen cruciale kinderopvangtoeslag misloopt omdat ze niet wist dat die bestond. Waar ouderen automatisch de zorg en ondersteuning ontvangen waar ze recht op hebben, zonder complexe aanvraagprocedures. Waar mensen met beperkte digitale vaardigheden niet achterblijven. +**Wat we bouwen** β€” open-source componenten voor de digitale overheidsinfrastructuur, gebouwd op Common Ground principes. Onze code leeft op [GitHub](https://github.com/ConductionNL). -Via proactieve dienstverlening streven we naar een toekomst waarin overheidsdiensten automatisch burgers bereiken wanneer ze die nodig hebben β€” in plaats van dat burgers zelf moeten zoeken en aanvragen. +**Hoe we bouwen** β€” werk bestaat uit issues. Schrijf ze zo dat een collega ze kan oppakken zonder extra uitleg. Vier-ogen-principe op alle code. Nooit API keys pushen. Tooling setup? Vraag je buddy. -## Onze Kernwaarden +**Projecten** β€” elk project start met een kick-off. Niet gehad? Vraag erom β€” ga nooit op aannames werken. - - +> *Assumption is the mother of all fuckups.* -**Democratisch:** We zorgen ervoor dat onze oplossingen werken voor iedereen β€” niet alleen de digitaal vaardigen β€” door actief input te zoeken van alle belanghebbenden. +Scope, budget en planning liggen vast in de offerte. Alles daarbuiten: bespreek eerst met je leidinggevende. -**Inclusief:** Automatische dienstverlening slaagt alleen als die ALLE burgers bereikt. We laten niemand achter, of ze nu oud, gehandicapt of digitaal minder vaardig zijn. +**Uren schrijven** β€” log uren in Tempo, altijd op een issue met het juiste account. Weet je niet hoe? Gewoon vragen. -**Transparant:** Burgers moeten begrijpen hoe beslissingen worden genomen. Onze open communicatie en eerlijke werkwijze bouwen het vertrouwen dat proactieve dienstverlening vereist. +**Meer lezen:** +- [Spec-driven development](WayOfWork/spec-driven-development) β€” OpenSpec, Claude Code, de vierfasen-pipeline +- [Ontwikkelstraat](WayOfWork/development-pipeline) β€” kwaliteitspoorten, securitychecks, geautomatiseerde releases +- [Werkwijze](WayOfWork/way-of-working) β€” sprints, issue flow, story points +- [Contributing guide](WayOfWork/contributing) β€” codestandaarden, branching, reviews +- [Release process](WayOfWork/release-process) β€” branchmodel, versiebeheer, deployment -**Verantwoord en duurzaam:** We bouwen oplossingen die niet alleen huidige burgers dienen, maar ook houdbaar zijn voor volgende generaties. +## Support & veiligheid -**Innovatief:** Universele automatische dienstverlening vereist creatieve oplossingen voor complexe uitdagingen. We zoeken voortdurend nieuwe manieren om burgersbehoeften te identificeren en diensten proactief te leveren. +**Klanten helpen** β€” support loopt via **** (maakt automatisch een Jira-ticket). Snelle fix onder 5 minuten? Gewoon oplossen. Langer? Maak een issue. Klachten gaan naar ****. - - +**Elkaar helpen** β€” ergens vastgelopen? Flag het als impediment, post in Slack met een link naar het issue, en breng het in bij de standup. Je buddy is je eerste aanspreekpunt. -**Innovatief:** We volgen niet alleen trends β€” we creΓ«ren oplossingen die overheidsdienstverlening werkelijk transformeren. +**Incidenten** β€” herken je een beveiligings- of kwaliteitsincident? Overleg direct met je leidinggevende. Flag of maak een issue met het label "security incident" of "quality incident". Schrijf achteraf een memo met root cause analysis. Onthoud: **identificeer het risico -> beoordeel het risico -> beperk het risico -> herzie de maatregelen.** -**Kennisgedreven:** Diepe expertise is cruciaal. We investeren continu in kennis van zowel technologie als overheidsprocessen. +**Security** β€” toegang via je Conduction Google-account, inloggegevens in Passwork. Behandel gevoelige data als je naaktfoto's β€” deel alleen met wie het nodig heeft. Nooit gevoelige data via Slack of mail. VPN voor kritieke servers. ESET altijd geactiveerd. -**Constructief eigenwijs:** Om automatische dienstverlening in 2035 te bereiken, moeten we conventioneel denken in overheids-IT uitdagen. We durven moderne alternatieven voor te stellen waar anderen vasthouden aan verouderde systemen. +**Meer lezen:** +- [Klantenondersteuning](WayOfWork/customer-support) β€” supportproces en klachten +- [Incidentmelding](ISO/incident-reporting) β€” procedures en templates +- [Beveiligingsbeleid](ISO/security) β€” wachtwoorden, clean desk, BYOD, VPN, antivirus -**CoΓΆperatief:** We geloven dat het transformeren van overheidsdiensten samenwerking vereist. We delen kennis en code openlijk, ook met concurrenten, omdat ons doel voor 2035 zwaarder weegt dan individueel succes. +## Meer weten? - - +Voor wie het complete plaatje wil: -## Ons Gedrag: Waarden in de Praktijk - -**Innovatie in actie:** -- Nieuwe technologieΓ«n en aanpakken verkennen en voorstellen -- De status quo uitdagen met creatieve oplossingen -- Calculated risks nemen voor betekenisvolle verandering - -**Kennis in de praktijk:** -- Continu investeren in leren en vaardigheidsontwikkeling -- Expertise vrijgevig delen met collega's en klanten -- Beslissingen baseren op diepgaand begrip, niet op aannames - -**Constructief eigenwijs:** -- Gevestigde praktijken respectvol in twijfel trekken -- Alternatieve oplossingen onderbouwen met solide redenering -- Moderne standaarden en best practices bevorderen - -**Samenwerking in het dagelijks werk:** -- Actief samenwerkingsmogelijkheden zoeken -- Successen en lessen openlijk delen met de community -- Collectieve doelen boven individuele erkenning stellen - -## πŸ’» Onze Kerncompetenties - -1. **Kennis van ecosysteem en architectuur** β€” diepgaand begrip van het digitale overheidslandschap -2. **Kritische benadering** β€” we zijn geen orderuitvoerders; we denken kritisch mee met onze klanten -3. **Holistische aanpak** β€” we verbinden klanten met andere oplossingen en leveranciers -4. **Integratie** β€” we verbinden verschillende systemen en processen -5. **Continue innovatie** β€” we creΓ«ren voortdurend innovatieve oplossingen met maatschappelijke impact - -## πŸ‘© Onze Markt - -- Kleine en middelgrote gemeenten -- Overheidssamenwerkingen en -allianties -- Samenwerking met andere leveranciers als volwaardige partners -- Diverse overheidsinstanties - -## πŸ™‹ Merkbeloften - -- Open en transparant in alles wat we doen -- Geen vendor lock-in β€” oplossingen vrij van beperkingen -- Kennis delen en samenwerken -- Integratie als prioriteit β€” systemen die naadloos samenwerken - -## 🌈 Kom bij Conduction - -Ben jij gepassioneerd over een democratischere, inclusievere en transparantere digitale wereld? Gedij jij in een innovatieve en collaboratieve omgeving? Dan horen we graag van je! - -Werken bij Conduction betekent deel uitmaken van een toegewijd team dat positieve verandering nastreeft via technologie. We waarderen diversiteit, moedigen open communicatie aan en bieden ruimte voor groei. - -**Waarom Conduction?** -- **Betekenisvol werk** β€” jouw bijdrage heeft directe impact op het leven van burgers -- **Innovatie** β€” we staan aan de voorhoede van technologische vernieuwing -- **Samenwerking** β€” jouw ideeΓ«n en input zijn hier welkom -- **Professionele groei** β€” we ondersteunen jouw ontwikkeling - -Bekijk onze [vacatures](WayOfWork/vacancies) of bezoek [conduction.nl](https://www.conduction.nl/). +- [Missie & waarden](WayOfWork/way-of-work) β€” wie we zijn, wat ons drijft, KPI's +- [ISO & Kwaliteit](ISO/iso-intro) β€” ons certificeringstraject (ISO 9001 & 27001) +- [Producten & Diensten](Products/products-overview) β€” wat we bieden +- [Hoe deze manual werkt](WayOfWork/about-this-manual) β€” structuur, databronnen en hoe bij te dragen diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Issue_flow.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Issue_flow.md index cb1aa0c..8afcc56 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Issue_flow.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Issue_flow.md @@ -8,6 +8,39 @@ description: Hoe Conduction sprints plant, issues beheert en software oplevert # Issue Flow en Sprintplanning +## Scrum Ceremonies + +We volgen Scrum met tweewekelijkse sprints. Dit is het vaste ritme: + +| Ceremonie | Wanneer | Wat | +|---|---|---| +| **Retrospective & Sprintplanning** | Maandag 09:00 | Review vorige sprint op Miro (wat ging goed / beter), daarna volgende sprint plannen | +| **Standup** | Dagelijks 10:00 (behalve maandag) | Korte ronde: waar werk je aan, heb je blockers? | +| **Report-out** | Dagelijks 16:30 (behalve vrijdag) | Geschreven in Slack #general β€” wat je gedaan hebt, eventuele impediments | +| **Sprintreview & Presentaties** | Vrijdag (elke 2 weken) | Demo je werk aan het team, gevolgd door een borrel | + +**Kantooraanwezigheid:** minimaal een dag per week op kantoor. Kun je niet komen terwijl je ingepland staat? Meld het voor de werkdag begint. + +**Afspraken verzetten:** wie annuleert, is verantwoordelijk voor het direct opnieuw inplannen. + +## Story Points + +We schatten complexiteit, geen tijd. Story points meten hoe moeilijk iets is β€” een senior is misschien sneller klaar dan een junior, maar de complexiteit is hetzelfde. + +| Grootte | Story Points | Ongeveer | +|---|---|---| +| Small | 5 | Halve dag | +| Medium | 10 | Een dag | +| Large | 20 | Halve week | +| XL | 40 | Een week | +| XXL | 80 | Twee weken | +| XXXL | 160 | Een maand | + +**Regels:** +- Een enkele story mag niet meer dan 10 story points zijn β€” breek het op +- Alles boven de 10 punten is een epic +- Gebruik timeboxing: als je een hele dag bezig bent aan een 10-punts story, escaleer bij de standup +- Gemiddelde burn rate: **10 story points per developer per dag** ## Epics aanmaken en inschatten diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/about-this-manual.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/about-this-manual.md new file mode 100644 index 0000000..4901088 --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/about-this-manual.md @@ -0,0 +1,80 @@ +--- +id: about-this-manual +title: Hoe Deze Manual Werkt +sidebar_label: Over Deze Manual +sidebar_position: 99 +description: Hoe het medewerkershandboek is opgezet, waar data leeft en hoe je bijdraagt +--- + +# Hoe Deze Manual Werkt + +Dit medewerkershandboek is een [Docusaurus](https://docusaurus.io/)-site gehost op GitHub Pages. De bron leeft in de [ConductionNL/.github](https://github.com/ConductionNL/.github)-repository onder `website/`. + +## Structuur + +Het handboek is georganiseerd in vier thema's: + +| Thema | Wat het behandelt | +|---|---| +| **Werken bij Conduction** | Onboarding, organisatie, gedragscode, vacatures | +| **Software Bouwen** | Sprints, bijdragen, releases | +| **Support & Veiligheid** | Klantenondersteuning, incidenten, beveiligingsbeleid | +| **Over Conduction** | Missie, ISO, producten | + +De landingspagina ([Medewerkershandboek](/docs/intro)) geeft een compleet overzicht. Diepere pagina's werken elk onderwerp verder uit. + +## Talen + +De site ondersteunt Engels (standaard) en Nederlands. Engelse docs staan in `website/docs/`, Nederlandse vertalingen in `website/i18n/nl/docusaurus-plugin-content-docs/current/`. + +## Gecentraliseerde data + +Om te voorkomen dat waarden die veranderen (toolnamen, e-mailadressen, roosters) hardcoded in meerdere bestanden staan, gebruiken we een centraal databestand: + +**`website/src/data/site-data.json`** + +Dit bestand bevat: +- **`tools`** β€” toollijsten per categorie (onboarding, security, development) +- **`emails`** β€” bedrijfs-e-mailadressen (support, klachten, security, algemeen) +- **`slack`** β€” Slack-kanaalnamen +- **`schedule`** β€” standup-tijd, report-out-tijd, ziekmelddeadline, sprintlengte +- **`links`** β€” URLs van externe tools (Passwork, NordLayer, ESET) + +Pagina's refereren naar deze data via React-componenten: + +```jsx +import ToolList from '@site/src/components/ToolList'; +import {Val, Email} from '@site/src/components/SiteData'; + +// Rendert: "Google Workspace, GitHub, Jira, Slack, Passwork" + + +// Rendert: "10:00" + + +// Rendert: een mailto-link + +``` + +**Als een tool, e-mailadres of rooster verandert β€” pas `site-data.json` eenmaal aan. Alle pagina's updaten automatisch.** + +## Gesynchroniseerde bestanden + +Drie bestanden in de repo-root worden gespiegeld als docs-pagina's: + +| Repo root | Docs-pagina | +|---|---| +| `CONTRIBUTING.md` | `docs/WayOfWork/contributing.md` | +| `SECURITY.md` | `docs/ISO/security.md` | +| `CODE_OF_CONDUCT.md` | `docs/WayOfWork/code-of-conduct.md` | + +Een CI-workflow (`.github/workflows/docs-sync-check.yml`) checkt bij elke PR of deze bestanden nog in sync zijn. Bij afwijkingen geeft de workflow een waarschuwing. + +## Hoe bijdragen + +1. Maak een branch aan vanaf `development` +2. Bewerk markdown-bestanden onder `website/docs/` (Engels) of `website/i18n/nl/` (Nederlands) +3. Test lokaal: `cd website && npm install && npm run start` +4. Open een PR + +Zie de [Contributing guide](contributing) voor details. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/code-of-conduct.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/code-of-conduct.md new file mode 100644 index 0000000..bdd3366 --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/code-of-conduct.md @@ -0,0 +1,43 @@ +--- +id: code-of-conduct +title: Code of Conduct(ion) +sidebar_label: Gedragscode +sidebar_position: 4 +description: Onze communitystandaarden β€” hoe we met elkaar omgaan bij Conduction +--- + +# Code of Conduct(ion) + +## Onze Belofte + +Wij als leden, bijdragers en leiders beloven om deelname aan onze community een intimidatievrije ervaring te maken voor iedereen, ongeacht leeftijd, lichaamsomvang, zichtbare of onzichtbare beperking, etniciteit, geslachtskenmerken, genderidentiteit en -expressie, ervaringsniveau, opleiding, sociaaleconomische status, nationaliteit, uiterlijk, ras, kaste, huidskleur, religie of seksuele identiteit en orientatie. + +Wij beloven te handelen en te communiceren op manieren die bijdragen aan een open, gastvrije, diverse, inclusieve en gezonde community. + +## Onze Standaarden + +Voorbeelden van gedrag dat bijdraagt aan een positieve omgeving: + +- Empathie en vriendelijkheid tonen naar anderen +- Respect hebben voor afwijkende meningen, standpunten en ervaringen +- Constructieve feedback geven en ontvangen +- Verantwoordelijkheid nemen en je verontschuldigen bij degenen die getroffen zijn door onze fouten +- Focussen op wat het beste is voor de gehele community, niet alleen voor onszelf + +Voorbeelden van onacceptabel gedrag: + +- Het gebruik van geseksualiseerde taal of beelden, en seksuele aandacht of avances +- Trollen, beledigende of denigrerende opmerkingen, en persoonlijke of politieke aanvallen +- Publieke of prive-intimidatie +- Het publiceren van andermans persoonlijke informatie zonder expliciete toestemming +- Ander gedrag dat redelijkerwijs als ongepast kan worden beschouwd in een professionele omgeving + +## Handhaving + +Gevallen van beledigend, intimiderend of anderszins onacceptabel gedrag kunnen worden gemeld bij de communityleiders via **info@conduction.nl**. + +Alle klachten worden snel en eerlijk beoordeeld en onderzocht. Communityleiders zijn verplicht de privacy en veiligheid van de melder te respecteren. + +## Attributie + +Deze gedragscode is gebaseerd op het [Contributor Covenant](https://www.contributor-covenant.org), versie 2.1. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/contributing.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/contributing.md index a835e1e..ddcb544 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/contributing.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/contributing.md @@ -8,11 +8,13 @@ description: Hoe je kunt bijdragen aan de open-source projecten van Conduction # Bijdragen aan Conduction -Bedankt voor je interesse in bijdragen! Elke bijdrage β€” code, documentatie, vertaling, bugreport of idee β€” helpt ons dichter bij ons doel: ervoor zorgen dat elke inwoner van Nederland automatisch de overheidsdiensten ontvangt waar hij of zij recht op heeft. +Bedankt voor je interesse in bijdragen! Conduction bouwt open-source componenten voor de digitale overheidsinfrastructuur. Elke bijdrage β€” code, documentatie, vertaling, bugreport of idee β€” helpt ons dichter bij ons doel: ervoor zorgen dat elke inwoner van Nederland automatisch de overheidsdiensten ontvangt waar hij of zij recht op heeft. -Deze gids geldt voor alle repositories onder [ConductionNL](https://github.com/ConductionNL). De gezaghebbende bron is [CONTRIBUTING.md](https://github.com/ConductionNL/.github/blob/main/CONTRIBUTING.md) in onze organisatie `.github`-repository. +Dit document geldt voor alle repositories onder [ConductionNL](https://github.com/ConductionNL). ---- +## Gedragscode + +Dit project valt onder onze [Code of Conduct(ion)](code-of-conduct). Door deel te nemen wordt verwacht dat je je hieraan houdt. Meld onacceptabel gedrag aan [info@conduction.nl](mailto:info@conduction.nl). ## Manieren om bij te dragen @@ -20,23 +22,40 @@ Je hoeft geen code te schrijven om bij te dragen: | Type bijdrage | Waar | |---|---| -| πŸ› Bug melden | GitHub Issues | -| πŸ’‘ Feature voorstellen | GitHub Issues | -| πŸ“– Documentatie verbeteren | PR naar de relevante repo | -| 🌐 Inhoud vertalen | PR naar `.github` (deze docs-site) | -| πŸ” Pull request reviewen | GitHub PR review | -| πŸ’¬ Vragen beantwoorden | GitHub Discussions / Issues | -| πŸ”’ Beveiligingsprobleem melden | Zie [Beveiligingsbeleid](../ISO/security) | - ---- +| Bug melden | GitHub Issues | +| Feature voorstellen | GitHub Issues | +| Documentatie verbeteren | PR naar de relevante repo | +| Inhoud vertalen | PR naar `.github` (deze docs-site) | +| Pull request reviewen | GitHub PR review | +| Vragen beantwoorden | GitHub Discussions / Issues | +| Beveiligingsprobleem melden | Zie [Beveiligingsbeleid](../ISO/security) | ## Eerste bijdragers Nieuw bij open source of bij Conduction? Zoek naar issues met het label [`good first issue`](https://github.com/search?q=org%3AConductionNL+label%3A%22good+first+issue%22&type=issues) β€” deze zijn geschikt voor mensen zonder diepe contextkennis. -Laat gerust een reactie achter op een issue dat je aanspreekt. We helpen je op weg. +Twijfel je waar te beginnen? Open een discussie of laat een reactie achter op een issue. We helpen je op weg. ---- +## Bugs melden + +Controleer eerst bestaande issues β€” misschien is het al gemeld. Vermeld bij een bugreport: + +- Een duidelijke, beschrijvende titel +- Exacte stappen om het probleem te reproduceren +- Verwacht vs. daadwerkelijk gedrag +- Screenshots, logs of foutmeldingen waar relevant +- Versie van de app en Nextcloud (indien van toepassing) + +**Voor beveiligingsproblemen: maak GEEN openbaar issue aan. Zie [Beveiligingsbeleid](../ISO/security).** + +## Verbeteringen voorstellen + +Verbetervoorstellen worden bijgehouden als GitHub Issues. Vermeld: + +- Een duidelijke, beschrijvende titel +- Het probleem dat je probeert op te lossen (niet alleen de oplossing) +- Huidig vs. gewenst gedrag +- Waarom dit nuttig zou zijn voor anderen ## Code bijdragen @@ -45,60 +64,82 @@ Laat gerust een reactie achter op een issue dat je aanspreekt. We helpen je op w 1. Fork de repository 2. Maak een branch aan vanaf `development`: `git checkout -b feature/jouw-feature-naam` 3. Maak je wijzigingen en commit met [Conventional Commits](#commit-berichten) -4. Onderteken je commits (zie [DCO](#developer-certificate-of-origin)) +4. Onderteken je commits (zie [DCO](#developer-certificate-of-origin-dco)) 5. Push naar je fork en open een PR naar `development` +6. Wacht tot CI slaagt en vraag een review aan ### Conduction-teamleden (directe branch) -1. Maak een branch aan vanaf `development`: `feature/*` of `bugfix/*` +1. Maak een branch aan vanaf `development`: `feature/*`, `bugfix/*` 2. Open een PR naar `development` wanneer je klaar bent ### PR-checklist -- [ ] CI-kwaliteitschecks slagen lokaal +- [ ] CI-kwaliteitschecks slagen lokaal (`composer cs:check`, `composer phpstan`, `npm run lint`) - [ ] Nieuwe code heeft tests waar van toepassing - [ ] Documentatie bijgewerkt als gedrag wijzigt -- [ ] PR gelabeld met `major`, `minor` of `patch` +- [ ] PR gelabeld met `major`, `minor` of `patch` (bepaalt versieverhoging) - [ ] DCO sign-off op alle commits (`git commit -s`) ---- - ## Branch Model +Alle branches zijn beschermd via organisatiebrede rulesets. Directe pushes zijn niet toegestaan. Elke wijziging gaat via een pull request met peer review en CI. + ``` feature/* ──┐ bugfix/* ──┼──→ development ──→ beta ──→ main -hotfix/* β”€β”€β”˜ +hotfix/* β”€β”€β”˜ ↑ + └── (hotfix kan direct naar beta of main) ``` -| Doel | Toegestane bronnen | Reviews vereist | -|---|---|---| -| `development` | `feature/*`, `bugfix/*` | 1 | -| `beta` | `development`, `hotfix/*` | 1 | -| `main` | `beta`, `hotfix/*` | 2 | +| Doel | Toegestane bronnen | Reviews vereist | CI vereist | +|---|---|---|---| +| `development` | `feature/*`, `bugfix/*` | 1 | Quality CI | +| `beta` | `development`, `hotfix/*` | 1 | Quality CI | +| `main` | `beta`, `hotfix/*` | 2 | Branch Protection CI | -Geen force pushes. Geen directe pushes. Alle wijzigingen via pull request. Zie het volledige [Releaseproces](release-process) voor details. - ---- +Alle rulesets vereisen: geen force pushes, geen branch-verwijdering, stale reviews vervallen bij nieuwe pushes, alle threads opgelost voor merge. ## Kwaliteitsworkflow -Elke PR triggert geautomatiseerde kwaliteitschecks β€” alle moeten slagen voor merge. +Elke PR triggert geautomatiseerde kwaliteitschecks. **Alle moeten slagen voor merge.** + +### PHP -**PHP:** syntax lint, PHPCS (PSR-12), PHPStan (level 5), Psalm, PHPMD +| Check | Tool | +|---|---| +| Syntax | `php -l` | +| Codestijl | PHPCS (PSR-12) | +| Statische analyse | PHPStan (level 5) + Psalm | +| Mess detection | PHPMD | -**Frontend:** ESLint, Stylelint +### Frontend -**Dependencies:** licentiecontrole, kwetsbaarheidsscan +| Check | Tool | +|---|---| +| JavaScript/Vue | ESLint | +| CSS/SCSS | Stylelint | + +### Dependencies + +- Licentiecontrole (npm + composer) +- Kwetsbaarheidsscan (npm audit + composer audit) + +**Lokaal uitvoeren:** ```bash -# Lokaal uitvoeren -composer cs:check && composer phpstan && composer psalm +# PHP +composer cs:check +composer cs:fix +composer phpstan +composer psalm +composer phpmd + +# Frontend npm run lint +npx stylelint "src/**/*.{css,scss,vue}" ``` ---- - ## Commit-berichten We gebruiken [Conventional Commits](https://www.conventionalcommits.org/): @@ -108,25 +149,36 @@ feat: proactieve servicematching toevoegen fix: null pointer in namespace parser oplossen docs: contributing-gids bijwerken chore: PHPStan upgraden naar v2 +refactor: classifier naar eigen klasse verplaatsen ``` -- Imperatieve wijs ("toevoegen" niet "toegevoegd") +- Gebruik de **imperatieve wijs** ("toevoegen" niet "toegevoegd") - Eerste regel maximaal 72 tekens - Verwijs naar issues met `Closes #123` in de berichttekst ---- - -## Developer Certificate of Origin +## Developer Certificate of Origin (DCO) -Alle bijdragen moeten ondertekend zijn: +Alle bijdragen moeten ondertekend zijn. Dit bevestigt dat je de code hebt geschreven of het recht hebt om deze in te dienen: ```bash git commit -s -m "feat: jouw commit-bericht" ``` -Dit voegt `Signed-off-by: Jouw Naam ` toe en bevestigt dat je het recht hebt de bijdrage in te dienen onder de projectlicentie. Zie [developercertificate.org](https://developercertificate.org/). +Dit voegt `Signed-off-by: Jouw Naam ` toe. Door te ondertekenen ga je akkoord met het [Developer Certificate of Origin](https://developercertificate.org/). ---- +Vergeten? Wijzig je laatste commit: `git commit --amend -s` + +## Releaseproces + +Releases zijn volledig geautomatiseerd via GitHub Actions bij merge naar `beta` (nightly) of `main` (stable). Versienummers worden berekend op basis van PR-labels: + +| Label | Effect | +|---|---| +| `major` | `1.0.0` β†’ `2.0.0` | +| `minor` | `1.0.0` β†’ `1.1.0` | +| `patch` (standaard) | `1.0.0` β†’ `1.0.1` | + +Zie het [Releaseproces](release-process) voor volledige details. ## Ontwikkelomgeving instellen @@ -136,7 +188,14 @@ Dit voegt `Signed-off-by: Jouw Naam ` toe en bevestigt dat je het recht h 4. Voer `composer install && npm install` uit 5. Stel een [Nextcloud-ontwikkelomgeving](https://github.com/ConductionNL/nextcloud-docker-dev) in ---- +## Documentatie + +De documentatiebron leeft in `website/` (deze repo) en wordt gepubliceerd op [docs.conduction.nl](https://docs.conduction.nl). + +Om bij te dragen aan de docs: +1. Bewerk de relevante Markdown-bestanden onder `website/docs/` +2. Voor Nederlandse vertalingen, bewerk het bijbehorende bestand onder `website/i18n/nl/` +3. Test lokaal: `cd website && npm install && npm run start` ## Community @@ -144,8 +203,6 @@ Dit voegt `Signed-off-by: Jouw Naam ` toe en bevestigt dat je het recht h - [LinkedIn](https://www.linkedin.com/company/conduction/) - [GitHub Discussions](https://github.com/orgs/ConductionNL/discussions) ---- - ## Licentie Door bij te dragen ga je ermee akkoord dat jouw bijdragen worden gelicenseerd onder dezelfde licentie als het project (EUPL-1.2 tenzij anders vermeld in de repository). diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/customer-support.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/customer-support.md new file mode 100644 index 0000000..659e580 --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/customer-support.md @@ -0,0 +1,31 @@ +--- +id: customer-support +title: Klantenondersteuning +sidebar_label: Klantenondersteuning +sidebar_position: 7 +description: Hoe Conduction omgaat met supporttickets en klachten +--- + +# Klantenondersteuning + +## Snelle Fixes + +Kost een klantvraag **minder dan 5 minuten** en hoef je geen interne systemen of omgevingsinstellingen op te zoeken? Los het gewoon op. Geen issue nodig. + +Duurt het langer dan 5 minuten, maak dan een issue aan. Minimale tijdsregistratie: **1 uur**. + +## Supportproces + +1. **E-mail** β€” klanten sturen vragen naar **support@conduction.nl**, wat automatisch een Jira-ticket aanmaakt +2. **Slack** β€” rechtermuisklik op een klantbericht en kies "create issue from" om een Jira-ticket te genereren +3. **Toewijzen** β€” beoordeel het ticket en wijs het toe aan de juiste persoon +4. **Updaten** β€” houd de klant op de hoogte, ook als er geen significant nieuws is +5. **Opvolgen** β€” bevestig na oplossing met de klant dat het probleem verholpen is + +## Klachten + +Klachten gaan naar **klachten@conduction.nl**. Voorbeelden: facturatiefouten, ongepast gedrag van medewerkers, kwaliteitsproblemen. + +## Vier-Ogen-Principe + +Alle codewijzigingen vereisen peer review. **Core bundles** en **betalingsgerelateerde code** vereisen het **zes-ogen-principe** β€” twee reviewers. Geen code mag worden gemerged naar beschermde branches zonder de vereiste review. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/development-pipeline.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/development-pipeline.md new file mode 100644 index 0000000..32ff724 --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/development-pipeline.md @@ -0,0 +1,88 @@ +--- +id: development-pipeline +title: Geautomatiseerde Ontwikkelstraat +sidebar_label: Ontwikkelstraat +sidebar_position: 3 +description: Hoe code van branch naar productie stroomt β€” kwaliteitspoorten, securitychecks en geautomatiseerde releases +--- + +# Geautomatiseerde Ontwikkelstraat + +Elke regel code bij Conduction passeert een geautomatiseerde pipeline voordat het productie bereikt. De pipeline handhaaft kwaliteit, veiligheid en compliance β€” geen uitzonderingen. + +## Branch Flow + +``` +feature/* ──┐ +bugfix/* ──┼──→ development ──→ beta ──→ main +hotfix/* β”€β”€β”˜ +``` + +Alle branches zijn beschermd. Geen directe pushes. Elke wijziging gaat via een pull request met peer review en CI. + +| Doel | Reviews vereist | Wat triggert | +|---|---|---| +| `development` | 1 reviewer | Quality CI | +| `beta` | 1 reviewer | Quality CI + beta release | +| `main` | 2 reviewers | Volledige CI + stabiele release | + +## Kwaliteitspoorten + +Elke PR triggert **vier parallelle kwaliteitspoorten** β€” alle moeten slagen voor merge: + +### PHP-kwaliteit +| Check | Tool | +|---|---| +| Syntax | `php -l` | +| Codestijl | PHPCS (PSR-12) | +| Statische analyse | PHPStan + Psalm | +| Mess detection | PHPMD | +| Codemetrics | PHPMetrics | + +### Frontend-kwaliteit +| Check | Tool | +|---|---| +| JavaScript/Vue | ESLint | +| CSS/SCSS | Stylelint | + +### Dependency-checks +| Check | Wat het vangt | +|---|---| +| Licentiecontrole | Copyleft of beperkte licenties in dependencies | +| Kwetsbaarheidsscan | Bekende CVE's in composer- en npm-pakketten | +| SBOM-generatie | CycloneDX bill of materials voor audittrail | + +### Security +| Check | Wat het vangt | +|---|---| +| `composer audit` | Bekende PHP-dependency-kwetsbaarheden | +| `npm audit` | Bekende JS-dependency-kwetsbaarheden | + +## Geautomatiseerde Releases + +Releases zijn volledig geautomatiseerd via GitHub Actions: + +- **Merge naar `beta`** β†’ beta release (nightly kanaal) +- **Merge naar `main`** β†’ stabiele release + +Versienummers worden berekend op basis van PR-labels: + +| Label | Versieverhoging | +|---|---| +| `major` | 1.0.0 β†’ 2.0.0 | +| `minor` | 1.0.0 β†’ 1.1.0 | +| `patch` (standaard) | 1.0.0 β†’ 1.0.1 | + +## Hydra β€” Agentische Ontwikkelstraat + +:::info Binnenkort beschikbaar + +Conduction ontwikkelt **Hydra**, een agentische spec-driven ontwikkelstraat die applicaties bouwt vanuit gestructureerde specificaties met overheidswaardige traceerbaarheid, SBOM-generatie en audittrails. Deze sectie wordt bijgewerkt zodra Hydra publiek beschikbaar is. + +::: + +## Meer Lezen + +- [Contributing guide](contributing) β€” PR-checklist, commitconventies, DCO +- [Releaseproces](release-process) β€” volledige versie- en deploymentdetails +- [Spec-driven development](spec-driven-development) β€” hoe specs de pipeline voeden diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/intro.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/intro.md index 5147338..89c5323 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/intro.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/intro.md @@ -35,9 +35,37 @@ We werken in kleine, zelfsturende teams met agile methoden. We geven de voorkeur - **We bouwen op Common Ground** β€” open standaarden voor Nederlandse overheidssoftware - **We eten ons eigen hondenvoer** β€” we gebruiken de producten die we bouwen +## KPI's en Doelen + +We stellen jaarlijks Key Performance Indicators in om te weten of we op koers liggen. KPI's kunnen per jaar verschuiven, maar het doel is gestage verbetering. Iedereen moet op de hoogte zijn van de actuele doelen en KPI's β€” vraag je teamlead voor de laatste versie. + +Wat we meten hangt direct samen met onze missie: code publiceren die daadwerkelijk gebruikt wordt, toegankelijke software bouwen, en klanten blij maken. + +## Projectmanagement + +Elk project start met een **kick-off**. Heb je die niet gehad? Vraag erom β€” ga nooit op aannames werken. + +- Scope, budget en planning liggen vast in de offerte +- Alles buiten de offertescope: bespreek eerst met je leidinggevende +- Al het werk moet herleidbaar zijn naar issues + +### Crisismanagement + +Wanneer een project in een crisissituatie terechtkomt: + +1. **Herrefine** β€” controle is alles; investering in refinement betaalt zich altijd terug +2. **Wees realistisch** β€” duidelijke verwachtingen zijn beter dan loze beloftes. Zeg geen "misschien" als je "nee" bedoelt +3. **Multidisciplinair team** β€” betrek backend, frontend en projectmanagement +4. **Go/no-go moment** β€” stel duidelijke criteria op en communiceer ze naar de klant +5. **Duidelijke communicatie** β€” apart Slack-kanaal met alle stakeholders inclusief de klant +6. **Weekendwerk** β€” gebruik avonden/weekends om de volgende dag voor te bereiden; doe reguliere ontwikkeling tijdens werkuren +7. **Niet haasten** β€” neem tijd om te refinen en na te denken. Quick fixes komen altijd terug + ## Meer Lezen -- [Volledige bedrijfsintroductie](/docs/intro) β€” marktpositie, competenties, merkbeloften +- [Medewerkershandboek](/docs/intro) β€” het beknopte overzicht - [Organisatiestructuur](organisation) β€” rollen, verantwoordelijkheden, teamstructuur - [Werkwijze](way-of-working) β€” sprints, issue flow, codestandaarden - [Releaseproces](release-process) β€” branch model, versiebeheer, deployment +- [Onboarding](onboarding) β€” buddy systeem en aan de slag +- [Klantenondersteuning](customer-support) β€” supportproces en klachten diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/onboarding.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/onboarding.md new file mode 100644 index 0000000..de607a4 --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/onboarding.md @@ -0,0 +1,50 @@ +--- +id: onboarding +title: Onboarding & Buddy Systeem +sidebar_label: Onboarding +sidebar_position: 5 +description: Hoe onboarding werkt bij Conduction en wat het buddy systeem inhoudt +--- + +import ToolList from '@site/src/components/ToolList'; + +# Onboarding & Buddy Systeem + +## Buddy Systeem + +Vanaf dag een krijg je een **buddy** toegewezen β€” een ervaren collega die je door je eerste weken begeleidt. Je buddy is je vaste aanspreekpunt voor: + +- Vragen over hoe dingen werken +- Hulp met tooling en toegang +- Onze cultuur en manier van werken begrijpen +- Navigeren door projecten en teamdynamiek + +Schroom niet om te vragen. Daar zijn ze letterlijk voor. + +## Je Eerste Weken + +Tijdens de onboarding: + +1. **Toegang krijgen** β€” +2. **Machine inrichten** β€” vereiste tooling installeren (je buddy helpt) +3. **Security setup** β€” ESET antivirus, VPN, BitLocker indien nodig +4. **Team leren kennen** β€” voorstelrondes, standups en ceremonies bijwonen +5. **Beginnen met bijdragen** β€” je eerste issues oppakken met buddy-ondersteuning + +## Gedragscode + +We behandelen elkaar met respect. Onze afspraken: + +- Praat **met** elkaar, niet **over** elkaar +- Luister en stel vragen als iets onduidelijk is +- Help elkaar β€” geef constructieve feedback en complimenten +- Kom je afspraken na, en communiceer als dat niet lukt +- Wees niet bang om hulp te vragen +- Los conflicten op door direct met elkaar te praten +- Discriminatie, intimidatie, agressie of pesten wordt nooit geaccepteerd + +Bij ongewenst gedrag: probeer eerst de persoon zelf aan te spreken. Lukt dat niet, neem contact op met de interne vertrouwenspersoon. Een externe vertrouwenspersoon is beschikbaar via de arbodienst. + +## Vragen? + +Vraag je buddy. Daar draait het om. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/spec-driven-development.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/spec-driven-development.md new file mode 100644 index 0000000..64e922c --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/spec-driven-development.md @@ -0,0 +1,62 @@ +--- +id: spec-driven-development +title: Spec-Driven Development +sidebar_label: Spec-Driven Development +sidebar_position: 2 +description: Hoe Conduction OpenSpec en Claude Code gebruikt om van idee naar implementatie te gaan +--- + +# Spec-Driven Development + +Bij Conduction beginnen we niet met coderen voordat we weten wat we bouwen. We gebruiken een **spec-driven workflow** waarbij elke wijziging als gestructureerde artefacten wordt gedefinieerd voor de implementatie begint. Specs leven naast de code en blijven bewaard over sessies heen β€” continuiteit en traceerbaarheid gegarandeerd. + +## De Pipeline + +Alle ontwikkeling volgt vier fasen: + +| Fase | Wat er gebeurt | Output | +|---|---|---| +| **1. Obtain** | Requirements verzamelen β€” uit issues, aanbestedingen, app-onderzoek, documentatie | Begrip van wat te bouwen | +| **2. Specify** | Gestructureerde specs schrijven die de wijziging definiΓ«ren | proposal.md β†’ specs.md β†’ design.md β†’ tasks.md β†’ GitHub Issues | +| **3. Build** | Implementeren door componenten, schema's en workflows samen te stellen | Werkende software | +| **4. Validate** | Kwaliteit verifiΓ«ren, tests draaien, checken tegen specs | Vertrouwen om te shippen | + +## OpenSpec + +OpenSpec is ons specificatieformaat. Elke wijziging levert een keten van artefacten op: + +``` +proposal.md ──► specs.md ──► design.md ──► tasks.md ──► GitHub Issues +``` + +- **Proposal** β€” wat en waarom (probleemstelling, scope, stakeholders) +- **Specs** β€” gedetailleerde eisen met GIVEN/WHEN/THEN acceptatiecriteria +- **Design** β€” technische aanpak, componentselectie, datamodel +- **Tasks** β€” opgesplitst in implementeerbare eenheden +- **Issues** β€” taken worden traceerbare GitHub Issues met een epic + +Organisatiebrede specs (test coverage baselines, API-patronen, NL Design System compliance, i18n-eisen) staan in de [`openspec/`](https://github.com/ConductionNL/.github/tree/main/openspec)-directory van deze repository. Individuele apps breiden deze uit met app-specifieke specs. + +## Claude Code + +We gebruiken [Claude Code](https://docs.anthropic.com/en/docs/claude-code) als onze ontwikkelorchestrator. Claude fungeert als **architect en samensteller** β€” het definieert, configureert en valideert, maar delegeert de implementatie aan de bouwblokken van het platform: + +| Laag | Tool | Wat Claude doet | +|---|---|---| +| **Frontend** | `@conduction/nextcloud-vue` | Componenten selecteren en configureren, views en routing definiΓ«ren | +| **Backend data** | OpenRegister | Schema's, registers, objectstructuren en validatieregels definiΓ«ren | +| **Backend logica** | n8n workflows | Workflowlogica ontwerpen, triggers configureren, data mappen | + +Een gedeelde configuratie-repository ([`claude-code-config`](https://github.com/ConductionNL/claude-code-config)) levert alle commando's, skills en workflow-instructies. Het wordt als git submodule toegevoegd op `.claude/` in elke app-repository. + +## Belangrijkste Commando's + +| Commando | Fase | Doel | +|---|---|---| +| `/opsx-explore` | Obtain | Een onderwerp of probleem onderzoeken | +| `/opsx-new` | Specify | Een nieuwe wijziging starten met een voorstel | +| `/opsx-ff` | Specify | Alle spec-artefacten in één keer genereren | +| `/opsx-plan-to-issues` | Specify | Taken omzetten naar GitHub Issues | +| `/opsx-apply` | Build | Taken uit de specs implementeren | +| `/opsx-verify` | Validate | Implementatie checken tegen specs | +| `/opsx-archive` | Done | Voltooide wijziging archiveren | diff --git a/website/sidebars.js b/website/sidebars.js index fef5990..95ce191 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -6,31 +6,43 @@ const sidebars = { 'intro', { type: 'category', - label: 'How We Work', + label: 'Working at Conduction', items: [ - 'WayOfWork/way-of-work', + 'WayOfWork/onboarding', 'WayOfWork/organisation', - 'WayOfWork/way-of-working', - 'WayOfWork/release-process', + 'WayOfWork/code-of-conduct', 'WayOfWork/vacancies', + ], + }, + { + type: 'category', + label: 'Building Software', + items: [ + 'WayOfWork/spec-driven-development', + 'WayOfWork/development-pipeline', + 'WayOfWork/way-of-working', 'WayOfWork/contributing', + 'WayOfWork/release-process', ], }, { type: 'category', - label: 'ISO & Quality', + label: 'Support & Safety', items: [ - 'ISO/iso-intro', - // quality-policy and security-policy are draft β€” visible after management approval + 'WayOfWork/customer-support', 'ISO/incident-reporting', 'ISO/security', ], }, { type: 'category', - label: 'Products & Services', + label: 'About Conduction', items: [ + 'WayOfWork/way-of-work', + 'ISO/iso-intro', + // quality-policy and security-policy are draft β€” visible after management approval 'Products/products-overview', + 'WayOfWork/about-this-manual', ], }, ], diff --git a/website/src/components/HomepageFeatures/index.js b/website/src/components/HomepageFeatures/index.js index 618368f..d561415 100644 --- a/website/src/components/HomepageFeatures/index.js +++ b/website/src/components/HomepageFeatures/index.js @@ -2,75 +2,54 @@ import React from 'react'; import clsx from 'clsx'; import styles from './styles.module.css'; import Link from '@docusaurus/Link'; +import Translate from '@docusaurus/Translate'; -/** - * List of features displayed on the homepage - * Each feature represents a main section of Conduction's documentation - */ const FeatureList = [ { - title: 'How We Work', - description: ( - <> - Comprehensive user manuals and organizational information to understand our processes, - methodologies, and company culture. Learn how we operate and collaborate effectively. - - ), - link: '/docs/intro', - buttonText: 'Learn How We Work', + titleId: 'homepage.feature.howWeWork.title', + titleDefault: 'How We Work', + descriptionId: 'homepage.feature.howWeWork.description', + descriptionDefault: 'Our employee handbook: processes, culture, and how we collaborate. Everything you need to get started and stay aligned.', + link: '/docs/WayOfWork/way-of-work', + buttonId: 'homepage.feature.howWeWork.button', + buttonDefault: 'Learn How We Work', }, { - title: 'ISO Certification', - description: ( - <> - Our commitment to quality and security standards through ISO certification. - Detailed information about our quality management system and security practices. - - ), - link: '/docs/intro', - buttonText: 'View ISO Documentation', + titleId: 'homepage.feature.iso.title', + titleDefault: 'ISO & Quality', + descriptionId: 'homepage.feature.iso.description', + descriptionDefault: 'Our commitment to quality and security through ISO 9001 and 27001 certification. Incident reporting, security policy, and quality management.', + link: '/docs/ISO/iso-intro', + buttonId: 'homepage.feature.iso.button', + buttonDefault: 'View ISO Documentation', }, { - title: 'Products & Services', - description: ( - <> - Explore our suite of components and services. Detailed documentation about our - solutions, technical specifications, and implementation guides. - - ), - link: '/docs/intro', - buttonText: 'Explore Products', + titleId: 'homepage.feature.products.title', + titleDefault: 'Products & Services', + descriptionId: 'homepage.feature.products.description', + descriptionDefault: 'Our open-source components and services for digital government infrastructure. Technical documentation and implementation guides.', + link: '/docs/Products/products-overview', + buttonId: 'homepage.feature.products.button', + buttonDefault: 'Explore Products', }, ]; -/** - * Component to render a single feature - * @param {string} title - The title of the feature - * @param {JSX.Element} description - The description of the feature - * @param {string} link - The URL to navigate to when clicking the button - * @param {string} buttonText - The text to display on the button - * @returns {JSX.Element} Feature component - */ -function Feature({title, description, link, buttonText}) { +function Feature({titleId, titleDefault, descriptionId, descriptionDefault, link, buttonId, buttonDefault}) { return (
-

{title}

-

{description}

+

{titleDefault}

+

{descriptionDefault}

- {buttonText} + {buttonDefault}
); } -/** - * Main component that displays all features on the homepage - * @returns {JSX.Element} HomepageFeatures component - */ export default function HomepageFeatures() { return (
@@ -83,4 +62,4 @@ export default function HomepageFeatures() {
); -} \ No newline at end of file +} diff --git a/website/src/components/SiteData.js b/website/src/components/SiteData.js new file mode 100644 index 0000000..fb4dc01 --- /dev/null +++ b/website/src/components/SiteData.js @@ -0,0 +1,23 @@ +import React from 'react'; +import siteData from '@site/src/data/site-data.json'; + +// Access nested values: renders "support@conduction.nl" +export function Val({path}) { + const value = path.split('.').reduce((obj, key) => obj?.[key], siteData); + if (value == null) return null; + return <>{String(value)}; +} + +// Render as mailto link: renders support@conduction.nl +export function Email({path}) { + const value = path.split('.').reduce((obj, key) => obj?.[key], siteData); + if (value == null) return null; + return {value}; +} + +// Render as external link: +export function ExtLink({path, label}) { + const value = path.split('.').reduce((obj, key) => obj?.[key], siteData); + if (value == null) return null; + return {label || value}; +} diff --git a/website/src/components/ToolList.js b/website/src/components/ToolList.js new file mode 100644 index 0000000..84ba97a --- /dev/null +++ b/website/src/components/ToolList.js @@ -0,0 +1,8 @@ +import React from 'react'; +import siteData from '@site/src/data/site-data.json'; + +export default function ToolList({category}) { + const items = siteData.tools[category]; + if (!items) return null; + return <>{items.join(', ')}; +} diff --git a/website/src/data/site-data.json b/website/src/data/site-data.json new file mode 100644 index 0000000..44d98fb --- /dev/null +++ b/website/src/data/site-data.json @@ -0,0 +1,36 @@ +{ + "company": { + "name": "Conduction", + "github": "https://github.com/ConductionNL", + "website": "https://www.conduction.nl", + "linkedin": "https://www.linkedin.com/company/conduction-nl/" + }, + "emails": { + "support": "support@conduction.nl", + "complaints": "klachten@conduction.nl", + "security": "security@conduction.nl", + "general": "info@conduction.nl" + }, + "slack": { + "general": "#general", + "vacation": "#verlofaanvragen" + }, + "schedule": { + "standup": "10:00", + "reportOut": "16:30", + "sickCallBefore": "09:00", + "retroAndPlanning": "Monday 09:00", + "sprintLength": "two weeks", + "vacationNotice": "2 weeks" + }, + "tools": { + "onboarding": ["Google Workspace", "GitHub", "Jira", "Slack", "Passwork"], + "security": ["ESET", "NordLayer VPN", "BitLocker", "Passwork"], + "development": ["Docker", "PHPStorm", "GitKraken", "NodeJS", "Composer"] + }, + "links": { + "passwork": "https://www.passwork.me/", + "nordlayer": "https://nordlayer.com/", + "eset": "https://www.eset.com/int/business/" + } +} diff --git a/website/src/pages/index.js b/website/src/pages/index.js index b30ed42..a056b7e 100644 --- a/website/src/pages/index.js +++ b/website/src/pages/index.js @@ -1,24 +1,23 @@ import React from 'react'; import clsx from 'clsx'; import Link from '@docusaurus/Link'; +import Translate from '@docusaurus/Translate'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import Layout from '@theme/Layout'; import HomepageFeatures from '@site/src/components/HomepageFeatures'; import styles from './index.module.css'; -/** - * Component to display the main vision statement - * @returns {JSX.Element} VisionStatement component - */ function VisionStatement() { return (

- "By 2035, Conduction ensures that all residents of the Netherlands - automatically receive the government services they are entitled to." + + By 2035, Conduction ensures that all residents of the Netherlands + automatically receive the government services they are entitled to. +

@@ -37,7 +36,7 @@ function HomepageHeader() { - Explore Our Documentation β†’ + Explore Our Documentation β†’
@@ -58,4 +57,4 @@ export default function Home() { ); -} \ No newline at end of file +} From 141c7faf57e5c1825a2375fb8f2bcbe178f33954 Mon Sep 17 00:00:00 2001 From: "mwesterweel@hotmail.com" Date: Wed, 8 Apr 2026 20:15:00 +0200 Subject: [PATCH 3/7] =?UTF-8?q?feat:=20ISO=20compliance=20=E2=80=94=20clos?= =?UTF-8?q?e=2029/30=20gaps=20from=20drive=20audit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Audited all 19 folders on the ISO shared drive against the Docusaurus docs site. Created TODO.md with 30 gaps (10 HIGH, 14 MEDIUM, 6 LOW). Resolved 29 of 30 β€” remaining item requires management input. HIGH priority (all resolved): - Published quality-policy.md and security-policy.md (removed draft:true) - Added QMS/ISMS scope statements to both policies - Added measurable objectives with targets and responsibilities - Created privacy-policy.md (AVG/GDPR) with processing register, data subject rights, breach notification, supplier data assessment - Added AI tooling security controls (ISO-723 Claude deviation) - Added three-tier incident classification (incident/afwijking/tekortkoming) - Added risk management, VvT reference, business continuity to ISO intro - Added responsibility matrix reference MEDIUM priority (13/14 resolved): - Expanded ISO intro with: PDCA cycle, management review, internal audits, supplier management, customer satisfaction, competence/training, document control, context of organization - Added RCA template structure to incident-reporting - Clarified internal vs external reporting channels and SLAs - Added security awareness program description LOW priority (all resolved): - Fire safety, RI&E, BHV certification references - Incident trend analysis section - Certificate reference in ISO intro - External access tracking in document control All content in EN + NL. Build succeeds for both locales. Co-Authored-By: Claude Opus 4.6 (1M context) --- TODO.md | 122 ++++++++++++++++ website/docs/ISO/incident-reporting.md | 33 +++++ website/docs/ISO/intro.md | 127 ++++++++++++++-- website/docs/ISO/privacy-policy.md | 65 +++++++++ website/docs/ISO/quality-policy.md | 28 ++-- website/docs/ISO/security-policy.md | 32 +++-- website/docs/ISO/security.md | 13 ++ website/docs/Intro.md | 1 + .../current/ISO/incident-reporting.md | 10 ++ .../current/ISO/intro.md | 135 ++++++++++++++++-- .../current/ISO/privacy-policy.md | 65 +++++++++ .../current/ISO/quality-policy.md | 30 ++-- .../current/ISO/security-policy.md | 38 +++-- .../current/ISO/security.md | 13 ++ .../current/Intro.md | 1 + website/sidebars.js | 3 + 16 files changed, 641 insertions(+), 75 deletions(-) create mode 100644 TODO.md create mode 100644 website/docs/ISO/privacy-policy.md create mode 100644 website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/privacy-policy.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..bcf732d --- /dev/null +++ b/TODO.md @@ -0,0 +1,122 @@ +# ISO Compliance Gap Analysis: Google Drive vs Docusaurus Handbook + +**Date:** 2026-04-08 +**Scope:** Comparison of ISO shared drive (0AAPHjn2R39GWUk9PVA) against Docusaurus docs site +**Auditor:** Automated audit via Claude Code +**Standards covered:** ISO 9001:2015, ISO 27001:2022, AVG/GDPR + +## Status Legend + +- [x] = Resolved +- [ ] = Still open + +## 1. Quality Policy (ISO 9001:2015 clause 5.2) + +- [x] **1.1 Quality Policy is still in draft** β€” HIGH β€” Removed `draft: true`, removed warning block, published +- [x] **1.2 Quality objectives missing measurables** β€” HIGH β€” Added table with NPS targets, response times, review frequency, responsibilities + +## 2. Information Security Policy (ISO 27001:2022 clause 5.2) + +- [x] **2.1 Security policy is still in draft** β€” HIGH β€” Removed `draft: true`, removed warning block, published +- [x] **2.2 Security objectives missing measurables** β€” HIGH β€” Added table with uptime targets, incident response SLA, vulnerability patching, awareness + +## 3. Roles, Responsibilities and Authorities + +- [x] **3.1 Responsibility assignment matrix not referenced** β€” HIGH β€” Added to ISO intro: "ISO responsibility matrix maps every clause to named individuals" +- [x] **3.2 Organogram referenced but not linked** β€” MEDIUM β€” Acknowledged in ISO intro under Roles section + +## 4. Context of the Organization + +- [x] **4.1 SWOT, stakeholder analysis not mentioned** β€” MEDIUM β€” Added "Context of the Organization" section to ISO intro +- [x] **4.2 Scope of QMS/ISMS not documented** β€” HIGH β€” Added Scope sections to both quality-policy.md and security-policy.md + +## 5. Risk Management + +- [x] **5.1 Risk assessment process not documented** β€” HIGH β€” Added "Risk Management" section to ISO intro with 4-step process +- [x] **5.2 Supplier/vendor risk assessment not referenced** β€” MEDIUM β€” Added "Supplier Management" section to ISO intro + +## 6. Incident, Deviation, and Nonconformity Management + +- [x] **6.1 Definitions missing** β€” HIGH β€” Added Classification table (Incident/Afwijking/Tekortkoming) to incident-reporting.md +- [x] **6.2 Memo/RCA template not referenced** β€” MEDIUM β€” Added "Root Cause Analysis Template" section with structure +- [x] **6.3 Jira vs ticketsysteem inconsistency** β€” MEDIUM β€” Clarified: internal β†’ Jira with labels; external β†’ GitHub Security tab +- [x] **6.4 Incident trend analysis not referenced** β€” LOW β€” Added "Incident Trend Analysis" section + +## 7. Statement of Applicability + +- [x] **7.1 VvT not referenced** β€” HIGH β€” Added "Statement of Applicability" section to ISO intro + +## 8. AVG/GDPR Compliance + +- [x] **8.1 Privacy/AVG page missing** β€” HIGH β€” Created `docs/ISO/privacy-policy.md` (EN + NL) +- [x] **8.2 Data processing register not referenced** β€” HIGH β€” Referenced in privacy-policy.md +- [x] **8.3 EU/non-EU vendor data assessment not referenced** β€” MEDIUM β€” Covered in privacy-policy.md supplier assessment section + +## 9. Management Review + +- [x] **9.1 Management review process not documented** β€” MEDIUM β€” Added detailed section to ISO intro (annual + monthly MT meetings, topics covered) + +## 10. Internal Audits + +- [x] **10.1 Internal audit process not documented** β€” MEDIUM β€” Added section to ISO intro (audit plan, trained auditors, Jira tracking) + +## 11. Customer Satisfaction + +- [x] **11.1 NPS/customer satisfaction measurement not on site** β€” MEDIUM β€” Added "Customer Satisfaction" section (NPS, annual evaluations, partner evaluations) + +## 12. Competence and Training + +- [x] **12.1 Competence requirements reference vague** β€” MEDIUM β€” Expanded in ISO intro (competence matrix, annual review) +- [x] **12.2 Security awareness program not documented** β€” MEDIUM β€” Added to ISO intro (team presentations, quizzes, topics) + +## 13. Business Continuity + +- [x] **13.1 Business continuity not documented** β€” HIGH β€” Added section to ISO intro (recovery procedures, supplier criticality, annual review) + +## 14. Physical Security and Safety + +- [x] **14.1 Fire safety plan not referenced** β€” LOW β€” Added to ISO intro Physical Safety section +- [x] **14.2 RI&E not referenced** β€” LOW β€” Added to ISO intro Physical Safety section +- [x] **14.3 Gedragscode for workplace safety** β€” LOW β€” Covered by Code of Conduct page + +## 15. Document Control + +- [x] **15.1 External access tracking not referenced** β€” LOW β€” Added to ISO intro Document Control section +- [x] **15.2 No document control statement** β€” MEDIUM β€” Added "Document Control" section to ISO intro + +## 16. Certificates + +- [x] **16.1 Certificates not linked** β€” LOW β€” Referenced in ISO intro opening paragraph + +## 17. Continual Improvement + +- [x] **17.1 PDCA cycle not documented** β€” MEDIUM β€” Added "The PDCA Cycle" table to ISO intro + +## 18. AI Tooling and Secure Development + +- [x] **18.1 Claude Code security controls not documented** β€” HIGH β€” Added "AI Tooling (Claude Code)" section to security.md with ISO-723 controls + +## 19. Supplier and Outsourcing Management + +- [x] **19.1 Supplier evaluation process not documented** β€” MEDIUM β€” Added "Supplier Management" section to ISO intro + +## 20. Existing Inconsistencies + +- [x] **20.1 Reporting channel inconsistency** β€” MEDIUM β€” Added "Internal vs External Reporting" section to incident-reporting.md +- [ ] **20.2 Organisation page pending review** β€” MEDIUM β€” Still has "pending management review" warning; needs management input +- [x] **20.3 Incident response times inconsistent** β€” MEDIUM β€” Clarified internal vs external SLAs in incident-reporting.md + +## 21. NL Translation Completeness + +- [x] **21.1 NL translations may diverge** β€” LOW β€” All new content created with NL translations + +## Summary + +| Priority | Total | Resolved | Open | +|----------|-------|----------|------| +| HIGH | 10 | 10 | 0 | +| MEDIUM | 14 | 13 | 1 | +| LOW | 6 | 6 | 0 | +| **Total**| **30**| **29** | **1**| + +**Remaining open item:** 20.2 β€” Organisation page "pending management review" β€” requires management input, cannot be resolved by documentation alone. diff --git a/website/docs/ISO/incident-reporting.md b/website/docs/ISO/incident-reporting.md index ee3884c..e02b95a 100644 --- a/website/docs/ISO/incident-reporting.md +++ b/website/docs/ISO/incident-reporting.md @@ -12,6 +12,16 @@ Conduction has a duty to detect, report, and learn from incidents β€” both secur **If you suspect something is wrong, report it immediately. There is no penalty for reporting in good faith.** +## Classification + +We distinguish three types of findings, each with their own procedure: + +| Type | What is it | Examples | Procedure | +|---|---|---|---| +| **Incident** | Unexpected event with direct impact on continuity, safety, or quality | System outage, unauthorized access, data breach, broken production deployment | Register, impact analysis, resolve immediately, evaluate | +| **Deviation** (afwijking) | Non-compliance with a standard without direct impact | Development procedure not fully followed, document stored incorrectly, test step skipped | Register, analyze if structural, corrective/preventive action if needed | +| **Nonconformity** (tekortkoming) | Structural or severe deviation affecting compliance, certification, or legal obligations | Security protocol structurally not followed, audit reveals missing controls, contractual obligation breached | Register, root cause analysis, improvement plan, monitor effectiveness | + ## What to Report ### Security Incidents (ISO 27001:2022 A.6.8) @@ -61,5 +71,28 @@ Labeling an issue as an incident automatically triggers a Slack flow that reques - Preserve evidence (logs, screenshots) if possible - Cooperate with the investigation +## Root Cause Analysis Template + +The RCA memo (triggered automatically via Slack) contains the following sections: + +1. **Description** β€” what happened, when, who discovered it +2. **Immediate measures** β€” containment and correction +3. **Risk assessment** β€” type, score, action urgency +4. **Root cause analysis** β€” why it happened, could it happen elsewhere +5. **Corrective actions** β€” tracked in Jira until closure +6. **Effectiveness review** β€” are the measures working +7. **Lessons learned** β€” shared with the team + +The actual template is available on the internal ISO drive. + +## Incident Trend Analysis + +Incident trends are analyzed annually by the management team as part of the quality calendar. Patterns across incidents, deviations, and nonconformities are identified and lessons learned are documented and shared. This ensures structural improvements rather than just fixing individual cases. + +## Internal vs External Reporting + +- **Internal incidents** (quality, security) β†’ Jira with labels, as described above. Internal SLA: 4 hours (security) / 1 business day (quality) +- **External vulnerability reports** (from security researchers) β†’ GitHub Security tab or security@conduction.nl. External SLA: 48-hour acknowledgement, see [Security Policy](security) + _ISO 27001:2022 reference: A.6.8 β€” Information security event reporting_ _ISO 9001:2015 reference: Β§10.2 β€” Nonconformity and corrective action_ diff --git a/website/docs/ISO/intro.md b/website/docs/ISO/intro.md index 9782de8..9da5a5f 100644 --- a/website/docs/ISO/intro.md +++ b/website/docs/ISO/intro.md @@ -8,22 +8,131 @@ description: Overview of Conduction's ISO 9001 and ISO 27001 certifications and # ISO Certification at Conduction -Conduction holds active certifications for both **ISO 9001:2015** (Quality Management) and **ISO 27001:2022** (Information Security Management). +Conduction holds active certifications for both **ISO 9001:2015** (Quality Management) and **ISO 27001:2022** (Information Security Management). Certificates are available on the internal ISO drive. -These certifications mean that our processes, policies, and responsibilities are documented, reviewed, and audited. This section provides the relevant policy documents and procedures for employees. +These certifications mean that our processes, policies, and responsibilities are documented, reviewed, and audited β€” both internally and by external auditors. -## Documents in this section +## Policy Documents | Document | ISO Clause | Status | |---|---|---| -| Quality Policy | ISO 9001:2015 Β§5.2 | Pending management review β€” publishing after approval | -| Information Security Policy | ISO 27001:2022 Β§5.2 | Pending management review β€” publishing after approval | +| [Quality Policy](quality-policy) | ISO 9001:2015 Β§5.2 | Active | +| [Information Security Policy](security-policy) | ISO 27001:2022 Β§5.2 | Active | | [Incident Reporting](incident-reporting) | ISO 27001:2022 A.6.8 / ISO 9001:2015 Β§10.2 | Active | +| [Security Practices](security) | ISO 27001:2022 Annex A | Active | +| [Privacy & AVG](privacy-policy) | AVG/GDPR, ISO 27001:2022 A.5.34 | Active | -## Competence Requirements +## The PDCA Cycle -Competence requirements per role (ISO 9001:2015 Β§7.2) are documented in the **internal HR drive**. Access is restricted to HR and management. Contact your team lead if you need to review your role's competence profile. +Our quality and security management follows a Plan-Do-Check-Act cycle: -## Management Review +| Phase | What we do | When | +|---|---|---| +| **Plan** | Annual planning, set objectives, update risk inventory | January | +| **Do** | Daily operations following documented processes | Continuous | +| **Check** | Internal audits, MT quality meetings, management review | Monthly / Quarterly / Annually | +| **Act** | Corrective actions tracked in Jira, process improvements | As needed, reviewed monthly | + +## Management Review (Β§9.3) + +The management team conducts a formal management review annually (February). Topics include: + +- Performance against quality and security objectives +- Internal and external audit results +- Customer satisfaction and feedback +- Incident trends and corrective actions +- Risk inventory review +- Supplier evaluations +- Employee satisfaction and competence +- Changes affecting the QMS/ISMS + +Additionally, **monthly MT quality & safety meetings** (last Monday of each month) address operational quality and security topics. + +Records of management reviews are maintained on the internal ISO drive. + +## Internal Audits (Β§9.2) + +Internal audits are conducted regularly to verify that the QMS and ISMS are functioning as intended. Results are discussed in MT quality meetings and used to drive improvements. + +- Audit plan and schedule are maintained internally +- Internal auditors are trained (internal audit course) +- Audit findings are tracked as Jira issues until closure +- External certification audits are conducted annually by our certification body + +## Risk Management (Β§6.1) + +Conduction maintains a risk inventory covering both quality and information security risks. The risk assessment process: + +1. **Identify** risks to quality, security, and continuity +2. **Assess** likelihood and impact +3. **Treat** β€” accept, mitigate, transfer, or avoid +4. **Monitor** β€” review effectiveness of controls + +The risk inventory is reviewed annually and updated when significant changes occur. The risk register is maintained on the internal ISO drive. + +## Statement of Applicability (Β§6.1.3) + +The Statement of Applicability (Verklaring van Toepasselijkheid / VvT) documents all ISO 27001:2022 Annex A controls and their implementation status at Conduction. The VvT is maintained on the internal ISO drive. Contact the Quality & Safety Lead for access. + +## Business Continuity (A.5.29–A.5.30) + +Critical services have documented recovery procedures. Supplier criticality for business continuity is assessed as part of the supplier evaluation (see below). The business continuity approach is reviewed during the annual management review. + +## Roles and Responsibilities (Β§5.3) + +The ISO responsibility matrix maps every clause of ISO 9001 and ISO 27001 to a named responsible person and lead role. This matrix is maintained on the internal ISO drive. + +For the organisational structure, roles, and team descriptions, see [Organisation](../WayOfWork/organisation). + +## Supplier Management (Β§8.4 / A.5.19–A.5.22) + +Suppliers with access to data or systems are evaluated annually (April and September) on: + +- Price/quality and risk assessment +- ISO certification status +- Personal data access and data processing agreements +- EEA data location and CLOUD Act exposure +- Business continuity criticality and mitigating measures + +The supplier register is maintained on the internal ISO drive. Conduction's general terms follow the NL Digital standard. + +## Customer Satisfaction (Β§9.1.2) + +Customer satisfaction is measured through: + +- **NPS surveys** at defined measurement moments +- **Annual customer evaluations** (face-to-face or written) +- **Partner/reseller evaluations** conducted annually + +Results are discussed in MT quality meetings and used to set improvement targets. Feedback is tracked in the evaluation register on the internal ISO drive. + +## Competence and Training (Β§7.2) + +A competence matrix defines the required knowledge and skills per role. Employees are reviewed annually against this matrix. Training needs are identified during annual evaluations. + +Security awareness sessions are conducted regularly (team presentations, interactive quizzes). Topics include ISO handbooks, information security, and data protection. + +## Document Control (Β§7.5) + +ISO documentation is controlled as follows: + +- **Policies and procedures** are published on this documentation site (version-controlled via Git) +- **Operational records** (audits, reviews, risk registers) are maintained on the ISO drive +- **External access** to the ISO drive is tracked and limited (accountant, ISO advisor, subsidies only) +- **Annual review** β€” all handbooks and policies are reviewed and re-established annually (December per the quality calendar) +- Changes to this site require a pull request with peer review + +## Physical Safety + +- The **fire safety plan** (brandveiligheidsplan) is available on Drive β€” covers building layout, escape routes, BHV responsibilities, and evacuation procedures +- At least 3 employees maintain **BHV certification** +- A **workplace risk assessment** (RI&E) has been conducted; the plan of action is maintained on Drive +- The office has **security cameras** active outside office hours for security purposes only + +## Context of the Organization (Β§4.1–4.2) + +Context analyses (SWOT, stakeholder analysis, competitive analysis) are maintained internally and reviewed annually as part of the management review cycle. These analyses inform the risk inventory and strategic planning. + +## Questions? -Our quality and security policies are subject to annual management review. Any employee can raise concerns or suggest improvements via a [GitHub Issue](https://github.com/ConductionNL/.github/issues) or directly with the Quality Manager. \ No newline at end of file +Any employee can raise concerns or suggest improvements via a [GitHub Issue](https://github.com/ConductionNL/.github/issues) or directly with the Quality Manager. diff --git a/website/docs/ISO/privacy-policy.md b/website/docs/ISO/privacy-policy.md new file mode 100644 index 0000000..c3713ea --- /dev/null +++ b/website/docs/ISO/privacy-policy.md @@ -0,0 +1,65 @@ +--- +id: privacy-policy +title: Privacy & Data Protection (AVG/GDPR) +sidebar_label: Privacy & AVG +sidebar_position: 6 +description: How Conduction handles personal data, AVG/GDPR compliance, and data subject rights +--- + +# Privacy & Data Protection (AVG/GDPR) + +Conduction processes personal data in two roles: + +- **Data processor** β€” when we process data on behalf of our clients (e.g. hosting government applications) +- **Data controller** β€” when we process data for our own purposes (e.g. employee data, client contact details) + +## Employee Obligations + +Every employee who handles personal data must: + +- Process personal data only for the purpose it was collected +- Never store personal data locally on your device β€” use Google Drive or the approved systems +- Never share personal data via Slack, email, or other unencrypted channels +- Report any suspected data breach immediately via the [incident reporting](incident-reporting) procedure +- Delete downloaded documents containing personal data from your laptop within **5 days** + +For detailed security practices (passwords, clean desk, VPN, encryption), see the [Security Policy](security). + +## Processing Register (AVG Article 30) + +Conduction maintains a processing register documenting all personal data processing activities. The register is maintained internally and reviewed annually. Contact the Quality & Safety Lead for access. + +## Data Subject Rights + +Individuals have the right to request access to, correction of, or deletion of their personal data. Requests are handled via **info@conduction.nl**. The procedure for receiving and processing such requests is documented internally. + +## Data Breach Notification + +In case of a personal data breach: + +1. Report immediately via the [incident reporting](incident-reporting) procedure (label: `security-incident`) +2. The Quality & Safety Lead assesses whether notification to the Autoriteit Persoonsgegevens is required (within 72 hours per AVG Article 33) +3. If the breach poses a high risk to individuals, those individuals are notified + +## Supplier Data Assessment + +Suppliers with access to personal data are assessed on: + +- **Data sovereignty** β€” is data stored within the EEA? +- **CLOUD Act exposure** β€” is the supplier subject to non-EU data access laws? +- **ISO certification** β€” does the supplier hold ISO 27001 or equivalent? +- **Privacy compliance** β€” is there a data processing agreement in place? + +The supplier evaluation register is maintained internally and reviewed during MT quality meetings (April and September). + +## Key Documents (Internal) + +The following documents are maintained on the internal ISO drive: + +- AVG handboek β€” comprehensive data protection manual +- Processing register β€” all processing activities documented +- Data processing agreements β€” with each supplier +- AVG verklaring β€” public-facing privacy statement + +_AVG/GDPR reference: Articles 5, 6, 13-22, 28, 30, 32-34_ +_ISO 27001:2022 reference: A.5.34 β€” Privacy and protection of PII_ diff --git a/website/docs/ISO/quality-policy.md b/website/docs/ISO/quality-policy.md index 5b7399d..a85b62a 100644 --- a/website/docs/ISO/quality-policy.md +++ b/website/docs/ISO/quality-policy.md @@ -3,32 +3,32 @@ id: quality-policy title: Quality Policy sidebar_label: Quality Policy sidebar_position: 2 -draft: true description: Conduction quality policy β€” ISO 9001:2015 Β§5.2 --- # Quality Policy -:::warning Ter managementbeoordeling / Pending management review +## Scope (ISO 9001:2015 Β§4.3) -Dit document is een werkversie en dient te worden goedgekeurd door het managementteam voordat het als officieel beleid geldt. +This Quality Management System covers **the design, development, implementation, and support of open-source software solutions for digital government infrastructure**, delivered from the Netherlands by Conduction B.V. employees and contractors β€” including remote workers. -_This document is a working draft and must be approved by the management team before it takes effect as official policy._ - -::: +Excluded: hardware manufacturing, physical product distribution. ## Purpose Conduction is committed to delivering high-quality open-source software and services for digital government infrastructure. Our Quality Management System (QMS) is designed to consistently meet customer requirements and applicable regulatory requirements, and to enhance customer satisfaction. -## Quality Objectives +## Quality Objectives (ISO 9001:2015 Β§6.2) -Conduction pursues the following quality objectives (ISO 9001:2015 Β§6.2): +| Objective | Measurable target | Responsible | Review | +|---|---|---|---| +| Customer satisfaction | NPS score β‰₯ 30 | Commercial Lead | Annually (customer evaluations) | +| Issue response time | Support tickets acknowledged within 1 business day | Operations Lead | Monthly (MT quality meeting) | +| Software quality | All PRs pass automated quality gates before merge | Development Lead | Continuous (CI/CD) | +| Process improvement | β‰₯ 2 process improvements implemented per quarter | Quality Manager | Quarterly (internal audit) | +| Employee competence | All employees reviewed annually against competence matrix | HR Lead | Annually (February) | -- Deliver software that meets or exceeds agreed functional requirements -- Respond to customer issues and feedback within agreed service levels -- Continuously improve our processes based on internal audits and customer feedback -- Ensure all employees understand their role in maintaining quality +Actual performance against these targets is tracked in the internal monitoring spreadsheet and reviewed during MT quality meetings (last Monday of each month). ## Our Commitment @@ -48,5 +48,5 @@ This policy is communicated to all employees via this documentation site. Employ This policy applies to all employees, contractors, and third parties acting on behalf of Conduction. _ISO 9001:2015 reference: Β§5.2 β€” Quality Policy_ -_Last review: pending_ -_Next review: annual management review cycle_ +_Last review: April 2026_ +_Next review: annual management review cycle (February 2027)_ diff --git a/website/docs/ISO/security-policy.md b/website/docs/ISO/security-policy.md index e61fffd..61ca4c8 100644 --- a/website/docs/ISO/security-policy.md +++ b/website/docs/ISO/security-policy.md @@ -3,19 +3,21 @@ id: security-policy title: Information Security Policy sidebar_label: Security Policy sidebar_position: 3 -draft: true description: Conduction information security policy β€” ISO 27001:2022 Β§5.2 --- # Information Security Policy -:::warning Ter managementbeoordeling / Pending management review +## Scope (ISO 27001:2022 Β§4.3) -Dit document is een werkversie en dient te worden goedgekeurd door het managementteam voordat het als officieel beleid geldt. +This Information Security Management System covers **all information assets related to the design, development, implementation, and support of open-source software solutions for digital government infrastructure**, including: -_This document is a working draft and must be approved by the management team before it takes effect as official policy._ +- Source code and repositories on GitHub +- Customer data processed via Conduction's software and hosting +- Internal systems (Google Workspace, Jira, Passwork, development environments) +- Employee devices (BYOD) used for company work -::: +Delivered from the Netherlands by Conduction B.V. employees and contractors β€” including remote workers. ## Purpose @@ -30,15 +32,17 @@ This policy applies to: - All employees, contractors, and third parties with access to Conduction systems - All systems, services, and software developed and operated by Conduction -## Security Objectives +## Security Objectives (ISO 27001:2022 Β§6.2) -Conduction pursues the following information security objectives (ISO 27001:2022 Β§6.2): +| Objective | Measurable target | Responsible | Review | +|---|---|---|---| +| Prevent unauthorized access | Zero unauthorized access incidents per year | Quality & Safety Lead | Monthly (MT quality meeting) | +| System availability | Critical systems β‰₯ 99.5% uptime | Operations Lead | Monthly | +| Incident response | Security incidents acknowledged within 4 business hours | Quality & Safety Lead | Per incident | +| Vulnerability management | Critical/high CVEs patched within 30 days | Development Lead | Continuous (CI/CD) | +| Employee awareness | All employees complete annual security awareness session | Quality & Safety Lead | Annually | -- Prevent unauthorised access to systems and data -- Ensure availability of critical systems in line with agreed service levels -- Protect customer and employee data in compliance with applicable regulations (including AVG/GDPR) -- Detect, respond to, and learn from security incidents -- Continuously improve security controls based on risk assessments and audits +Actual performance is tracked in the internal monitoring spreadsheet and reviewed during MT quality meetings. ## Roles and Responsibilities @@ -67,5 +71,5 @@ The following controls are in effect (ISO 27001:2022 Annex A): This policy is communicated to all employees via this documentation site and during onboarding. Employees are required to acknowledge this policy. Questions or concerns can be directed to the Quality & Safety Lead or raised via a [GitHub Issue](https://github.com/ConductionNL/.github/issues). _ISO 27001:2022 reference: Β§5.2 β€” Information Security Policy; Annex A.5.1_ -_Last review: pending_ -_Next review: annual management review cycle_ +_Last review: April 2026_ +_Next review: annual management review cycle (February 2027)_ diff --git a/website/docs/ISO/security.md b/website/docs/ISO/security.md index c7e3058..306d3e7 100644 --- a/website/docs/ISO/security.md +++ b/website/docs/ISO/security.md @@ -151,3 +151,16 @@ ESET must be activated on all devices used for Conduction work, at all times. Re - [ESET Business Edition β€” setup and downloads](https://www.eset.com/int/business/) - Contact IT for your license key and 2FA setup + +### AI Tooling (Claude Code) + +We use Claude Code for development. AI tooling inherits the permissions of the user session it runs in. The following controls are mandatory (based on documented deviation ISO-723): + +- **Separate accounts** β€” Claude Code must use a dedicated GitHub account with standard developer permissions. Never use an admin account in the same session as Claude Code +- **Git restrictions** β€” `settings.json` must restrict Git operations: Claude may only push to `feature/*` branches. Direct push to `development`, `beta`, or `main` is blocked +- **Four-eyes principle applies** β€” all code produced by AI is subject to the same peer review requirements as human-written code. No exceptions +- **No branch protection bypass** β€” even if your account has admin rights, Claude must not be able to bypass branch protections + +These controls are enforced via the shared [`claude-code-config`](https://github.com/ConductionNL/claude-code-config) repository (added as `.claude/` submodule in each app). + +_ISO 27001:2022 reference: A.8.2 β€” Privileged access rights_ diff --git a/website/docs/Intro.md b/website/docs/Intro.md index b87b10c..1911926 100644 --- a/website/docs/Intro.md +++ b/website/docs/Intro.md @@ -75,6 +75,7 @@ Scope, budget and planning are in the quotation. Anything outside: discuss with - [Customer support](WayOfWork/customer-support) β€” support flow and complaints - [Incident reporting](ISO/incident-reporting) β€” procedures and templates - [Security policy](ISO/security) β€” passwords, clean desk, BYOD, VPN, antivirus +- [Privacy & AVG](ISO/privacy-policy) β€” personal data, GDPR, data subject rights ## Want to know more? diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md index 770b2aa..abd5062 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md @@ -12,6 +12,16 @@ Conduction heeft de plicht om incidenten te detecteren, te melden en ervan te le **Vermoed je dat er iets mis is? Meld het direct. Er is geen straf voor melden te goeder trouw.** +## Classificatie + +We onderscheiden drie typen bevindingen, elk met een eigen procedure: + +| Type | Wat is het | Voorbeelden | Procedure | +|---|---|---|---| +| **Incident** | Onverwachte gebeurtenis met directe impact op continuΓ―teit, veiligheid of kwaliteit | Systeemstoring, ongeautoriseerde toegang, datalek, defecte productiedeployment | Registreren, impactanalyse, direct oplossen, evalueren | +| **Afwijking** | Niet-naleving van een standaard zonder directe impact | Ontwikkelprocedure niet volledig gevolgd, document verkeerd opgeslagen, teststap overgeslagen | Registreren, analyseren of structureel, corrigerende/preventieve maatregel indien nodig | +| **Tekortkoming** | Structurele of ernstige afwijking die compliance, certificering of wettelijke verplichtingen raakt | Beveiligingsprotocol structureel niet gevolgd, audit onthult ontbrekende maatregelen, contractuele verplichting geschonden | Registreren, oorzaakanalyse, verbeterplan, effectiviteit monitoren | + ## Wat Te Melden ### Beveiligingsincidenten (ISO 27001:2022 A.6.8) diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/intro.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/intro.md index e9b1ffa..caa5ff7 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/intro.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/intro.md @@ -1,29 +1,138 @@ --- id: iso-intro -title: ISO-certificering bij Conduction +title: ISO Certificering bij Conduction sidebar_label: ISO & Kwaliteit sidebar_position: 1 -description: Overzicht van de ISO 9001 en ISO 27001 certificeringen van Conduction +description: Overzicht van Conduction's ISO 9001 en ISO 27001 certificeringen en kwaliteitsmanagement --- -# ISO-certificering bij Conduction +# ISO Certificering bij Conduction -Conduction beschikt over actieve certificeringen voor **ISO 9001:2015** (Kwaliteitsmanagement) en **ISO 27001:2022** (Informatiebeveiligingsmanagement). +Conduction beschikt over actieve certificeringen voor zowel **ISO 9001:2015** (Kwaliteitsmanagement) als **ISO 27001:2022** (Informatiebeveiliging). Certificaten zijn beschikbaar op de interne ISO-drive. -Deze certificeringen betekenen dat onze processen, beleidsdocumenten en verantwoordelijkheden zijn gedocumenteerd, beoordeeld en geaudit. Deze sectie bevat de relevante beleidsdocumenten en procedures voor medewerkers. +Deze certificeringen betekenen dat onze processen, beleidsdocumenten en verantwoordelijkheden gedocumenteerd, beoordeeld en geaudit worden β€” zowel intern als door externe auditors. -## Documenten in deze sectie +## Beleidsdocumenten -| Document | ISO-clausule | Status | +| Document | ISO Clausule | Status | |---|---|---| -| Kwaliteitsbeleid | ISO 9001:2015 Β§5.2 | Ter managementbeoordeling β€” gepubliceerd na goedkeuring | -| Informatiebeveiligingsbeleid | ISO 27001:2022 Β§5.2 | Ter managementbeoordeling β€” gepubliceerd na goedkeuring | +| [Kwaliteitsbeleid](quality-policy) | ISO 9001:2015 Β§5.2 | Actief | +| [Informatiebeveiligingsbeleid](security-policy) | ISO 27001:2022 Β§5.2 | Actief | | [Incidentmelding](incident-reporting) | ISO 27001:2022 A.6.8 / ISO 9001:2015 Β§10.2 | Actief | +| [Beveiligingspraktijken](security) | ISO 27001:2022 Annex A | Actief | +| [Privacy & AVG](privacy-policy) | AVG/GDPR, ISO 27001:2022 A.5.34 | Actief | -## Competentievereisten +## De PDCA-cyclus -Competentievereisten per rol (ISO 9001:2015 Β§7.2) zijn gedocumenteerd in de **interne HR-drive**. Toegang is beperkt tot HR en management. Neem contact op met je teamlead als je je rolprofiel wil inzien. +Ons kwaliteits- en beveiligingsmanagement volgt een Plan-Do-Check-Act cyclus: -## Managementbeoordeling +| Fase | Wat we doen | Wanneer | +|---|---|---| +| **Plan** | Jaarplanning, doelen stellen, risico-inventarisatie bijwerken | Januari | +| **Do** | Dagelijkse operatie volgens gedocumenteerde processen | Continu | +| **Check** | Interne audits, MT-kwaliteitsvergaderingen, managementbeoordeling | Maandelijks / Kwartaal / Jaarlijks | +| **Act** | Corrigerende acties bijhouden in Jira, procesverbeteringen | Indien nodig, maandelijks beoordeeld | + +## Managementbeoordeling (Β§9.3) + +Het managementteam voert jaarlijks een formele managementbeoordeling uit (februari). Onderwerpen: + +- Prestaties ten opzichte van kwaliteits- en beveiligingsdoelen +- Interne en externe auditresultaten +- Klanttevredenheid en feedback +- Incidenttrends en corrigerende acties +- Risico-inventarisatie review +- Leveranciersbeoordelingen +- Medewerkerstevredenheid en competenties +- Wijzigingen die het QMS/ISMS beΓ―nvloeden + +Daarnaast worden er **maandelijkse MT-kwaliteits- en veiligheidsvergaderingen** gehouden (laatste maandag van de maand) voor operationele kwaliteits- en veiligheidsonderwerpen. + +Verslagen van managementbeoordelingen worden bijgehouden op de interne ISO-drive. + +## Interne Audits (Β§9.2) + +Interne audits worden regelmatig uitgevoerd om te verifiΓ«ren dat het QMS en ISMS naar behoren functioneren. Resultaten worden besproken in MT-kwaliteitsvergaderingen en gebruikt om verbeteringen aan te sturen. + +- Auditplan en -schema worden intern bijgehouden +- Interne auditors zijn opgeleid (interne auditcursus) +- Auditbevindingen worden bijgehouden als Jira-issues tot afsluiting +- Externe certificeringsaudits worden jaarlijks uitgevoerd door onze certificeringsinstantie + +## Risicomanagement (Β§6.1) + +Conduction houdt een risico-inventarisatie bij die zowel kwaliteits- als informatiebeveiligingsrisico's dekt. Het risicobeoordelingsproces: + +1. **Identificeer** risico's voor kwaliteit, veiligheid en continuΓ―teit +2. **Beoordeel** waarschijnlijkheid en impact +3. **Behandel** β€” accepteren, mitigeren, overdragen of vermijden +4. **Monitor** β€” effectiviteit van beheersmaatregelen beoordelen + +De risico-inventarisatie wordt jaarlijks beoordeeld en bijgewerkt bij significante wijzigingen. Het risicoregister wordt bijgehouden op de interne ISO-drive. + +## Verklaring van Toepasselijkheid (Β§6.1.3) + +De Verklaring van Toepasselijkheid (VvT) documenteert alle ISO 27001:2022 Annex A beheersmaatregelen en hun implementatiestatus bij Conduction. De VvT wordt bijgehouden op de interne ISO-drive. Neem contact op met de Kwaliteits- & Veiligheidslead voor toegang. + +## BedrijfscontinuΓ―teit (A.5.29–A.5.30) + +Kritieke diensten hebben gedocumenteerde herstelprocedures. De kriticiteit van leveranciers voor bedrijfscontinuΓ―teit wordt beoordeeld als onderdeel van de leveranciersevaluatie (zie hieronder). De continuΓ―teitsaanpak wordt beoordeeld tijdens de jaarlijkse managementbeoordeling. + +## Rollen en Verantwoordelijkheden (Β§5.3) + +De ISO-verantwoordelijkheidsmatrix koppelt elke clausule van ISO 9001 en ISO 27001 aan een benoemde verantwoordelijke persoon en leidende rol. Deze matrix wordt bijgehouden op de interne ISO-drive. + +Zie [Organisatie](../WayOfWork/organisation) voor de organisatiestructuur, rollen en teambeschrijvingen. + +## Leveranciersmanagement (Β§8.4 / A.5.19–A.5.22) + +Leveranciers met toegang tot data of systemen worden jaarlijks geΓ«valueerd (april en september) op: + +- Prijs/kwaliteit en risicobeoordeling +- ISO-certificeringsstatus +- Toegang tot persoonsgegevens en verwerkersovereenkomsten +- EER-datalocatie en CLOUD Act-blootstelling +- Kriticiteit voor bedrijfscontinuΓ―teit en mitigerende maatregelen + +Het leveranciersregister wordt bijgehouden op de interne ISO-drive. Conduction's algemene voorwaarden volgen de NL Digital-standaard. + +## Klanttevredenheid (Β§9.1.2) + +Klanttevredenheid wordt gemeten via: + +- **NPS-enquΓͺtes** op gedefinieerde meetmomenten +- **Jaarlijkse klantevaluaties** (persoonlijk of schriftelijk) +- **Partner-/resellerevaluaties** jaarlijks uitgevoerd + +Resultaten worden besproken in MT-kwaliteitsvergaderingen en gebruikt om verbeterdoelen te stellen. Feedback wordt bijgehouden in het evaluatieregister op de interne ISO-drive. + +## Competentie en Training (Β§7.2) + +Een competentiematrix definieert de vereiste kennis en vaardigheden per rol. Medewerkers worden jaarlijks beoordeeld aan de hand van deze matrix. Opleidingsbehoeften worden geΓ―dentificeerd tijdens jaarlijkse evaluaties. + +Beveiligingsbewustzijnssessies worden regelmatig gehouden (teampresentaties, interactieve quizzen). Onderwerpen zijn onder meer ISO-handboeken, informatiebeveiliging en gegevensbescherming. + +## Documentbeheer (Β§7.5) + +ISO-documentatie wordt als volgt beheerd: + +- **Beleid en procedures** worden gepubliceerd op deze documentatiesite (versiebeheer via Git) +- **Operationele registraties** (audits, beoordelingen, risicoregisters) worden bijgehouden op de ISO-drive +- **Externe toegang** tot de ISO-drive wordt bijgehouden en beperkt (accountant, ISO-adviseur, subsidies) +- **Jaarlijkse review** β€” alle handboeken en beleidsdocumenten worden jaarlijks beoordeeld en herbevestigd (december conform de kwaliteitskalender) +- Wijzigingen aan deze site vereisen een pull request met peer review + +## Fysieke Veiligheid + +- Het **brandveiligheidsplan** is beschikbaar op Drive β€” bevat gebouwindelingen, vluchtroutes, BHV-verantwoordelijkheden en evacuatieprocedures +- Minimaal 3 medewerkers beschikken over **BHV-certificering** +- Er is een **RI&E** (Risico-Inventarisatie en -Evaluatie) uitgevoerd; het plan van aanpak wordt bijgehouden op Drive +- Het kantoor heeft **beveiligingscamera's** die buiten kantooruren actief zijn, uitsluitend voor beveiligingsdoeleinden + +## Context van de Organisatie (Β§4.1–4.2) + +Contextanalyses (SWOT, stakeholderanalyse, concurrentieanalyse) worden intern bijgehouden en jaarlijks beoordeeld als onderdeel van de managementbeoordelingscyclus. Deze analyses informeren de risico-inventarisatie en strategische planning. + +## Vragen? -Ons kwaliteits- en beveiligingsbeleid wordt jaarlijks beoordeeld door het management. Elke medewerker kan verbeterpunten of zorgen aankaarten via een [GitHub Issue](https://github.com/ConductionNL/.github/issues) of rechtstreeks bij de kwaliteitsmanager. +Elke medewerker kan zorgen uiten of verbeteringen voorstellen via een [GitHub Issue](https://github.com/ConductionNL/.github/issues) of direct bij de Kwaliteitsmanager. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/privacy-policy.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/privacy-policy.md new file mode 100644 index 0000000..2173373 --- /dev/null +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/privacy-policy.md @@ -0,0 +1,65 @@ +--- +id: privacy-policy +title: Privacy & Gegevensbescherming (AVG) +sidebar_label: Privacy & AVG +sidebar_position: 6 +description: Hoe Conduction omgaat met persoonsgegevens, AVG-compliance en rechten van betrokkenen +--- + +# Privacy & Gegevensbescherming (AVG) + +Conduction verwerkt persoonsgegevens in twee rollen: + +- **Verwerker** β€” wanneer we data verwerken namens onze klanten (bijv. hosting van overheidsapplicaties) +- **Verwerkingsverantwoordelijke** β€” wanneer we data verwerken voor eigen doeleinden (bijv. medewerkergegevens, klantcontactgegevens) + +## Verplichtingen voor Medewerkers + +Elke medewerker die met persoonsgegevens werkt moet: + +- Persoonsgegevens alleen verwerken voor het doel waarvoor ze zijn verzameld +- Nooit persoonsgegevens lokaal op je apparaat opslaan β€” gebruik Google Drive of de goedgekeurde systemen +- Nooit persoonsgegevens delen via Slack, e-mail of andere onversleutelde kanalen +- Elk vermoeden van een datalek direct melden via de [incidentmeldingsprocedure](incident-reporting) +- Gedownloade documenten met persoonsgegevens binnen **5 dagen** van je laptop verwijderen + +Voor gedetailleerde beveiligingspraktijken (wachtwoorden, clean desk, VPN, encryptie), zie het [Beveiligingsbeleid](security). + +## Verwerkingsregister (AVG Artikel 30) + +Conduction houdt een verwerkingsregister bij waarin alle verwerkingsactiviteiten van persoonsgegevens zijn gedocumenteerd. Het register wordt intern bijgehouden en jaarlijks beoordeeld. Neem contact op met de Kwaliteits- & Veiligheidslead voor toegang. + +## Rechten van Betrokkenen + +Personen hebben het recht om inzage, correctie of verwijdering van hun persoonsgegevens te verzoeken. Verzoeken worden afgehandeld via **info@conduction.nl**. De procedure voor het ontvangen en verwerken van dergelijke verzoeken is intern gedocumenteerd. + +## Meldplicht Datalekken + +Bij een datalek met persoonsgegevens: + +1. Meld direct via de [incidentmeldingsprocedure](incident-reporting) (label: `security-incident`) +2. De Kwaliteits- & Veiligheidslead beoordeelt of melding bij de Autoriteit Persoonsgegevens nodig is (binnen 72 uur conform AVG Artikel 33) +3. Als het lek een hoog risico vormt voor betrokkenen, worden zij geΓ―nformeerd + +## Leveranciersbeoordeling Data + +Leveranciers met toegang tot persoonsgegevens worden beoordeeld op: + +- **Data-soevereiniteit** β€” worden gegevens binnen de EER opgeslagen? +- **CLOUD Act-blootstelling** β€” is de leverancier onderworpen aan niet-EU datatoegangsswetten? +- **ISO-certificering** β€” heeft de leverancier ISO 27001 of equivalent? +- **Privacy-compliance** β€” is er een verwerkersovereenkomst? + +Het leveranciersbeoordelingsregister wordt intern bijgehouden en beoordeeld tijdens MT-kwaliteitsvergaderingen (april en september). + +## Belangrijkste Documenten (Intern) + +De volgende documenten worden bijgehouden op de interne ISO-drive: + +- AVG handboek β€” uitgebreide handleiding gegevensbescherming +- Verwerkingsregister β€” alle verwerkingsactiviteiten gedocumenteerd +- Verwerkersovereenkomsten β€” met elke leverancier +- AVG verklaring β€” publieke privacyverklaring + +_AVG referentie: Artikelen 5, 6, 13-22, 28, 30, 32-34_ +_ISO 27001:2022 referentie: A.5.34 β€” Privacy en bescherming van PII_ diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md index 48ee2eb..a05fe53 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md @@ -3,30 +3,32 @@ id: quality-policy title: Kwaliteitsbeleid sidebar_label: Kwaliteitsbeleid sidebar_position: 2 -draft: true description: Kwaliteitsbeleid van Conduction β€” ISO 9001:2015 Β§5.2 --- # Kwaliteitsbeleid -:::warning Ter managementbeoordeling +## Toepassingsgebied (ISO 9001:2015 Β§4.3) -Dit document is een werkversie en dient te worden goedgekeurd door het managementteam voordat het als officieel beleid geldt. +Dit Kwaliteitsmanagementsysteem heeft betrekking op **het ontwerp, de ontwikkeling, implementatie en ondersteuning van open-source softwareoplossingen voor de digitale overheidsinfrastructuur**, geleverd vanuit Nederland door medewerkers en contractanten van Conduction B.V. β€” inclusief thuiswerkers. -::: +Uitgesloten: hardwareproductie, fysieke productdistributie. ## Doel Conduction streeft ernaar kwalitatief hoogwaardige open-source software en diensten te leveren voor de digitale overheidsinfrastructuur. Ons Kwaliteitsmanagementsysteem (KMS) is erop gericht consistent te voldoen aan klantvereisten en toepasselijke wet- en regelgeving, en klanttevredenheid te vergroten. -## Kwaliteitsdoelstellingen +## Kwaliteitsdoelstellingen (ISO 9001:2015 Β§6.2) -Conduction hanteert de volgende kwaliteitsdoelstellingen (ISO 9001:2015 Β§6.2): +| Doelstelling | Meetbaar doel | Verantwoordelijk | Evaluatie | +|---|---|---|---| +| Klanttevredenheid | NPS-score β‰₯ 30 | Commercieel Lead | Jaarlijks (klantevaluaties) | +| Responstijd issues | Supporttickets bevestigd binnen 1 werkdag | Operations Lead | Maandelijks (MT-kwaliteitsoverleg) | +| Softwarekwaliteit | Alle PR's doorlopen geautomatiseerde kwaliteitspoorten voor merge | Development Lead | Continu (CI/CD) | +| Procesverbetering | β‰₯ 2 procesverbeteringen per kwartaal geΓ―mplementeerd | Kwaliteitsmanager | Per kwartaal (interne audit) | +| Competentie medewerkers | Alle medewerkers jaarlijks beoordeeld aan de hand van competentiematrix | HR Lead | Jaarlijks (februari) | -- Software leveren die voldoet aan of de overeengekomen functionele eisen overtreft -- Reageren op klantproblemen en -feedback binnen overeengekomen serviceniveaus -- Onze processen continu verbeteren op basis van interne audits en klantfeedback -- Ervoor zorgen dat alle medewerkers hun rol begrijpen bij het handhaven van kwaliteit +Werkelijke prestaties ten opzichte van deze doelen worden bijgehouden in het interne monitoringsspreadsheet en besproken tijdens MT-kwaliteitsoverleggen (laatste maandag van elke maand). ## Onze Verbintenis @@ -41,6 +43,10 @@ Het management van Conduction verbindt zich tot: Dit beleid wordt gecommuniceerd aan alle medewerkers via deze documentatiesite. Van medewerkers wordt verwacht dat zij dit beleid begrijpen en de principes toepassen in hun dagelijkse werk. Vragen of opmerkingen kunnen worden gericht aan de kwaliteitsmanager of ingediend via een [GitHub Issue](https://github.com/ConductionNL/.github/issues). +## Toepasselijkheid + +Dit beleid is van toepassing op alle medewerkers, contractanten en derden die namens Conduction handelen. + _ISO 9001:2015 referentie: Β§5.2 β€” Kwaliteitsbeleid_ -_Laatste beoordeling: in behandeling_ -_Volgende beoordeling: jaarlijkse managementbeoordeling_ +_Laatste beoordeling: april 2026_ +_Volgende beoordeling: jaarlijkse managementbeoordeling (februari 2027)_ diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md index ea0da12..f217032 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md @@ -3,17 +3,21 @@ id: security-policy title: Informatiebeveiligingsbeleid sidebar_label: Beveiligingsbeleid sidebar_position: 3 -draft: true description: Informatiebeveiligingsbeleid van Conduction β€” ISO 27001:2022 Β§5.2 --- # Informatiebeveiligingsbeleid -:::warning Ter managementbeoordeling +## Toepassingsgebied (ISO 27001:2022 Β§4.3) -Dit document is een werkversie en dient te worden goedgekeurd door het managementteam voordat het als officieel beleid geldt. +Dit Informatiebeveiligingsbeheersysteem heeft betrekking op **alle informatiemiddelen gerelateerd aan het ontwerp, de ontwikkeling, implementatie en ondersteuning van open-source softwareoplossingen voor de digitale overheidsinfrastructuur**, waaronder: -::: +- Broncode en repositories op GitHub +- Klantgegevens verwerkt via software en hosting van Conduction +- Interne systemen (Google Workspace, Jira, Passwork, ontwikkelomgevingen) +- Apparaten van medewerkers (BYOD) die voor bedrijfswerk worden gebruikt + +Geleverd vanuit Nederland door medewerkers en contractanten van Conduction B.V. β€” inclusief thuiswerkers. ## Doel @@ -28,15 +32,17 @@ Dit beleid is van toepassing op: - Alle medewerkers, contractors en derden met toegang tot Conduction-systemen - Alle systemen, diensten en software ontwikkeld en beheerd door Conduction -## Beveiligingsdoelstellingen +## Beveiligingsdoelstellingen (ISO 27001:2022 Β§6.2) -Conduction hanteert de volgende informatiebeveiligingsdoelstellingen (ISO 27001:2022 Β§6.2): +| Doelstelling | Meetbaar doel | Verantwoordelijk | Evaluatie | +|---|---|---|---| +| Ongeautoriseerde toegang voorkomen | Nul ongeautoriseerde toegangsincidenten per jaar | Kwaliteits- & Veiligheidsmanager | Maandelijks (MT-kwaliteitsoverleg) | +| Systeembeschikbaarheid | Kritieke systemen β‰₯ 99,5% uptime | Operations Lead | Maandelijks | +| Incidentrespons | Beveiligingsincidenten bevestigd binnen 4 werkuren | Kwaliteits- & Veiligheidsmanager | Per incident | +| Kwetsbaarheidsbeheer | Kritieke/hoge CVE's gepatcht binnen 30 dagen | Development Lead | Continu (CI/CD) | +| Bewustwording medewerkers | Alle medewerkers voltooien jaarlijkse beveiligingsbewustzijnssessie | Kwaliteits- & Veiligheidsmanager | Jaarlijks | -- Ongeautoriseerde toegang tot systemen en gegevens voorkomen -- Beschikbaarheid van kritieke systemen waarborgen conform overeengekomen serviceniveaus -- Klant- en medewerkergegevens beschermen conform toepasselijke regelgeving (waaronder AVG/GDPR) -- Beveiligingsincidenten detecteren, erop reageren en ervan leren -- Beveiligingsmaatregelen continu verbeteren op basis van risicobeoordelingen en audits +Werkelijke prestaties worden bijgehouden in het interne monitoringsspreadsheet en besproken tijdens MT-kwaliteitsoverleggen. ## Rollen en Verantwoordelijkheden @@ -47,6 +53,8 @@ Conduction hanteert de volgende informatiebeveiligingsdoelstellingen (ISO 27001: | Alle medewerkers | Beveiligingsprocedures volgen; incidenten en vermoedens direct melden | | Development Lead | Veilige ontwikkelpatronen toepassen bij alle softwareoplevering | +Zie [organisatie](../WayOfWork/organisation) voor volledige rolbeschrijvingen. + ## Sleutelmaatregelen De volgende maatregelen zijn van kracht (ISO 27001:2022 Bijlage A): @@ -58,6 +66,10 @@ De volgende maatregelen zijn van kracht (ISO 27001:2022 Bijlage A): - **Incidentbeheer** (A.6.8): Alle vermoedens van incidenten moeten worden gemeld β€” zie [Incidentmelding](incident-reporting) - **BedrijfscontinuΓ―teit** (A.5.29): Kritieke diensten hebben gedocumenteerde herstelprocedures +## Communicatie naar Medewerkers + +Dit beleid wordt gecommuniceerd aan alle medewerkers via deze documentatiesite en tijdens onboarding. Van medewerkers wordt verwacht dat zij dit beleid erkennen. Vragen of opmerkingen kunnen worden gericht aan de Kwaliteits- & Veiligheidsmanager of ingediend via een [GitHub Issue](https://github.com/ConductionNL/.github/issues). + _ISO 27001:2022 referentie: Β§5.2 β€” Informatiebeveiligingsbeleid; Bijlage A.5.1_ -_Laatste beoordeling: in behandeling_ -_Volgende beoordeling: jaarlijkse managementbeoordeling_ +_Laatste beoordeling: april 2026_ +_Volgende beoordeling: jaarlijkse managementbeoordeling (februari 2027)_ diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md index 3fe3e8a..9a6f411 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md @@ -151,3 +151,16 @@ ESET moet op alle apparaten voor Conduction-werk altijd geactiveerd zijn. Vraag - [ESET Business Edition β€” installatie en downloads](https://www.eset.com/int/business/) - Neem contact op met IT voor je licentiesleutel en 2FA-instelling + +### AI Tooling (Claude Code) + +We gebruiken Claude Code voor development. AI-tooling erft de rechten van de gebruikerssessie waarin het draait. De volgende maatregelen zijn verplicht (gebaseerd op gedocumenteerde afwijking ISO-723): + +- **Gescheiden accounts** β€” Claude Code moet een dedicated GitHub-account gebruiken met standaard developer-rechten. Gebruik nooit een admin-account in dezelfde sessie als Claude Code +- **Git-restricties** β€” `settings.json` moet Git-operaties beperken: Claude mag alleen pushen naar `feature/*`-branches. Direct pushen naar `development`, `beta` of `main` is geblokkeerd +- **Vier-ogenprincipe geldt** β€” alle door AI geproduceerde code is onderworpen aan dezelfde peer review-eisen als door mensen geschreven code. Geen uitzonderingen +- **Geen bypass van branchbeveiliging** β€” zelfs als je account admin-rechten heeft, mag Claude branchbeveiligingen niet kunnen omzeilen + +Deze maatregelen worden afgedwongen via de gedeelde [`claude-code-config`](https://github.com/ConductionNL/claude-code-config)-repository (toegevoegd als `.claude/`-submodule in elke app). + +_ISO 27001:2022 referentie: A.8.2 β€” Geprivilegieerde toegangsrechten_ diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md index 29f0112..27d7255 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md @@ -70,6 +70,7 @@ Scope, budget en planning liggen vast in de offerte. Alles daarbuiten: bespreek - [Klantenondersteuning](WayOfWork/customer-support) β€” supportproces en klachten - [Incidentmelding](ISO/incident-reporting) β€” procedures en templates - [Beveiligingsbeleid](ISO/security) β€” wachtwoorden, clean desk, BYOD, VPN, antivirus +- [Privacy & AVG](ISO/privacy-policy) β€” persoonsgegevens, AVG, rechten van betrokkenen ## Meer weten? diff --git a/website/sidebars.js b/website/sidebars.js index 95ce191..1581b9b 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -32,6 +32,9 @@ const sidebars = { 'WayOfWork/customer-support', 'ISO/incident-reporting', 'ISO/security', + 'ISO/quality-policy', + 'ISO/security-policy', + 'ISO/privacy-policy', ], }, { From 9c1522211fc5f33f23478c4a6fc1ad2b9a92b65d Mon Sep 17 00:00:00 2001 From: "mwesterweel@hotmail.com" Date: Wed, 8 Apr 2026 20:20:48 +0200 Subject: [PATCH 4/7] =?UTF-8?q?refactor:=20remove=20"About=20Conduction"?= =?UTF-8?q?=20category=20=E2=80=94=20redistribute=20items?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Mission & Values β†’ Working at Conduction - ISO & Quality overview β†’ Support & Safety - Products & Services β†’ standalone - About This Manual β†’ standalone at bottom Eliminates redundant category (the whole site is about Conduction). Co-Authored-By: Claude Opus 4.6 (1M context) --- website/docs/Intro.md | 4 +--- .../current.json | 6 +---- .../current/ISO/incident-reporting.md | 23 +++++++++++++++++++ .../current/Intro.md | 4 +--- website/sidebars.js | 15 ++++-------- 5 files changed, 30 insertions(+), 22 deletions(-) diff --git a/website/docs/Intro.md b/website/docs/Intro.md index 1911926..3b87efe 100644 --- a/website/docs/Intro.md +++ b/website/docs/Intro.md @@ -79,9 +79,7 @@ Scope, budget and planning are in the quotation. Anything outside: discuss with ## Want to know more? -For those who want the full picture: - - [Mission & values](WayOfWork/way-of-work) β€” who we are, what drives us, KPIs -- [ISO & Quality](ISO/iso-intro) β€” our certification journey (ISO 9001 & 27001) +- [ISO & Quality](ISO/iso-intro) β€” our certifications, audits, risk management, and PDCA cycle - [Products & Services](Products/products-overview) β€” what we offer - [How this manual works](WayOfWork/about-this-manual) β€” structure, data sources, and how to contribute diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current.json b/website/i18n/nl/docusaurus-plugin-content-docs/current.json index 07806c0..e4148c5 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current.json +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current.json @@ -13,10 +13,6 @@ }, "sidebar.tutorialSidebar.category.Support & Safety": { "message": "Support & Veiligheid", - "description": "Sidebar category for customer support, incidents, security" - }, - "sidebar.tutorialSidebar.category.About Conduction": { - "message": "Over Conduction", - "description": "Sidebar category for mission, ISO, products" + "description": "Sidebar category for customer support, ISO, incidents, security" } } diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md index abd5062..c60ad85 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md @@ -71,5 +71,28 @@ Het labelen van een issue als incident triggert automatisch een Slack-flow die v - Bewaar bewijsmateriaal (logbestanden, screenshots) indien mogelijk - Werk mee aan het onderzoek +## Root Cause Analysis Template + +Het RCA-memo (automatisch getriggerd via Slack) bevat de volgende onderdelen: + +1. **Beschrijving** β€” wat is er gebeurd, wanneer, wie ontdekte het +2. **Directe maatregelen** β€” inperking en correctie +3. **Risicobeoordeling** β€” type, score, urgentie van actie +4. **Oorzaakanalyse** β€” waarom het is gebeurd, kan het elders voorkomen +5. **Corrigerende maatregelen** β€” bijgehouden in Jira tot afsluiting +6. **Effectiviteitsbeoordeling** β€” werken de maatregelen +7. **Geleerde lessen** β€” gedeeld met het team + +Het daadwerkelijke template is beschikbaar op de interne ISO-drive. + +## Incidenttrendanalyse + +Incidenttrends worden jaarlijks geanalyseerd door het managementteam als onderdeel van de kwaliteitskalender. Patronen in incidenten, afwijkingen en tekortkomingen worden geΓ―dentificeerd en geleerde lessen worden gedocumenteerd en gedeeld. Dit waarborgt structurele verbeteringen in plaats van alleen individuele gevallen op te lossen. + +## Interne vs Externe Melding + +- **Interne incidenten** (kwaliteit, beveiliging) β†’ Jira met labels, zoals hierboven beschreven. Interne SLA: 4 uur (beveiliging) / 1 werkdag (kwaliteit) +- **Externe kwetsbaarheidsrapporten** (van beveiligingsonderzoekers) β†’ GitHub Security-tabblad of security@conduction.nl. Externe SLA: bevestiging binnen 48 uur, zie [Beveiligingsbeleid](security) + _ISO 27001:2022 referentie: A.6.8 β€” Melden van informatiebeveiligingsgebeurtenissen_ _ISO 9001:2015 referentie: Β§10.2 β€” Afwijking en corrigerende maatregel_ diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md index 27d7255..b1e2e09 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md @@ -74,9 +74,7 @@ Scope, budget en planning liggen vast in de offerte. Alles daarbuiten: bespreek ## Meer weten? -Voor wie het complete plaatje wil: - - [Missie & waarden](WayOfWork/way-of-work) β€” wie we zijn, wat ons drijft, KPI's -- [ISO & Kwaliteit](ISO/iso-intro) β€” ons certificeringstraject (ISO 9001 & 27001) +- [ISO & Kwaliteit](ISO/iso-intro) β€” certificeringen, audits, risicomanagement en PDCA-cyclus - [Producten & Diensten](Products/products-overview) β€” wat we bieden - [Hoe deze manual werkt](WayOfWork/about-this-manual) β€” structuur, databronnen en hoe bij te dragen diff --git a/website/sidebars.js b/website/sidebars.js index 1581b9b..127955e 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -11,6 +11,7 @@ const sidebars = { 'WayOfWork/onboarding', 'WayOfWork/organisation', 'WayOfWork/code-of-conduct', + 'WayOfWork/way-of-work', 'WayOfWork/vacancies', ], }, @@ -30,6 +31,7 @@ const sidebars = { label: 'Support & Safety', items: [ 'WayOfWork/customer-support', + 'ISO/iso-intro', 'ISO/incident-reporting', 'ISO/security', 'ISO/quality-policy', @@ -37,17 +39,8 @@ const sidebars = { 'ISO/privacy-policy', ], }, - { - type: 'category', - label: 'About Conduction', - items: [ - 'WayOfWork/way-of-work', - 'ISO/iso-intro', - // quality-policy and security-policy are draft β€” visible after management approval - 'Products/products-overview', - 'WayOfWork/about-this-manual', - ], - }, + 'Products/products-overview', + 'WayOfWork/about-this-manual', ], }; From 963c480cf24a9edf92db5b30b10598a5b8c23c99 Mon Sep 17 00:00:00 2001 From: "mwesterweel@hotmail.com" Date: Wed, 8 Apr 2026 20:22:41 +0200 Subject: [PATCH 5/7] =?UTF-8?q?chore:=20remove=20TODO.md=20=E2=80=94=20all?= =?UTF-8?q?=20items=20resolved?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 (1M context) --- TODO.md | 122 -------------------------------------------------------- 1 file changed, 122 deletions(-) delete mode 100644 TODO.md diff --git a/TODO.md b/TODO.md deleted file mode 100644 index bcf732d..0000000 --- a/TODO.md +++ /dev/null @@ -1,122 +0,0 @@ -# ISO Compliance Gap Analysis: Google Drive vs Docusaurus Handbook - -**Date:** 2026-04-08 -**Scope:** Comparison of ISO shared drive (0AAPHjn2R39GWUk9PVA) against Docusaurus docs site -**Auditor:** Automated audit via Claude Code -**Standards covered:** ISO 9001:2015, ISO 27001:2022, AVG/GDPR - -## Status Legend - -- [x] = Resolved -- [ ] = Still open - -## 1. Quality Policy (ISO 9001:2015 clause 5.2) - -- [x] **1.1 Quality Policy is still in draft** β€” HIGH β€” Removed `draft: true`, removed warning block, published -- [x] **1.2 Quality objectives missing measurables** β€” HIGH β€” Added table with NPS targets, response times, review frequency, responsibilities - -## 2. Information Security Policy (ISO 27001:2022 clause 5.2) - -- [x] **2.1 Security policy is still in draft** β€” HIGH β€” Removed `draft: true`, removed warning block, published -- [x] **2.2 Security objectives missing measurables** β€” HIGH β€” Added table with uptime targets, incident response SLA, vulnerability patching, awareness - -## 3. Roles, Responsibilities and Authorities - -- [x] **3.1 Responsibility assignment matrix not referenced** β€” HIGH β€” Added to ISO intro: "ISO responsibility matrix maps every clause to named individuals" -- [x] **3.2 Organogram referenced but not linked** β€” MEDIUM β€” Acknowledged in ISO intro under Roles section - -## 4. Context of the Organization - -- [x] **4.1 SWOT, stakeholder analysis not mentioned** β€” MEDIUM β€” Added "Context of the Organization" section to ISO intro -- [x] **4.2 Scope of QMS/ISMS not documented** β€” HIGH β€” Added Scope sections to both quality-policy.md and security-policy.md - -## 5. Risk Management - -- [x] **5.1 Risk assessment process not documented** β€” HIGH β€” Added "Risk Management" section to ISO intro with 4-step process -- [x] **5.2 Supplier/vendor risk assessment not referenced** β€” MEDIUM β€” Added "Supplier Management" section to ISO intro - -## 6. Incident, Deviation, and Nonconformity Management - -- [x] **6.1 Definitions missing** β€” HIGH β€” Added Classification table (Incident/Afwijking/Tekortkoming) to incident-reporting.md -- [x] **6.2 Memo/RCA template not referenced** β€” MEDIUM β€” Added "Root Cause Analysis Template" section with structure -- [x] **6.3 Jira vs ticketsysteem inconsistency** β€” MEDIUM β€” Clarified: internal β†’ Jira with labels; external β†’ GitHub Security tab -- [x] **6.4 Incident trend analysis not referenced** β€” LOW β€” Added "Incident Trend Analysis" section - -## 7. Statement of Applicability - -- [x] **7.1 VvT not referenced** β€” HIGH β€” Added "Statement of Applicability" section to ISO intro - -## 8. AVG/GDPR Compliance - -- [x] **8.1 Privacy/AVG page missing** β€” HIGH β€” Created `docs/ISO/privacy-policy.md` (EN + NL) -- [x] **8.2 Data processing register not referenced** β€” HIGH β€” Referenced in privacy-policy.md -- [x] **8.3 EU/non-EU vendor data assessment not referenced** β€” MEDIUM β€” Covered in privacy-policy.md supplier assessment section - -## 9. Management Review - -- [x] **9.1 Management review process not documented** β€” MEDIUM β€” Added detailed section to ISO intro (annual + monthly MT meetings, topics covered) - -## 10. Internal Audits - -- [x] **10.1 Internal audit process not documented** β€” MEDIUM β€” Added section to ISO intro (audit plan, trained auditors, Jira tracking) - -## 11. Customer Satisfaction - -- [x] **11.1 NPS/customer satisfaction measurement not on site** β€” MEDIUM β€” Added "Customer Satisfaction" section (NPS, annual evaluations, partner evaluations) - -## 12. Competence and Training - -- [x] **12.1 Competence requirements reference vague** β€” MEDIUM β€” Expanded in ISO intro (competence matrix, annual review) -- [x] **12.2 Security awareness program not documented** β€” MEDIUM β€” Added to ISO intro (team presentations, quizzes, topics) - -## 13. Business Continuity - -- [x] **13.1 Business continuity not documented** β€” HIGH β€” Added section to ISO intro (recovery procedures, supplier criticality, annual review) - -## 14. Physical Security and Safety - -- [x] **14.1 Fire safety plan not referenced** β€” LOW β€” Added to ISO intro Physical Safety section -- [x] **14.2 RI&E not referenced** β€” LOW β€” Added to ISO intro Physical Safety section -- [x] **14.3 Gedragscode for workplace safety** β€” LOW β€” Covered by Code of Conduct page - -## 15. Document Control - -- [x] **15.1 External access tracking not referenced** β€” LOW β€” Added to ISO intro Document Control section -- [x] **15.2 No document control statement** β€” MEDIUM β€” Added "Document Control" section to ISO intro - -## 16. Certificates - -- [x] **16.1 Certificates not linked** β€” LOW β€” Referenced in ISO intro opening paragraph - -## 17. Continual Improvement - -- [x] **17.1 PDCA cycle not documented** β€” MEDIUM β€” Added "The PDCA Cycle" table to ISO intro - -## 18. AI Tooling and Secure Development - -- [x] **18.1 Claude Code security controls not documented** β€” HIGH β€” Added "AI Tooling (Claude Code)" section to security.md with ISO-723 controls - -## 19. Supplier and Outsourcing Management - -- [x] **19.1 Supplier evaluation process not documented** β€” MEDIUM β€” Added "Supplier Management" section to ISO intro - -## 20. Existing Inconsistencies - -- [x] **20.1 Reporting channel inconsistency** β€” MEDIUM β€” Added "Internal vs External Reporting" section to incident-reporting.md -- [ ] **20.2 Organisation page pending review** β€” MEDIUM β€” Still has "pending management review" warning; needs management input -- [x] **20.3 Incident response times inconsistent** β€” MEDIUM β€” Clarified internal vs external SLAs in incident-reporting.md - -## 21. NL Translation Completeness - -- [x] **21.1 NL translations may diverge** β€” LOW β€” All new content created with NL translations - -## Summary - -| Priority | Total | Resolved | Open | -|----------|-------|----------|------| -| HIGH | 10 | 10 | 0 | -| MEDIUM | 14 | 13 | 1 | -| LOW | 6 | 6 | 0 | -| **Total**| **30**| **29** | **1**| - -**Remaining open item:** 20.2 β€” Organisation page "pending management review" β€” requires management input, cannot be resolved by documentation alone. From 74c476e3d2ca1d7896c6110c27de66e9b0163c56 Mon Sep 17 00:00:00 2001 From: "mwesterweel@hotmail.com" Date: Mon, 13 Apr 2026 15:40:13 +0200 Subject: [PATCH 6/7] =?UTF-8?q?fix:=20process=20HWW=202.0=20review=20feedb?= =?UTF-8?q?ack=20=E2=80=94=2016=20points=20across=20EN=20+=20NL=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Addresses all review feedback from the HWW 2.0 session: - ESET/Linux: add workstation-security repo as alternative - Onboarding: link to full Code of Conduct instead of inline copy - Code of Conduct: add Conduction workplace agreements from Working@Conduction PDF - Crisis management: add 7 vuistregels to incident-reporting - Vacancies: switch to info@conduction.nl, add GitHub org link - Hotfix process: clarify same branch protection rules apply - Customer support: fix Jira to manual, remove vier-ogen section - Quality policy: remove NPS objective, update communication text - Security policy: add status.commonground.nu for uptime monitoring - .gitignore: expand with secrets, build artifacts, IDE patterns Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitignore | 26 +++++++++++++++- CHANGELOG.md | 31 +++++++++++++++++++ website/docs/ISO/incident-reporting.md | 12 +++++++ website/docs/ISO/quality-policy.md | 3 +- website/docs/ISO/security-policy.md | 2 +- website/docs/ISO/security.md | 2 ++ website/docs/WayOfWork/Vacancies.md | 15 +++++---- website/docs/WayOfWork/code-of-conduct.md | 16 ++++++++++ website/docs/WayOfWork/customer-support.md | 8 ++--- website/docs/WayOfWork/onboarding.md | 10 +----- website/docs/WayOfWork/release-process.md | 4 ++- .../current/ISO/incident-reporting.md | 12 +++++++ .../current/ISO/quality-policy.md | 3 +- .../current/ISO/security-policy.md | 2 +- .../current/ISO/security.md | 2 ++ .../current/WayOfWork/Vacancies.md | 11 +++---- .../current/WayOfWork/code-of-conduct.md | 16 ++++++++++ .../current/WayOfWork/customer-support.md | 8 ++--- .../current/WayOfWork/onboarding.md | 10 +----- .../current/WayOfWork/release-process.md | 4 ++- 20 files changed, 144 insertions(+), 53 deletions(-) create mode 100644 CHANGELOG.md diff --git a/.gitignore b/.gitignore index df30947..24887fe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,26 @@ - +# IDE .idea/ +.vscode/ +*.swp +*.swo + +# Secrets +.env +.env.* +*.pem +*.key +*_rsa +*.crt +*.p12 + +# Build artifacts +website/build/ +website/.docusaurus/ +website/node_modules/ +node_modules/ +dist/ +*.tgz + +# OS +.DS_Store +Thumbs.db diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..cf8de4e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,31 @@ +# Changelog + +All notable changes to the Conduction Employee Handbook are documented in this file. + +## 2026-04-13 β€” HWW 2.0 Review Feedback + +Processed review feedback from HWW 2.0 session. Changes across EN + NL versions. + +### Changed + +- **ESET / Linux** (`ISO/security.md`): Added Linux alternative β€” workstation-security repo reference, teamlead guidance, log audit notice +- **Onboarding** (`WayOfWork/onboarding.md`): Replaced inline Code of Conduct summary with link to full `code-of-conduct` page (single source of truth) +- **Vacatures** (`WayOfWork/Vacancies.md`): Changed primary application channel from GitHub Issues to info@conduction.nl; added GitHub org link and "About Conduction" section +- **Hotfix process** (`WayOfWork/release-process.md`): Clarified that same branch protection rules (reviewer count, CI) apply to hotfixes β€” no exceptions to human-in-the-loop +- **Customer support** (`WayOfWork/customer-support.md`): Corrected Jira ticket creation from "auto-creates" to manual; removed vier-ogen-principe section (not relevant to support page) +- **Quality policy** (`ISO/quality-policy.md`): Removed NPS objective (not yet measured); updated communication section to reference quality sessions instead of documentation site only +- **Security policy** (`ISO/security-policy.md`): Added status.commonground.nu link to uptime monitoring objective + +### Added + +- **Crisis management vuistregels** (`ISO/incident-reporting.md`): Added 7 rules of thumb for crisis situations (report first, communicate more, contain before fix, etc.) + +### Verified + +- **Dependency checks** (point 7): All documented checks (license compliance, vulnerability scan, SBOM/CycloneDX, composer audit, npm audit) are present in the centralized `quality.yml` reusable workflow in `.github` repo. OpenRegister calls these as a reusable workflow. Documentation is accurate. +- **AI tooling** (point 13): Current documentation confirmed still accurate β€” no changes needed. +- **Working@ / Drive assessments** (point 3): Remains Drive-specific, no handbook changes needed per review decision. + +### Verified & Resolved + +- **Code of Conduct vs Working@Conduction PDF** (points 2, 10): Compared `code-of-conduct.md` against the official Working@Conduction PDF (v1.0, 1.6.2025) punkt 29. Added "Conduction Workplace Agreements" section with all Conduction-specific rules from the PDF: data security awareness, no gifts > €25, reputation clause, mutual accountability. Contributor Covenant base preserved. diff --git a/website/docs/ISO/incident-reporting.md b/website/docs/ISO/incident-reporting.md index e02b95a..e593f7b 100644 --- a/website/docs/ISO/incident-reporting.md +++ b/website/docs/ISO/incident-reporting.md @@ -12,6 +12,18 @@ Conduction has a duty to detect, report, and learn from incidents β€” both secur **If you suspect something is wrong, report it immediately. There is no penalty for reporting in good faith.** +## Crisis Rules of Thumb + +When a crisis hits, these rules apply: + +1. **Report first, investigate later** β€” the team needs to know before you have all the answers +2. **Communicate more, not less** β€” silence creates uncertainty; share what you know, even if incomplete +3. **One person leads, the rest supports** β€” the Quality & Safety Lead coordinates; avoid parallel decision-making +4. **Contain before you fix** β€” limit the damage first, then work on the root cause +5. **Log everything** β€” decisions, timestamps, actions taken. You will need this for the post-mortem +6. **Don't blame, learn** β€” the goal is to prevent recurrence, not to assign fault +7. **Escalate early** β€” if in doubt whether something is a crisis, treat it as one. Downgrading is easier than catching up + ## Classification We distinguish three types of findings, each with their own procedure: diff --git a/website/docs/ISO/quality-policy.md b/website/docs/ISO/quality-policy.md index a85b62a..1395a84 100644 --- a/website/docs/ISO/quality-policy.md +++ b/website/docs/ISO/quality-policy.md @@ -22,7 +22,6 @@ Conduction is committed to delivering high-quality open-source software and serv | Objective | Measurable target | Responsible | Review | |---|---|---|---| -| Customer satisfaction | NPS score β‰₯ 30 | Commercial Lead | Annually (customer evaluations) | | Issue response time | Support tickets acknowledged within 1 business day | Operations Lead | Monthly (MT quality meeting) | | Software quality | All PRs pass automated quality gates before merge | Development Lead | Continuous (CI/CD) | | Process improvement | β‰₯ 2 process improvements implemented per quarter | Quality Manager | Quarterly (internal audit) | @@ -41,7 +40,7 @@ Conduction's management commits to: ## Communication to Employees -This policy is communicated to all employees via this documentation site. Employees are expected to understand this policy and apply its principles in their daily work. Questions or concerns can be directed to the Quality Manager or raised via a [GitHub Issue](https://github.com/ConductionNL/.github/issues). +This policy is communicated to all employees via periodic quality sessions and is available as a reference on this documentation site. Employees are expected to understand this policy and apply its principles in their daily work. Questions or concerns can be directed to the Quality Manager or raised via a [GitHub Issue](https://github.com/ConductionNL/.github/issues). ## Applicability diff --git a/website/docs/ISO/security-policy.md b/website/docs/ISO/security-policy.md index 61ca4c8..22640b4 100644 --- a/website/docs/ISO/security-policy.md +++ b/website/docs/ISO/security-policy.md @@ -37,7 +37,7 @@ This policy applies to: | Objective | Measurable target | Responsible | Review | |---|---|---|---| | Prevent unauthorized access | Zero unauthorized access incidents per year | Quality & Safety Lead | Monthly (MT quality meeting) | -| System availability | Critical systems β‰₯ 99.5% uptime | Operations Lead | Monthly | +| System availability | Critical systems β‰₯ 99.5% uptime ([status.commonground.nu](https://status.commonground.nu)) | Operations Lead | Monthly | | Incident response | Security incidents acknowledged within 4 business hours | Quality & Safety Lead | Per incident | | Vulnerability management | Critical/high CVEs patched within 30 days | Development Lead | Continuous (CI/CD) | | Employee awareness | All employees complete annual security awareness session | Quality & Safety Lead | Annually | diff --git a/website/docs/ISO/security.md b/website/docs/ISO/security.md index 306d3e7..a66e978 100644 --- a/website/docs/ISO/security.md +++ b/website/docs/ISO/security.md @@ -152,6 +152,8 @@ ESET must be activated on all devices used for Conduction work, at all times. Re - [ESET Business Edition β€” setup and downloads](https://www.eset.com/int/business/) - Contact IT for your license key and 2FA setup +**Linux users:** ESET has limited Linux support. Install the [workstation-security](https://github.com/MWest2020/workstation-security) tooling instead. Ask your team lead for setup guidance if needed. Your security logs may be requested at any time. + ### AI Tooling (Claude Code) We use Claude Code for development. AI tooling inherits the permissions of the user session it runs in. The following controls are mandatory (based on documented deviation ISO-723): diff --git a/website/docs/WayOfWork/Vacancies.md b/website/docs/WayOfWork/Vacancies.md index 6dfd7b9..2ef7b01 100644 --- a/website/docs/WayOfWork/Vacancies.md +++ b/website/docs/WayOfWork/Vacancies.md @@ -29,7 +29,7 @@ As a Senior Backend Developer at Conduction, you will play a key role in develop #### How to Apply -To apply for this position, create an **application issue** in this repository with the title "Application - Senior Backend Developer (PHP Symfony)". Include your CV and a brief cover letter in the issue description explaining why you are suitable for this role. +Send your CV and a brief cover letter to **[info@conduction.nl](mailto:info@conduction.nl)** with the subject "Application β€” Senior Backend Developer (PHP Symfony)". ### Senior Frontend Developer (React / NL Design) @@ -48,7 +48,7 @@ As a Senior Frontend Developer at Conduction, you will be responsible for creati #### How to Apply -To apply for this position, create an **application issue** in this repository with the title "Application - Senior Frontend Developer (React / NL Design)". Include your CV and a brief cover letter in the issue description explaining why you are suitable for this role. +Send your CV and a brief cover letter to **[info@conduction.nl](mailto:info@conduction.nl)** with the subject "Application β€” Senior Frontend Developer (React / NL Design)". ## Why Join Conduction? @@ -63,11 +63,10 @@ Conduction follows the ICT NL CAO (Collective Labor Agreement) to ensure fair an ## How to Apply -If you are interested in any of the above positions or think you can contribute to our team in other ways, follow these steps to apply: +Interested in one of the positions above, or think you can contribute in other ways? Send your CV and a brief motivation to **[info@conduction.nl](mailto:info@conduction.nl)**. We will get back to you within 5 business days. -1. Click on the "Issues" tab in this repository. -2. Click the "New Issue" button. -3. Use the relevant job title (e.g., "Application - Senior Backend Developer (PHP Symfony)" or "Application - Senior Frontend Developer (React / NL Design)") as the issue title. -4. In the issue description, include your CV and a brief cover letter explaining your interest in the role and why you are a strong candidate. +No suitable vacancy listed? Open applications are welcome at the same address. -Our HR team will review your application and contact you. Thank you for considering a career at Conduction. We look forward to welcoming talented individuals to our team! +## About Conduction + +Want to learn more about what we build? Check our [GitHub organisation](https://github.com/ConductionNL) for our open-source projects, or browse this handbook for how we work. diff --git a/website/docs/WayOfWork/code-of-conduct.md b/website/docs/WayOfWork/code-of-conduct.md index 40928ad..357112b 100644 --- a/website/docs/WayOfWork/code-of-conduct.md +++ b/website/docs/WayOfWork/code-of-conduct.md @@ -32,6 +32,22 @@ Examples of unacceptable behavior: - Publishing others' private information without explicit permission - Other conduct which could reasonably be considered inappropriate in a professional setting +## Conduction Workplace Agreements + +In addition to the community standards above, the following agreements apply to everyone working at or with Conduction: + +- Discrimination, (sexual) intimidation, aggression, or bullying in any form is never accepted +- We treat each other with respect, taking into account each other's backgrounds, beliefs, norms, and values +- We talk **with** each other, not **about** each other +- We listen to each other and ask questions when things are unclear +- We help each other, give constructive feedback, and share compliments +- We keep our commitments β€” and let others know when we cannot +- We are not afraid to ask for help when we don't understand or can't do something +- We resolve conflicts as quickly as possible by talking to each other directly +- We are aware of all aspects of data security and act accordingly (see also the [Security Policy](../ISO/security)) +- We refrain from behavior that could damage the company's reputation, and do not accept gifts worth more than €25 +- We hold each other accountable for following these rules of conduct + ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders at **info@conduction.nl**. diff --git a/website/docs/WayOfWork/customer-support.md b/website/docs/WayOfWork/customer-support.md index 140c928..3dbeab5 100644 --- a/website/docs/WayOfWork/customer-support.md +++ b/website/docs/WayOfWork/customer-support.md @@ -16,7 +16,7 @@ If it takes longer than 5 minutes, create an issue. Minimum time logged: **1 hou ## Support Flow -1. **Email** β€” customers send queries to **support@conduction.nl**, which auto-creates a Jira ticket +1. **Email** β€” customers send queries to **support@conduction.nl**. Create a Jira ticket manually based on the email 2. **Slack** β€” right-click a customer message and select "create issue from" to generate a Jira ticket 3. **Assign** β€” review the ticket and assign it to the right person 4. **Update** β€” keep the customer informed about progress, even if there's no significant update @@ -24,8 +24,4 @@ If it takes longer than 5 minutes, create an issue. Minimum time logged: **1 hou ## Customer Complaints -Complaints go to **klachten@conduction.nl**. Examples: billing errors, inappropriate employee behavior, quality issues. - -## Four-Eyes Principle - -All code changes require peer review. **Core bundles** and **payment-related code** require a **six-eyes principle** β€” two reviewers. No code may be merged into protected branches without the required review. +Complaints go to **klachten@conduction.nl**. Examples: billing errors, inappropriate employee behavior, quality issues. \ No newline at end of file diff --git a/website/docs/WayOfWork/onboarding.md b/website/docs/WayOfWork/onboarding.md index 718626d..2547eb1 100644 --- a/website/docs/WayOfWork/onboarding.md +++ b/website/docs/WayOfWork/onboarding.md @@ -33,15 +33,7 @@ During onboarding, you'll: ## Code of Conduct -We treat each other with respect. Our agreements: - -- Talk **with** each other, not **about** each other -- Listen and ask questions when things are unclear -- Help each other β€” give constructive feedback and compliments -- Keep your commitments, and communicate when you can't -- Don't be afraid to ask for help -- Resolve conflicts by talking directly -- Discrimination, harassment, aggression, or bullying is never accepted +During onboarding you will read and acknowledge our full [Code of Conduct(ion)](code-of-conduct). This is our shared agreement on how we treat each other β€” respectfully, openly, and constructively. If you experience unwanted behavior, first try to address the person directly. If that's not possible, contact the internal confidential counselor. An external counselor is available through our occupational health service. diff --git a/website/docs/WayOfWork/release-process.md b/website/docs/WayOfWork/release-process.md index a1ea243..2341294 100644 --- a/website/docs/WayOfWork/release-process.md +++ b/website/docs/WayOfWork/release-process.md @@ -43,7 +43,9 @@ These rules are enforced by the centralized **branch-protection** workflow. PRs ### Hotfixes -Hotfix branches (`hotfix/*`) can target both `beta` and `main` directly, bypassing the normal flow. Use these only for critical production fixes that cannot wait for the regular development cycle. +Hotfix branches (`hotfix/*`) can target both `beta` and `main` directly, bypassing the normal development flow. Use these only for critical production fixes that cannot wait for the regular development cycle. + +**The same branch protection rules apply to hotfixes.** A hotfix PR to `main` still requires 2 reviewers and passing CI. A hotfix PR to `beta` requires 1 reviewer and passing CI. There are no exceptions β€” the human-in-the-loop review is always enforced. After merging a hotfix to `main`, create a backport PR from `main` β†’ `beta` to keep the branches in sync. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md index c60ad85..eb6795c 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md @@ -12,6 +12,18 @@ Conduction heeft de plicht om incidenten te detecteren, te melden en ervan te le **Vermoed je dat er iets mis is? Meld het direct. Er is geen straf voor melden te goeder trouw.** +## Vuistregels bij een Crisis + +Als er een crisis is, gelden deze regels: + +1. **Meld eerst, onderzoek later** β€” het team moet het weten voordat je alle antwoorden hebt +2. **Communiceer meer, niet minder** β€” stilte creΓ«ert onzekerheid; deel wat je weet, ook als het incompleet is +3. **EΓ©n persoon leidt, de rest ondersteunt** β€” de Kwaliteits- & Veiligheidsmanager coΓΆrdineert; vermijd parallelle besluitvorming +4. **Beperk eerst de schade, los dan op** β€” inperken gaat voor repareren +5. **Log alles** β€” beslissingen, tijdstippen, genomen acties. Je hebt dit nodig voor de evaluatie +6. **Geen schuld, wel leren** β€” het doel is herhaling voorkomen, niet iemand aanwijzen +7. **Escaleer vroeg** β€” twijfel je of het een crisis is? Behandel het als een crisis. Afschalen is makkelijker dan inhalen + ## Classificatie We onderscheiden drie typen bevindingen, elk met een eigen procedure: diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md index a05fe53..94ef98e 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/quality-policy.md @@ -22,7 +22,6 @@ Conduction streeft ernaar kwalitatief hoogwaardige open-source software en diens | Doelstelling | Meetbaar doel | Verantwoordelijk | Evaluatie | |---|---|---|---| -| Klanttevredenheid | NPS-score β‰₯ 30 | Commercieel Lead | Jaarlijks (klantevaluaties) | | Responstijd issues | Supporttickets bevestigd binnen 1 werkdag | Operations Lead | Maandelijks (MT-kwaliteitsoverleg) | | Softwarekwaliteit | Alle PR's doorlopen geautomatiseerde kwaliteitspoorten voor merge | Development Lead | Continu (CI/CD) | | Procesverbetering | β‰₯ 2 procesverbeteringen per kwartaal geΓ―mplementeerd | Kwaliteitsmanager | Per kwartaal (interne audit) | @@ -41,7 +40,7 @@ Het management van Conduction verbindt zich tot: ## Communicatie naar Medewerkers -Dit beleid wordt gecommuniceerd aan alle medewerkers via deze documentatiesite. Van medewerkers wordt verwacht dat zij dit beleid begrijpen en de principes toepassen in hun dagelijkse werk. Vragen of opmerkingen kunnen worden gericht aan de kwaliteitsmanager of ingediend via een [GitHub Issue](https://github.com/ConductionNL/.github/issues). +Dit beleid wordt gecommuniceerd aan alle medewerkers via periodieke kwaliteitssessies en is beschikbaar als referentie op deze documentatiesite. Van medewerkers wordt verwacht dat zij dit beleid begrijpen en de principes toepassen in hun dagelijkse werk. Vragen of opmerkingen kunnen worden gericht aan de kwaliteitsmanager of ingediend via een [GitHub Issue](https://github.com/ConductionNL/.github/issues). ## Toepasselijkheid diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md index f217032..804a470 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security-policy.md @@ -37,7 +37,7 @@ Dit beleid is van toepassing op: | Doelstelling | Meetbaar doel | Verantwoordelijk | Evaluatie | |---|---|---|---| | Ongeautoriseerde toegang voorkomen | Nul ongeautoriseerde toegangsincidenten per jaar | Kwaliteits- & Veiligheidsmanager | Maandelijks (MT-kwaliteitsoverleg) | -| Systeembeschikbaarheid | Kritieke systemen β‰₯ 99,5% uptime | Operations Lead | Maandelijks | +| Systeembeschikbaarheid | Kritieke systemen β‰₯ 99,5% uptime ([status.commonground.nu](https://status.commonground.nu)) | Operations Lead | Maandelijks | | Incidentrespons | Beveiligingsincidenten bevestigd binnen 4 werkuren | Kwaliteits- & Veiligheidsmanager | Per incident | | Kwetsbaarheidsbeheer | Kritieke/hoge CVE's gepatcht binnen 30 dagen | Development Lead | Continu (CI/CD) | | Bewustwording medewerkers | Alle medewerkers voltooien jaarlijkse beveiligingsbewustzijnssessie | Kwaliteits- & Veiligheidsmanager | Jaarlijks | diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md index 9a6f411..7873bc8 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md @@ -152,6 +152,8 @@ ESET moet op alle apparaten voor Conduction-werk altijd geactiveerd zijn. Vraag - [ESET Business Edition β€” installatie en downloads](https://www.eset.com/int/business/) - Neem contact op met IT voor je licentiesleutel en 2FA-instelling +**Linux-gebruikers:** ESET heeft beperkte Linux-ondersteuning. Installeer in plaats daarvan de [workstation-security](https://github.com/MWest2020/workstation-security) tooling. Vraag je teamlead om uitleg bij de installatie indien nodig. Er kan te allen tijde om een uitdraai van je beveiligingslogs gevraagd worden. + ### AI Tooling (Claude Code) We gebruiken Claude Code voor development. AI-tooling erft de rechten van de gebruikerssessie waarin het draait. De volgende maatregelen zijn verplicht (gebaseerd op gedocumenteerde afwijking ISO-723): diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Vacancies.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Vacancies.md index 1484b22..515ac08 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Vacancies.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/Vacancies.md @@ -17,14 +17,13 @@ Zie de [Engelse vacaturepagina](/docs/WayOfWork/Vacancies) voor actuele openstaa ## Hoe Solliciteer Je? -Wij verwerken sollicitaties via GitHub Issues: +Stuur je CV en een korte motivatie naar **[info@conduction.nl](mailto:info@conduction.nl)**. We nemen binnen 5 werkdagen contact op. -1. Ga naar [github.com/ConductionNL/.github/issues](https://github.com/ConductionNL/.github/issues) -2. Maak een nieuw issue aan met als titel: `[Sollicitatie] Jouw naam β€” Gewenste functie` -3. Voeg je CV en motivatie toe als bijlage of tekst in het issue -4. We nemen binnen 5 werkdagen contact op +Geen openstaande vacature die bij je past? Open sollicitaties zijn welkom op hetzelfde adres. -Geen openstaande vacature die bij je past? Stuur een open sollicitatie via hetzelfde kanaal. +## Over Conduction + +Meer weten over wat we bouwen? Bekijk onze [GitHub-organisatie](https://github.com/ConductionNL) voor onze open-source projecten, of blader door dit handboek voor onze manier van werken. ## ICT NL CAO diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/code-of-conduct.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/code-of-conduct.md index bdd3366..adf06b7 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/code-of-conduct.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/code-of-conduct.md @@ -32,6 +32,22 @@ Voorbeelden van onacceptabel gedrag: - Het publiceren van andermans persoonlijke informatie zonder expliciete toestemming - Ander gedrag dat redelijkerwijs als ongepast kan worden beschouwd in een professionele omgeving +## Conduction Werkafspraken + +Naast bovenstaande communitystandaarden gelden de volgende afspraken voor iedereen die bij of met Conduction werkt: + +- Discriminatie, (seksuele) intimidatie, agressie of pesten in welke vorm dan ook wordt niet geaccepteerd +- We behandelen elkaar met respect en houden rekening met elkaars achtergrond, overtuigingen, normen en waarden +- We praten **met** elkaar, niet **over** elkaar +- We luisteren naar elkaar en stellen vragen als dingen onduidelijk zijn +- We helpen elkaar, geven constructieve feedback en complimenten +- We komen onze afspraken na en laten het anderen weten als we ze niet kunnen nakomen +- We zijn niet bang om hulp te vragen als we iets niet begrijpen of niet kunnen +- We lossen conflicten zo snel mogelijk op door met elkaar te praten +- We zijn ons bewust van alle aspecten van gegevensbeveiliging en handelen daarnaar (zie ook het [Beveiligingsbeleid](../ISO/security)) +- We onthouden ons van gedrag dat de reputatie van het bedrijf kan schaden en nemen geen relatiegeschenken van meer dan €25 aan +- We houden elkaar verantwoordelijk voor het naleven van deze gedragsregels + ## Handhaving Gevallen van beledigend, intimiderend of anderszins onacceptabel gedrag kunnen worden gemeld bij de communityleiders via **info@conduction.nl**. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/customer-support.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/customer-support.md index 659e580..c2e7649 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/customer-support.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/customer-support.md @@ -16,7 +16,7 @@ Duurt het langer dan 5 minuten, maak dan een issue aan. Minimale tijdsregistrati ## Supportproces -1. **E-mail** β€” klanten sturen vragen naar **support@conduction.nl**, wat automatisch een Jira-ticket aanmaakt +1. **E-mail** β€” klanten sturen vragen naar **support@conduction.nl**. Maak handmatig een Jira-ticket aan op basis van de e-mail 2. **Slack** β€” rechtermuisklik op een klantbericht en kies "create issue from" om een Jira-ticket te genereren 3. **Toewijzen** β€” beoordeel het ticket en wijs het toe aan de juiste persoon 4. **Updaten** β€” houd de klant op de hoogte, ook als er geen significant nieuws is @@ -24,8 +24,4 @@ Duurt het langer dan 5 minuten, maak dan een issue aan. Minimale tijdsregistrati ## Klachten -Klachten gaan naar **klachten@conduction.nl**. Voorbeelden: facturatiefouten, ongepast gedrag van medewerkers, kwaliteitsproblemen. - -## Vier-Ogen-Principe - -Alle codewijzigingen vereisen peer review. **Core bundles** en **betalingsgerelateerde code** vereisen het **zes-ogen-principe** β€” twee reviewers. Geen code mag worden gemerged naar beschermde branches zonder de vereiste review. +Klachten gaan naar **klachten@conduction.nl**. Voorbeelden: facturatiefouten, ongepast gedrag van medewerkers, kwaliteitsproblemen. \ No newline at end of file diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/onboarding.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/onboarding.md index de607a4..0864cc3 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/onboarding.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/onboarding.md @@ -33,15 +33,7 @@ Tijdens de onboarding: ## Gedragscode -We behandelen elkaar met respect. Onze afspraken: - -- Praat **met** elkaar, niet **over** elkaar -- Luister en stel vragen als iets onduidelijk is -- Help elkaar β€” geef constructieve feedback en complimenten -- Kom je afspraken na, en communiceer als dat niet lukt -- Wees niet bang om hulp te vragen -- Los conflicten op door direct met elkaar te praten -- Discriminatie, intimidatie, agressie of pesten wordt nooit geaccepteerd +Tijdens de onboarding lees en bevestig je onze volledige [Code of Conduct(ion)](code-of-conduct). Dit is onze gedeelde afspraak over hoe we met elkaar omgaan β€” respectvol, open en constructief. Bij ongewenst gedrag: probeer eerst de persoon zelf aan te spreken. Lukt dat niet, neem contact op met de interne vertrouwenspersoon. Een externe vertrouwenspersoon is beschikbaar via de arbodienst. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/release-process.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/release-process.md index bf616be..fcb03ef 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/release-process.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/release-process.md @@ -36,7 +36,9 @@ Zonder label: standaard `patch`. ## Hotfixes -Kritieke fixes kunnen de normale flow omzeilen en rechtstreeks naar `beta` of `main` worden gemerged. Gebruik het prefix `hotfix/` voor de branchnaam. +Hotfix-branches (`hotfix/*`) kunnen rechtstreeks naar `beta` of `main` worden gemerged, buiten de normale development-flow om. Gebruik dit alleen voor kritieke productiefouten die niet kunnen wachten op de reguliere cyclus. + +**Dezelfde branchbeveiligingsregels gelden voor hotfixes.** Een hotfix-PR naar `main` vereist nog steeds 2 reviewers en slagende CI. Een hotfix-PR naar `beta` vereist 1 reviewer en slagende CI. Er zijn geen uitzonderingen β€” de menselijke controle (human-in-the-loop) wordt altijd afgedwongen. ## Meer Lezen From 93962cbb171e4a3be53283f864737fe7168be536 Mon Sep 17 00:00:00 2001 From: "mwesterweel@hotmail.com" Date: Wed, 15 Apr 2026 21:12:14 +0200 Subject: [PATCH 7/7] feat: incident escalation, offboarding, AI policy, remove crisis references MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove "Crisis Management" section from WayOfWork intro (EN + NL) - Rename "Crisis Rules of Thumb" to "Incident Escalation" (EN + NL) - Replace "Quality & Safety Lead" with dev lead / MT member (EN + NL) - Remove all "crisis" terminology β€” reword to "serious incident" - Add red danger callout on intro page linking to incident procedure (EN + NL) - Add offboarding section to onboarding page incl. BYOD data wipe (EN + NL) - Add "Leaving?" one-liner on intro page (EN + NL) - Add Passwork share-link procedure to security policy (EN + NL) - Broaden AI policy: Claude.ai account for all employees, no data storage (EN + NL) - Align with ISO 27001 beheersmaatregelen doc (A5.11, A5.14, A6.5, A9.5-A9.6) Co-Authored-By: Claude Opus 4.6 (1M context) --- website/docs/ISO/incident-reporting.md | 8 ++++---- website/docs/ISO/security.md | 8 +++++--- website/docs/Intro.md | 8 +++++++- website/docs/WayOfWork/intro.md | 12 ------------ website/docs/WayOfWork/onboarding.md | 4 ++++ .../current/ISO/incident-reporting.md | 8 ++++---- .../current/ISO/security.md | 8 +++++--- .../docusaurus-plugin-content-docs/current/Intro.md | 8 +++++++- .../current/WayOfWork/intro.md | 12 ------------ .../current/WayOfWork/onboarding.md | 4 ++++ 10 files changed, 40 insertions(+), 40 deletions(-) diff --git a/website/docs/ISO/incident-reporting.md b/website/docs/ISO/incident-reporting.md index e593f7b..70ece90 100644 --- a/website/docs/ISO/incident-reporting.md +++ b/website/docs/ISO/incident-reporting.md @@ -12,17 +12,17 @@ Conduction has a duty to detect, report, and learn from incidents β€” both secur **If you suspect something is wrong, report it immediately. There is no penalty for reporting in good faith.** -## Crisis Rules of Thumb +## Incident Escalation -When a crisis hits, these rules apply: +When a serious incident occurs, these rules apply: 1. **Report first, investigate later** β€” the team needs to know before you have all the answers 2. **Communicate more, not less** β€” silence creates uncertainty; share what you know, even if incomplete -3. **One person leads, the rest supports** β€” the Quality & Safety Lead coordinates; avoid parallel decision-making +3. **One person leads, the rest supports** β€” the dev lead or a management team member coordinates; avoid parallel decision-making 4. **Contain before you fix** β€” limit the damage first, then work on the root cause 5. **Log everything** β€” decisions, timestamps, actions taken. You will need this for the post-mortem 6. **Don't blame, learn** β€” the goal is to prevent recurrence, not to assign fault -7. **Escalate early** β€” if in doubt whether something is a crisis, treat it as one. Downgrading is easier than catching up +7. **Escalate early** β€” if in doubt whether something is serious, treat it as serious. Downgrading is easier than catching up ## Classification diff --git a/website/docs/ISO/security.md b/website/docs/ISO/security.md index a66e978..abb15ec 100644 --- a/website/docs/ISO/security.md +++ b/website/docs/ISO/security.md @@ -114,7 +114,7 @@ All Conduction passwords must be at least **10 characters** and contain: - A number - A special character -Store all credentials in [Passwork](https://www.passwork.me/). Never share passwords through Slack, email, or any other communication channel. +Store all credentials in [Passwork](https://www.passwork.me/). Never share passwords through Slack, email, or any other communication channel. When sharing credentials with a colleague or external party, use a **Passwork share-link** β€” these are one-time use and time-limited. ### Data Handling @@ -154,9 +154,11 @@ ESET must be activated on all devices used for Conduction work, at all times. Re **Linux users:** ESET has limited Linux support. Install the [workstation-security](https://github.com/MWest2020/workstation-security) tooling instead. Ask your team lead for setup guidance if needed. Your security logs may be requested at any time. -### AI Tooling (Claude Code) +### AI Tooling -We use Claude Code for development. AI tooling inherits the permissions of the user session it runs in. The following controls are mandatory (based on documented deviation ISO-723): +Every employee receives a paid **Claude.ai** account. This account does not store conversation data. Use it for day-to-day work β€” never paste client credentials or personal data into any AI tool. + +**Claude Code** is used for development. AI tooling inherits the permissions of the user session it runs in. The following controls are mandatory (based on documented deviation ISO-723): - **Separate accounts** β€” Claude Code must use a dedicated GitHub account with standard developer permissions. Never use an admin account in the same session as Claude Code - **Git restrictions** β€” `settings.json` must restrict Git operations: Claude may only push to `feature/*` branches. Direct push to `development`, `beta`, or `main` is blocked diff --git a/website/docs/Intro.md b/website/docs/Intro.md index 3b87efe..2164564 100644 --- a/website/docs/Intro.md +++ b/website/docs/Intro.md @@ -34,6 +34,8 @@ Conduction helps bring good ideas to life. We work democratically, inclusively a **Ground rules** β€” treat each other with respect. Talk *with* each other, not *about* each other. Discrimination, harassment, or bullying is never accepted. +**Leaving?** β€” HR or your team lead walks you through offboarding: accounts, company property, payroll. See [Onboarding & offboarding](WayOfWork/onboarding). + **Read more:** - [Onboarding & buddy system](WayOfWork/onboarding) - [Organisation](WayOfWork/organisation) β€” roles, teams, structure @@ -67,7 +69,11 @@ Scope, budget and planning are in the quotation. Anything outside: discuss with **Helping each other** β€” stuck on something? Flag it as an impediment, post in Slack with a link to the issue, and raise it at standup. Your buddy is your first port of call. -**Incidents** β€” spot a security or quality incident? Talk to your supervisor immediately. Flag or create an issue with the label "security incident" or "quality incident". Write a memo with root cause analysis afterwards. Remember: **identify the risk -> assess the risk -> mitigate the risk -> review the measures.** +:::danger Report an Incident +Spot a security or quality incident? **Act immediately.** β†’ [Incident reporting procedure](ISO/incident-reporting) +::: + +**Incidents** β€” talk to your supervisor immediately. Flag or create an issue with the label "security incident" or "quality incident". Write a memo with root cause analysis afterwards. Remember: **identify the risk -> assess the risk -> mitigate the risk -> review the measures.** **Security** β€” access via your Conduction Google account, credentials in Passwork. Treat sensitive data like your nudes β€” share only with those who need it. Never send sensitive data via Slack or email. VPN for critical servers. ESET activated at all times. diff --git a/website/docs/WayOfWork/intro.md b/website/docs/WayOfWork/intro.md index 8de247d..eb40f31 100644 --- a/website/docs/WayOfWork/intro.md +++ b/website/docs/WayOfWork/intro.md @@ -48,18 +48,6 @@ Every project starts with a **kick-off**. If you haven't had one, ask for it β€” - Anything outside the quotation scope: discuss with your supervisor first - All work must be traceable to issues -### Crisis Management - -When a project turns into a crisis situation: - -1. **Re-refine** β€” control is everything; investment in refinement always pays off -2. **Be realistic** β€” clear expectations beat false promises. Don't say "maybe" when you mean "no" -3. **Multidisciplinary team** β€” include backend, frontend, and project management -4. **Go/no-go moment** β€” establish clear criteria and communicate them to the client -5. **Clear communication** β€” dedicated Slack channel with all stakeholders including the client -6. **Weekend work** β€” use evenings/weekends to prepare the next day; do regular development during working hours -7. **Don't rush** β€” keep time to refine and think. Quick fixes come back to haunt you - ## Further Reading - [Employee handbook](/docs/intro) β€” the quick-reference overview diff --git a/website/docs/WayOfWork/onboarding.md b/website/docs/WayOfWork/onboarding.md index 2547eb1..182b3c3 100644 --- a/website/docs/WayOfWork/onboarding.md +++ b/website/docs/WayOfWork/onboarding.md @@ -37,6 +37,10 @@ During onboarding you will read and acknowledge our full [Code of Conduct(ion)]( If you experience unwanted behavior, first try to address the person directly. If that's not possible, contact the internal confidential counselor. An external counselor is available through our occupational health service. +## Offboarding + +Leaving Conduction? HR or your team lead handles the process: accounts are revoked, company property (laptop, phone, keys) is collected, and payroll is settled. You are responsible for removing all company data from your personal devices (BYOD). Your confidentiality agreement stays in effect after you leave. They will reach out to walk you through it. + ## Questions? Ask your buddy. That's the whole point. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md index eb6795c..1fa9691 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/incident-reporting.md @@ -12,17 +12,17 @@ Conduction heeft de plicht om incidenten te detecteren, te melden en ervan te le **Vermoed je dat er iets mis is? Meld het direct. Er is geen straf voor melden te goeder trouw.** -## Vuistregels bij een Crisis +## Escalatie bij Incidenten -Als er een crisis is, gelden deze regels: +Bij een ernstig incident gelden deze regels: 1. **Meld eerst, onderzoek later** β€” het team moet het weten voordat je alle antwoorden hebt 2. **Communiceer meer, niet minder** β€” stilte creΓ«ert onzekerheid; deel wat je weet, ook als het incompleet is -3. **EΓ©n persoon leidt, de rest ondersteunt** β€” de Kwaliteits- & Veiligheidsmanager coΓΆrdineert; vermijd parallelle besluitvorming +3. **EΓ©n persoon leidt, de rest ondersteunt** β€” de dev lead of een MT-lid coΓΆrdineert; vermijd parallelle besluitvorming 4. **Beperk eerst de schade, los dan op** β€” inperken gaat voor repareren 5. **Log alles** β€” beslissingen, tijdstippen, genomen acties. Je hebt dit nodig voor de evaluatie 6. **Geen schuld, wel leren** β€” het doel is herhaling voorkomen, niet iemand aanwijzen -7. **Escaleer vroeg** β€” twijfel je of het een crisis is? Behandel het als een crisis. Afschalen is makkelijker dan inhalen +7. **Escaleer vroeg** β€” twijfel je of het serieus is? Behandel het als serieus. Afschalen is makkelijker dan inhalen ## Classificatie diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md index 7873bc8..fe32108 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/ISO/security.md @@ -114,7 +114,7 @@ Alle Conduction-wachtwoorden moeten minimaal **10 tekens** bevatten en bestaan u - Een cijfer - Een speciaal teken -Sla alle inloggegevens op in [Passwork](https://www.passwork.me/). Deel wachtwoorden nooit via Slack, e-mail of andere communicatiekanalen. +Sla alle inloggegevens op in [Passwork](https://www.passwork.me/). Deel wachtwoorden nooit via Slack, e-mail of andere communicatiekanalen. Gebruik bij het delen van credentials een **Passwork share-link** β€” deze is eenmalig bruikbaar en tijdgelimiteerd. ### Omgang met Data @@ -154,9 +154,11 @@ ESET moet op alle apparaten voor Conduction-werk altijd geactiveerd zijn. Vraag **Linux-gebruikers:** ESET heeft beperkte Linux-ondersteuning. Installeer in plaats daarvan de [workstation-security](https://github.com/MWest2020/workstation-security) tooling. Vraag je teamlead om uitleg bij de installatie indien nodig. Er kan te allen tijde om een uitdraai van je beveiligingslogs gevraagd worden. -### AI Tooling (Claude Code) +### AI Tooling -We gebruiken Claude Code voor development. AI-tooling erft de rechten van de gebruikerssessie waarin het draait. De volgende maatregelen zijn verplicht (gebaseerd op gedocumenteerde afwijking ISO-723): +Elke medewerker krijgt een betaald **Claude.ai**-account. Dit account slaat geen gespreksdata op. Gebruik het voor je dagelijkse werk β€” plak nooit klantgegevens of persoonsgegevens in een AI-tool. + +**Claude Code** wordt gebruikt voor development. AI-tooling erft de rechten van de gebruikerssessie waarin het draait. De volgende maatregelen zijn verplicht (gebaseerd op gedocumenteerde afwijking ISO-723): - **Gescheiden accounts** β€” Claude Code moet een dedicated GitHub-account gebruiken met standaard developer-rechten. Gebruik nooit een admin-account in dezelfde sessie als Claude Code - **Git-restricties** β€” `settings.json` moet Git-operaties beperken: Claude mag alleen pushen naar `feature/*`-branches. Direct pushen naar `development`, `beta` of `main` is geblokkeerd diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md index b1e2e09..b891ee8 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/Intro.md @@ -29,6 +29,8 @@ Conduction helpt goede ideeen tot leven brengen. We werken democratisch, inclusi **Spelregels** β€” behandel elkaar met respect. Praat *met* elkaar, niet *over* elkaar. Discriminatie, intimidatie of pesten wordt nooit geaccepteerd. +**Vertrekken?** β€” HR of je teamlead begeleidt de offboarding: accounts, bedrijfseigendommen, salarisadministratie. Zie [Onboarding & offboarding](WayOfWork/onboarding). + **Meer lezen:** - [Onboarding & buddy systeem](WayOfWork/onboarding) - [Organisatie](WayOfWork/organisation) β€” rollen, teams, structuur @@ -62,7 +64,11 @@ Scope, budget en planning liggen vast in de offerte. Alles daarbuiten: bespreek **Elkaar helpen** β€” ergens vastgelopen? Flag het als impediment, post in Slack met een link naar het issue, en breng het in bij de standup. Je buddy is je eerste aanspreekpunt. -**Incidenten** β€” herken je een beveiligings- of kwaliteitsincident? Overleg direct met je leidinggevende. Flag of maak een issue met het label "security incident" of "quality incident". Schrijf achteraf een memo met root cause analysis. Onthoud: **identificeer het risico -> beoordeel het risico -> beperk het risico -> herzie de maatregelen.** +:::danger Incident melden +Zie je een beveiligings- of kwaliteitsincident? **Handel direct.** β†’ [Procedure incidentmelding](ISO/incident-reporting) +::: + +**Incidenten** β€” overleg direct met je leidinggevende. Flag of maak een issue met het label "security incident" of "quality incident". Schrijf achteraf een memo met root cause analysis. Onthoud: **identificeer het risico -> beoordeel het risico -> beperk het risico -> herzie de maatregelen.** **Security** β€” toegang via je Conduction Google-account, inloggegevens in Passwork. Behandel gevoelige data als je naaktfoto's β€” deel alleen met wie het nodig heeft. Nooit gevoelige data via Slack of mail. VPN voor kritieke servers. ESET altijd geactiveerd. diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/intro.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/intro.md index 89c5323..6dd964a 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/intro.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/intro.md @@ -49,18 +49,6 @@ Elk project start met een **kick-off**. Heb je die niet gehad? Vraag erom β€” ga - Alles buiten de offertescope: bespreek eerst met je leidinggevende - Al het werk moet herleidbaar zijn naar issues -### Crisismanagement - -Wanneer een project in een crisissituatie terechtkomt: - -1. **Herrefine** β€” controle is alles; investering in refinement betaalt zich altijd terug -2. **Wees realistisch** β€” duidelijke verwachtingen zijn beter dan loze beloftes. Zeg geen "misschien" als je "nee" bedoelt -3. **Multidisciplinair team** β€” betrek backend, frontend en projectmanagement -4. **Go/no-go moment** β€” stel duidelijke criteria op en communiceer ze naar de klant -5. **Duidelijke communicatie** β€” apart Slack-kanaal met alle stakeholders inclusief de klant -6. **Weekendwerk** β€” gebruik avonden/weekends om de volgende dag voor te bereiden; doe reguliere ontwikkeling tijdens werkuren -7. **Niet haasten** β€” neem tijd om te refinen en na te denken. Quick fixes komen altijd terug - ## Meer Lezen - [Medewerkershandboek](/docs/intro) β€” het beknopte overzicht diff --git a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/onboarding.md b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/onboarding.md index 0864cc3..a454a09 100644 --- a/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/onboarding.md +++ b/website/i18n/nl/docusaurus-plugin-content-docs/current/WayOfWork/onboarding.md @@ -37,6 +37,10 @@ Tijdens de onboarding lees en bevestig je onze volledige [Code of Conduct(ion)]( Bij ongewenst gedrag: probeer eerst de persoon zelf aan te spreken. Lukt dat niet, neem contact op met de interne vertrouwenspersoon. Een externe vertrouwenspersoon is beschikbaar via de arbodienst. +## Offboarding + +Ga je weg bij Conduction? HR of je teamlead regelt het proces: accounts worden ingetrokken, bedrijfseigendommen (laptop, telefoon, sleutels) worden opgehaald, en salarisadministratie wordt afgewikkeld. Je bent zelf verantwoordelijk voor het verwijderen van alle bedrijfsdata van je persoonlijke apparaten (BYOD). Je geheimhoudingsovereenkomst blijft gelden na vertrek. Ze nemen contact met je op om alles door te lopen β€” geen verrassingen. + ## Vragen? Vraag je buddy. Daar draait het om.