diff --git a/.ddev/commands/web/build-trial b/.ddev/commands/web/build-trial
deleted file mode 100755
index 4f32ab06fc5de5e632ff2be006488205e5aa88da..0000000000000000000000000000000000000000
--- a/.ddev/commands/web/build-trial
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env sh
-
-## Description: Builds the trial experience, and its artifact, from the current code base.
-## Usage: build-trial
-## Example: "ddev build-trial"
-
-# This script is also used by our CI pipeline to build the published trial
-# artifact.
-# @see .gitlab-ci.yml
-
-# Stop this entire script if any one command fails.
-set -e
-
-cd trial
-
-# Blow away any previous build.
-rm -r -f build ./public/assets/trial.zip
-
-cp -R ../project_template build
-cp -R -v ./artifact_assets/* build
-cd build
-
-# Ensure all the recipes are defined as path repositories.
-find ../../ -maxdepth 1 -type d -name 'drupal_cms_*' -exec composer config repositories.{} path {} ';'
-
-# Force Composer Patches to rebuild the patch list when dependencies are
-# installed.
-rm -r -f patches.lock.json
-
-# Append to `default.settings.php` for default settings needed in WebAssembly, such as disabling permission hardening
-# and CSS/JS aggregation.
-composer config --merge --json 'extra.drupal-scaffold.file-mapping' '{"[web-root]/sites/default/default.settings.php": {"append": "./scaffold/default.settings.php"}}'
-
-# Make the trial module available as a Composer package, and install it along with
-# all other dependencies.
-composer config repositories.drupal_cms_trial path drupal_cms_trial
-COMPOSER_MIRROR_PATH_REPOS=1 composer require --update-no-dev drupal/drupal_cms_trial
-
-# Minimize the size of the artifact by deleting stuff we'll never need for
-# the trial.
-find . -depth -type d -name tests -exec rm -r -f "{}" ';'
-
-# Create the trial archive.
-composer archive --dir=../public/assets --file=trial --format=zip
-
-# If we're not running in CI, cleanly install the trial experience's dependencies and build it.
-if [ -z "$CI" ]; then
-  cd ..
-  npm clean-install
-  npm run build
-fi
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 715d37b627b250f26b273156733e1d057e97f0a2..36cf68d7991d93e848f212bb4fe2c8256af75e1e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -82,25 +82,6 @@ build test project:
   rules:
     - when: on_success
 
-build trial artifact:
-  stage: build
-  variables:
-    DRUPAL_CMS_TRIAL: 1
-  script:
-    - .ddev/commands/web/build-trial
-    - mv ./trial/public/assets/trial.zip .
-    - cd trial/build
-    - vendor/bin/drush site:install --yes
-    - composer archive --dir=../.. --file=trial-installed --format=zip
-  artifacts:
-    paths:
-      - trial.zip
-      - trial-installed.zip
-    expire_in: 1 day
-    public: true
-  rules:
-    - when: on_success
-
 .start-apache: &start-apache
   - service apache2 start
   - cd /var/www/html
@@ -172,18 +153,6 @@ run end-to-end tests:
     - *start-apache
     - npm test
 
-run trial tests:
-  stage: test
-  needs:
-    - 'build trial artifact'
-  script:
-    - cp trial.zip trial/tests/fixtures/
-    - cd trial
-    - npm clean-install
-    - npm run test
-  rules:
-    - when: on_success
-
 audit dependencies:
   stage: test
   needs:
@@ -204,24 +173,3 @@ check spelling:
       changes:
         - docs/**/*.md
   script: npx cspell --show-suggestions --show-context --no-progress docs
-
-# Build trial. This job name is pre-defined by GitLab, it has to be "pages".
-pages:
-  stage: deploy
-  needs:
-    - 'run trial tests'
-  artifacts:
-    paths:
-      - trial/public
-  rules:
-    # Only deploy to pages if we're on the default branch, on a push, and not a fork.
-    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "push" && $CI_PROJECT_ROOT_NAMESPACE == "project"
-      changes:
-        - trial/**/*
-        - .gitlab-ci.yml
-  script:
-    - cd trial
-    - npm clean-install
-    - npm run build
-    - echo "Trial experience was deployed at ${CI_PAGES_URL}"
-  publish: trial/public
diff --git a/CODEOWNERS b/CODEOWNERS
index 5d28d5ffa1b9557f8986cd51c4e9d56bee405fd1..75e5c4d123d36a94879700ca0caa64554772b26a 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -47,8 +47,5 @@
 /drupal_cms_seo_basic/
 /drupal_cms_seo_tools/
 
-[trial experience track] @mglaman
-/trial/
-
 [documentation] @amberhimesmatz @eojthebrave
 /docs/
diff --git a/drupal_cms_installer/drupal_cms_installer.profile b/drupal_cms_installer/drupal_cms_installer.profile
index 284f31cd3bf89cd28fe73fd959bbb204aed9816a..20e2bc84d12fdfab49331953bd9c9a51de0c8909 100644
--- a/drupal_cms_installer/drupal_cms_installer.profile
+++ b/drupal_cms_installer/drupal_cms_installer.profile
@@ -3,10 +3,8 @@
 declare(strict_types=1);
 
 use Drupal\Component\Utility\Random;
-use Drupal\Core\Extension\ModuleInstallerInterface;
 use Drupal\Core\File\FileUrlGeneratorInterface;
 use Drupal\Core\Installer\Form\SiteConfigureForm;
-use Drupal\Core\Installer\Form\SiteSettingsForm;
 use Drupal\Core\Recipe\Recipe;
 use Drupal\Core\Recipe\RecipeRunner;
 use Drupal\drupal_cms_installer\Form\RecipesForm;
@@ -24,9 +22,6 @@ function drupal_cms_installer_install_tasks(): array {
     ->addPsr4('Drupal\\drupal_cms_installer\\', __DIR__ . '/src');
 
   return [
-    'drupal_cms_installer_prepare_trial' => [
-      'run' => getenv('DRUPAL_CMS_TRIAL') ? INSTALL_TASK_RUN_IF_REACHED : INSTALL_TASK_SKIP,
-    ],
     'drupal_cms_installer_uninstall_myself' => [
       // As a final task, this profile should uninstall itself.
     ],
@@ -67,11 +62,6 @@ function drupal_cms_installer_install_tasks_alter(array &$tasks, array $install_
   // use the passed-in $install_state because it's not passed by reference.
   $GLOBALS['install_state']['parameters'] += ['langcode' => 'en'];
 
-  // The database settings form should be submitted programmatically in the
-  // trial experience.
-  $tasks['install_settings_form']['function'] = 'drupal_cms_installer_database_settings';
-  unset($tasks['install_settings_form']['type']);
-
   // Submit the site configuration form programmatically.
   $tasks['install_configure_form'] = [
     'function' => 'drupal_cms_installer_configure_site',
@@ -113,11 +103,6 @@ function drupal_cms_installer_apply_recipes(array &$install_state): array {
   $batch = install_profile_modules($install_state);
   $batch['title'] = t('Setting up your site');
 
-  // If we're installing for the trial, install the drupal_cms_trial module.
-  if (getenv('DRUPAL_CMS_TRIAL')) {
-    $batch['operations'][] = ['_install_module_batch', ['drupal_cms_trial', t('Trial experience module')]];
-  }
-
   $cookbook_path = \Drupal::root() . '/recipes';
 
   foreach ($install_state['parameters']['recipes'] as $recipe) {
@@ -130,22 +115,6 @@ function drupal_cms_installer_apply_recipes(array &$install_state): array {
   return $batch;
 }
 
-/**
- * Programmatically submits the database settings form if needed.
- */
-function drupal_cms_installer_database_settings(array &$install_state): ?array {
-  $was_interactive = $install_state['interactive'];
-  // If we're installing the in-browser trial, submit the form programmatically
-  // with SQLite as the selected driver.
-  if (getenv('DRUPAL_CMS_TRIAL')) {
-    $install_state['interactive'] = FALSE;
-    $install_state['forms']['install_settings_form']['driver'] = SQLITE_DRIVER;
-  }
-  $result = install_get_form(SiteSettingsForm::class, $install_state);
-  $install_state['interactive'] = $was_interactive;
-  return $result;
-}
-
 /**
  * Programmatically executes core's site configuration form.
  */
@@ -210,42 +179,6 @@ function drupal_cms_installer_library_info_alter(array &$libraries, string $exte
   }
 }
 
-/**
- * Makes configuration changes needed for the in-browser trial.
- */
-function drupal_cms_installer_prepare_trial(): void {
-  // Use a test mail collector, since the trial won't have access to sendmail.
-  \Drupal::configFactory()
-    ->getEditable('system.mail')
-    ->set('interface.default', 'test_mail_collector')
-    ->save();
-
-  // Disable CSS and JS aggregation.
-  \Drupal::configFactory()
-    ->getEditable('system.performance')
-    ->set('css.preprocess', FALSE)
-    ->set('js.preprocess', FALSE)
-    ->save();
-
-  // Enable verbose logging.
-  \Drupal::configFactory()
-    ->getEditable('system.logging')
-    ->set('error_level', 'verbose')
-    ->save();
-
-  // Disable things that the WebAssembly runtime doesn't (yet) support, like
-  // running external processes or making HTTP requests.
-  // @todo revisit once php-wasm maps HTTP requests from PHP to Fetch API.
-  \Drupal::service(ModuleInstallerInterface::class)->uninstall([
-    'automatic_updates',
-    'update',
-  ]);
-  \Drupal::configFactory()
-    ->getEditable('project_browser.admin_settings')
-    ->set('allow_ui_install', FALSE)
-    ->save();
-}
-
 /**
  * Uninstalls this install profile, as a final step.
  *
diff --git a/trial/.gitignore b/trial/.gitignore
deleted file mode 100644
index 183b7299a9ab05264785f126c721b4528abadbdc..0000000000000000000000000000000000000000
--- a/trial/.gitignore
+++ /dev/null
@@ -1,20 +0,0 @@
-*.zip
-/public/*.so
-/public/*.wasm
-/public/php-*
-/public/Php*
-/public/breakoutRequest.mjs
-/public/config.mjs
-/public/fsOps.mjs
-/public/msg-bus.mjs
-/public/parseResponse.mjs
-/public/resolveDependencies.mjs
-/public/webTransactions.mjs
-/public/OutputBuffer.mjs
-/public/_Event.mjs
-/public/service-worker.js
-/public/install-worker.js
-/public/worker.js.map
-/node_modules
-public/styles.css
-/build
diff --git a/trial/README.md b/trial/README.md
deleted file mode 100644
index 60d7aa42d6cfa1813ce66f21d68e6a7da625f908..0000000000000000000000000000000000000000
--- a/trial/README.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# Drupal CMS Trial Experience
-
-This contains the WebAssembly trial experience.
-
-## Run locally
-
-```shell
-ddev launch https://drupal-cms-trial.ddev.site
-```
-
-This will download the latest published Drupal CMS trial artifact and allow testing JavaScript changes.
-
-### Testing a custom artifact build
-
-```shell
-ddev build-trial
-# Use `local.html` to test the artifact.
-ddev launch https://drupal-cms-trial.ddev.site/local.html
-```
-
-## Tests
-
-The [cgi-install.test.js](tests/cgi-install.test.js) and [cgi-interactive-install.test.js](tests/cgi-interactive-install.test.js)
-allows running PhpCgiNode to test serving the trial over Node instead of the browser.
-
-This requires a `tests/fixtures/trial.zip` to be available. This can be downloaded from `https://git.drupalcode.org/api/v4/projects/157093/jobs/artifacts/0.x/raw/trial.zip?job=build+trial+artifact`
-or a custom build artifact.
-
-### Testing a custom build from source
-
-If a build is located at `tests/fixtures/drupal-cms` two debugging tests will run. This allows testing against actual
-code instead of having to build the artifact.
diff --git a/trial/artifact_assets/drupal_cms_trial/composer.json b/trial/artifact_assets/drupal_cms_trial/composer.json
deleted file mode 100644
index 736583ca6e7d5bba7a0b2c1eba34a38228771b58..0000000000000000000000000000000000000000
--- a/trial/artifact_assets/drupal_cms_trial/composer.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "name": "drupal/drupal_cms_trial",
-    "version": "dev-main",
-    "type": "drupal-custom-module",
-    "description": "Provides support code for the in-browser trial of Drupal CMS. Not meant for production use."
-}
diff --git a/trial/artifact_assets/drupal_cms_trial/drupal_cms_trial.services.yml b/trial/artifact_assets/drupal_cms_trial/drupal_cms_trial.services.yml
deleted file mode 100644
index 1e6029434a47a0b373a4f87225cfa76692376335..0000000000000000000000000000000000000000
--- a/trial/artifact_assets/drupal_cms_trial/drupal_cms_trial.services.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-services:
-  Drupal\drupal_cms_trial\OutgoingHttpInterceptor:
-    tags:
-      - { name: http_client_middleware }
diff --git a/trial/artifact_assets/drupal_cms_trial/oembed-providers.json b/trial/artifact_assets/drupal_cms_trial/oembed-providers.json
deleted file mode 100644
index f6c0d1a4eba48b36e9999d73b39c0a51399ff1fc..0000000000000000000000000000000000000000
--- a/trial/artifact_assets/drupal_cms_trial/oembed-providers.json
+++ /dev/null
@@ -1,4731 +0,0 @@
-[
-    {
-        "provider_name": "23HQ",
-        "provider_url": "http://www.23hq.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.23hq.com/*/photo/*"
-                ],
-                "url": "http://www.23hq.com/23/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "3Q",
-        "provider_url": "https://3q.video/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://playout.3qsdn.com/embed/*"
-                ],
-                "url": "https://playout.3qsdn.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Abraia",
-        "provider_url": "https://abraia.me",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://store.abraia.me/*"
-                ],
-                "url": "https://api.abraia.me/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Acast",
-        "provider_url": "https://embed.acast.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://play.acast.com/s/*"
-                ],
-                "url": "https://oembed.acast.com/v1/embed-player",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "ActBlue",
-        "provider_url": "https://secure.actblue.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://secure.actblue.com/donate/*"
-                ],
-                "url": "https://secure.actblue.com/cf/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Adilo",
-        "provider_url": "https://adilo.bigcommand.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://adilo.bigcommand.com/watch/*"
-                ],
-                "url": "https://adilo.bigcommand.com/web/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "afreecaTV",
-        "provider_url": "https://www.afreecatv.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://vod.afreecatv.com/player/",
-                    "https://v.afree.ca/ST/",
-                    "https://vod.afreecatv.com/ST/",
-                    "https://vod.afreecatv.com/PLAYER/STATION/",
-                    "https://play.afreecatv.com/"
-                ],
-                "url": "https://openapi.afreecatv.com/oembed/embedinfo",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Altium LLC",
-        "provider_url": "https://altium.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://altium.com/viewer/*"
-                ],
-                "url": "https://viewer.altium.com/shell/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Altru",
-        "provider_url": "https://www.altrulabs.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.altrulabs.com/*/*?answer_id=*",
-                    "https://app.altrulabs.com/player/*"
-                ],
-                "url": "https://api.altrulabs.com/api/v1/social/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "amCharts Live Editor",
-        "provider_url": "https://live.amcharts.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://live.amcharts.com/*",
-                    "https://live.amcharts.com/*"
-                ],
-                "url": "https://live.amcharts.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Amtraker",
-        "provider_url": "https://amtraker.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://amtraker.com/trains/*",
-                    "https://amtraker.com/trains/*/*",
-                    "https://*.amtraker.com/trains/*",
-                    "https://*.amtraker.com/trains/*/*"
-                ],
-                "url": "https://api.amtraker.com/v3/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Animatron",
-        "provider_url": "https://www.animatron.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.animatron.com/project/*",
-                    "https://animatron.com/project/*"
-                ],
-                "url": "https://animatron.com/oembed/json",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Animoto",
-        "provider_url": "http://animoto.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://animoto.com/play/*"
-                ],
-                "url": "http://animoto.com/oembeds/create"
-            }
-        ]
-    },
-    {
-        "provider_name": "AnnieMusic",
-        "provider_url": "https://anniemusic.app",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://anniemusic.app/t/*",
-                    "https://anniemusic.app/p/*"
-                ],
-                "url": "https://api.anniemusic.app/api/v1/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "ArcGIS StoryMaps",
-        "provider_url": "https://storymaps.arcgis.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://storymaps.arcgis.com/stories/*"
-                ],
-                "url": "https://storymaps.arcgis.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Archivos",
-        "provider_url": "https://app.archivos.digital",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.archivos.digital/app/view/*"
-                ],
-                "url": "https://app.archivos.digital/oembed/"
-            }
-        ]
-    },
-    {
-        "provider_name": "AssemblrWorld",
-        "provider_url": "https://assemblrworld.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.studio.assemblrworld.com/creation/*",
-                    "http://studio.assemblrworld.com/creation/*",
-                    "http://*.app-edu.assemblrworld.com/Creation/*",
-                    "http://app-edu.assemblrworld.com/Creation/*",
-                    "http://assemblr.world/*",
-                    "http://editor.assemblrworld.com/*",
-                    "http://*.assemblrworld.com/creation/*",
-                    "http://*.assemblrworld.com/Creation/*",
-                    "https://*.studio.assemblrworld.com/creation/*",
-                    "https://studio.assemblrworld.com/creation/*",
-                    "https://*.app-edu.assemblrworld.com/Creation/*",
-                    "https://app-edu.assemblrworld.com/Creation/*",
-                    "https://assemblr.world/*",
-                    "https://editor.assemblrworld.com/*",
-                    "https://*.assemblrworld.com/creation/*",
-                    "https://*.assemblrworld.com/Creation/*"
-                ],
-                "url": "https://studio.assemblrworld.com/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "audio.com",
-        "provider_url": "https://audio.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://audio.com/*",
-                    "https://www.audio.com/*",
-                    "http://audio.com/*",
-                    "http://www.audio.com/*"
-                ],
-                "url": "https://api.audio.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Audioboom",
-        "provider_url": "https://audioboom.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://audioboom.com/channels/*",
-                    "https://audioboom.com/channel/*",
-                    "https://audioboom.com/playlists/*",
-                    "https://audioboom.com/podcasts/*",
-                    "https://audioboom.com/podcast/*",
-                    "https://audioboom.com/posts/*",
-                    "https://audioboom.com/episodes/*"
-                ],
-                "url": "https://audioboom.com/publishing/oembed.{format}",
-                "formats": [
-                    "json",
-                    "xml"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "AudioClip",
-        "provider_url": "https://audioclip.naver.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://audioclip.naver.com/channels/*/clips/*",
-                    "https://audioclip.naver.com/audiobooks/*"
-                ],
-                "url": "https://audioclip.naver.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Audiomack",
-        "provider_url": "https://audiomack.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://audiomack.com/*/song/*",
-                    "https://audiomack.com/*/album/*",
-                    "https://audiomack.com/*/playlist/*"
-                ],
-                "url": "https://audiomack.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Audiomeans",
-        "provider_url": "https://audiomeans.fr",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://podcasts.audiomeans.fr/*"
-                ],
-                "url": "https://podcasts.audiomeans.fr/services/oembed",
-                "discovery": false,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Avocode",
-        "provider_url": "https://www.avocode.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.avocode.com/view/*"
-                ],
-                "url": "https://stage-embed.avocode.com/api/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Backtracks",
-        "provider_url": "https://backtracks.fm",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://backtracks.fm/*/*/e/*",
-                    "https://backtracks.fm/*/s/*/*",
-                    "https://backtracks.fm/*/*/*/*/e/*/*",
-                    "https://backtracks.fm/*",
-                    "http://backtracks.fm/*"
-                ],
-                "url": "https://backtracks.fm/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Balsamiq Cloud",
-        "provider_url": "https://balsamiq.cloud/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://balsamiq.cloud/*"
-                ],
-                "url": "https://balsamiq.cloud/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Beams.fm",
-        "provider_url": "http://beams.fm",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://beams.fm/*"
-                ],
-                "url": "https://api.beams.fm/oEmbed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Beautiful.AI",
-        "provider_url": "https://www.beautiful.ai/",
-        "endpoints": [
-            {
-                "url": "https://www.beautiful.ai/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Behance",
-        "provider_url": "https://www.behance.net",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.behance.net/gallery/*/*",
-                    "https://www.behance.net/*/services/*/*"
-                ],
-                "url": "https://www.behance.net/services/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "biqnetwork",
-        "provider_url": "https://biqapp.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://cloud.biqapp.com/*"
-                ],
-                "url": "https://biqapp.com/api/v1/video/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Blackfire.io",
-        "provider_url": "https://blackfire.io",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://blackfire.io/profiles/*/graph",
-                    "https://blackfire.io/profiles/compare/*/graph"
-                ],
-                "url": "https://blackfire.io/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Blogcast",
-        "provider_url": "https://blogcast.host/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://blogcast.host/embed/*",
-                    "https://blogcast.host/embedly/*"
-                ],
-                "url": "https://blogcast.host/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Bluesky Social",
-        "provider_url": "https://bsky.app",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://bsky.app/profile/*/post/*"
-                ],
-                "url": "https://embed.bsky.app/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Bookingmood",
-        "provider_url": "https://www.bookingmood.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.bookingmood.com/embed/*/*"
-                ],
-                "url": "https://bookingmood.com/api/oembed",
-                "formats": [
-                    "json",
-                    "xml"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Box Office Buz",
-        "provider_url": "http://boxofficebuz.com",
-        "endpoints": [
-            {
-                "url": "http://boxofficebuz.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "BrioVR",
-        "provider_url": "https://view.briovr.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://view.briovr.com/api/v1/worlds/oembed/*"
-                ],
-                "url": "https://view.briovr.com/api/v1/worlds/oembed/"
-            }
-        ]
-    },
-    {
-        "provider_name": "Bumper",
-        "provider_url": "http://www.bumper.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.bumper.com/oembed/bumper",
-                    "https://www.bumper.com/oembed-s/bumper"
-                ],
-                "url": "https://www.bumper.com/oembed/bumper",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Bunny",
-        "provider_url": "https://bunny.net/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://iframe.mediadelivery.net/*",
-                    "http://iframe.mediadelivery.net/*",
-                    "https://video.bunnycdn.com/*",
-                    "http://video.bunnycdn.com/*"
-                ],
-                "url": "https://video.bunnycdn.com/OEmbed",
-                "formats": [
-                    "json"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Buttondown",
-        "provider_url": "https://buttondown.email/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://buttondown.email/*"
-                ],
-                "url": "https://buttondown.email/embed",
-                "formats": [
-                    "json"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Byzart Project",
-        "provider_url": "https://cmc.byzart.eu",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://cmc.byzart.eu/files/*"
-                ],
-                "url": "https://cmc.byzart.eu/oembed/",
-                "discovery": false
-            }
-        ]
-    },
-    {
-        "provider_name": "Cacoo",
-        "provider_url": "https://cacoo.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://cacoo.com/diagrams/*"
-                ],
-                "url": "http://cacoo.com/oembed.{format}"
-            }
-        ]
-    },
-    {
-        "provider_name": "Canva",
-        "provider_url": "https://www.canva.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.canva.com/design/*/view"
-                ],
-                "url": "https://www.canva.com/_oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Cardinal Blue",
-        "provider_url": "https://minesweeper.today/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://minesweeper.today/*",
-                    "https://minesweeper.today/*"
-                ],
-                "url": "https://minesweeper.today/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "CatBoat",
-        "provider_url": "http://img.catbo.at/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://img.catbo.at/*"
-                ],
-                "url": "http://img.catbo.at/oembed.json",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Celero",
-        "provider_url": "https://www.celero.io",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://embeds.celero.io/*"
-                ],
-                "url": "https://api.celero.io/api/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Ceros",
-        "provider_url": "http://www.ceros.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://view.ceros.com/*",
-                    "https://view.ceros.com/*"
-                ],
-                "url": "http://view.ceros.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Chainflix",
-        "provider_url": "https://chainflix.net",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://chainflix.net/video/*",
-                    "https://chainflix.net/video/embed/*",
-                    "https://*.chainflix.net/video/*",
-                    "https://*.chainflix.net/video/embed/*"
-                ],
-                "url": "https://www.chainflix.net/video/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "ChartBlocks",
-        "provider_url": "http://www.chartblocks.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://public.chartblocks.com/c/*"
-                ],
-                "url": "http://embed.chartblocks.com/1.0/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "chirbit.com",
-        "provider_url": "http://www.chirbit.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://chirb.it/*"
-                ],
-                "url": "http://chirb.it/oembed.{format}",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "CHROCO",
-        "provider_url": "https://chroco.ooo/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://chroco.ooo/mypage/*",
-                    "https://chroco.ooo/story/*"
-                ],
-                "url": "https://chroco.ooo/embed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "CircuitLab",
-        "provider_url": "https://www.circuitlab.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.circuitlab.com/circuit/*"
-                ],
-                "url": "https://www.circuitlab.com/circuit/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Clipland",
-        "provider_url": "http://www.clipland.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.clipland.com/v/*",
-                    "https://www.clipland.com/v/*"
-                ],
-                "url": "https://www.clipland.com/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Clyp",
-        "provider_url": "http://clyp.it/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://clyp.it/*",
-                    "http://clyp.it/playlist/*"
-                ],
-                "url": "http://api.clyp.it/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "CoCo Corp",
-        "provider_url": "https://ilovecoco.video",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.ilovecoco.video/*/embed"
-                ],
-                "url": "https://app.ilovecoco.video/api/oembed.{format}",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "CodeHS",
-        "provider_url": "http://www.codehs.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://codehs.com/editor/share_abacus/*"
-                ],
-                "url": "https://codehs.com/api/sharedprogram/1/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "CodePen",
-        "provider_url": "https://codepen.io",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://codepen.io/*",
-                    "https://codepen.io/*"
-                ],
-                "url": "https://codepen.io/api/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Codepoints",
-        "provider_url": "https://codepoints.net",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://codepoints.net/*",
-                    "https://codepoints.net/*",
-                    "http://www.codepoints.net/*",
-                    "https://www.codepoints.net/*"
-                ],
-                "url": "https://codepoints.net/api/v1/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "CodeSandbox",
-        "provider_url": "https://codesandbox.io",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://codesandbox.io/s/*",
-                    "https://codesandbox.io/embed/*"
-                ],
-                "url": "https://codesandbox.io/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "CollegeHumor",
-        "provider_url": "http://www.collegehumor.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.collegehumor.com/video/*"
-                ],
-                "url": "http://www.collegehumor.com/oembed.{format}",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Commaful",
-        "provider_url": "https://commaful.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://commaful.com/play/*"
-                ],
-                "url": "https://commaful.com/api/oembed/"
-            }
-        ]
-    },
-    {
-        "provider_name": "Coub",
-        "provider_url": "http://coub.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://coub.com/view/*",
-                    "http://coub.com/embed/*"
-                ],
-                "url": "http://coub.com/api/oembed.{format}"
-            }
-        ]
-    },
-    {
-        "provider_name": "Crowd Ranking",
-        "provider_url": "http://crowdranking.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://crowdranking.com/*/*"
-                ],
-                "url": "http://crowdranking.com/api/oembed.{format}"
-            }
-        ]
-    },
-    {
-        "provider_name": "Crumb.sh",
-        "provider_url": "https://crumb.sh",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://crumb.sh/*"
-                ],
-                "url": "https://crumb.sh/oembed/"
-            }
-        ]
-    },
-    {
-        "provider_name": "Cueup DJ Booking",
-        "provider_url": "https://cueup.io",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://cueup.io/user/*/sounds/*"
-                ],
-                "url": "https://gql.cueup.io/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Curated",
-        "provider_url": "https://curated.co/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.curated.co/*"
-                ],
-                "url": "https://api.curated.co/oembed",
-                "formats": [
-                    "json"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "CustomerDB",
-        "provider_url": "http://customerdb.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.customerdb.com/share/*"
-                ],
-                "url": "https://app.customerdb.com/embed"
-            }
-        ]
-    },
-    {
-        "provider_name": "dadan",
-        "provider_url": "https://www.dadan.io",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.dadan.io/*",
-                    "https://stage.dadan.io/*"
-                ],
-                "url": "https://app.dadan.io/api/video/oembed",
-                "discovery": true,
-                "formats": [
-                    "json",
-                    "xml"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Dailymotion",
-        "provider_url": "https://www.dailymotion.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.dailymotion.com/video/*",
-                    "https://geo.dailymotion.com/player.html?video=*"
-                ],
-                "url": "https://www.dailymotion.com/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "DALEXNI",
-        "provider_url": "https://dalexni.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://dalexni.com/i/*"
-                ],
-                "url": "https://dalexni.com/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Datawrapper",
-        "provider_url": "http://www.datawrapper.de",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://datawrapper.dwcdn.net/*"
-                ],
-                "url": "https://api.datawrapper.de/v3/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Deseret News",
-        "provider_url": "https://www.deseret.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.deseret.com/*"
-                ],
-                "url": "https://embed.deseret.com/"
-            }
-        ]
-    },
-    {
-        "provider_name": "Deviantart.com",
-        "provider_url": "http://www.deviantart.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.deviantart.com/art/*",
-                    "http://*.deviantart.com/*#/d*",
-                    "http://fav.me/*",
-                    "http://sta.sh/*",
-                    "https://*.deviantart.com/art/*",
-                    "https://*.deviantart.com/*/art/*",
-                    "https://sta.sh/*",
-                    "https://*.deviantart.com/*#/d*"
-                ],
-                "url": "http://backend.deviantart.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Digiteka",
-        "provider_url": "https://www.ultimedia.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.ultimedia.com/central/video/edit/id/*/topic_id/*/",
-                    "https://www.ultimedia.com/default/index/videogeneric/id/*/showtitle/1/viewnc/1",
-                    "https://www.ultimedia.com/default/index/videogeneric/id/*"
-                ],
-                "url": "https://www.ultimedia.com/api/search/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "DocDroid",
-        "provider_url": "https://www.docdroid.net/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.docdroid.net/*",
-                    "http://*.docdroid.net/*",
-                    "https://docdro.id/*",
-                    "http://docdro.id/*",
-                    "https://*.docdroid.com/*",
-                    "http://*.docdroid.com/*"
-                ],
-                "url": "https://www.docdroid.net/api/oembed",
-                "formats": [
-                    "json"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Docswell",
-        "provider_url": "https://docswell.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://docswell.com/s/*/*",
-                    "https://docswell.com/s/*/*",
-                    "http://www.docswell.com/s/*/*",
-                    "https://www.docswell.com/s/*/*"
-                ],
-                "url": "https://www.docswell.com/service/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Dotsub",
-        "provider_url": "http://dotsub.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://dotsub.com/view/*"
-                ],
-                "url": "http://dotsub.com/services/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Dream Broker",
-        "provider_url": "https://dreambroker.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.dreambroker.com/channel/*/*"
-                ],
-                "url": "https://dreambroker.com/channel/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "DTube",
-        "provider_url": "https://d.tube/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://d.tube/v/*"
-                ],
-                "url": "https://api.d.tube/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "EchoesHQ",
-        "provider_url": "https://echoeshq.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://app.echoeshq.com/embed/*"
-                ],
-                "url": "https://api.echoeshq.com/oembed",
-                "formats": [
-                    "json",
-                    "xml"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "eduMedia",
-        "provider_url": "https://www.edumedia-sciences.com/",
-        "endpoints": [
-            {
-                "url": "https://www.edumedia-sciences.com/oembed.json",
-                "discovery": true
-            },
-            {
-                "url": "https://www.edumedia-sciences.com/oembed.xml",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "EgliseInfo",
-        "provider_url": "http://egliseinfo.catholique.fr/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://egliseinfo.catholique.fr/*"
-                ],
-                "url": "http://egliseinfo.catholique.fr/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Embedery",
-        "provider_url": "https://embedery.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://embedery.com/widget/*"
-                ],
-                "url": "https://embedery.com/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Ethfiddle",
-        "provider_url": "https://www.ethfiddle.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://ethfiddle.com/*"
-                ],
-                "url": "https://ethfiddle.com/services/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "EventLive",
-        "provider_url": "https://eventlive.pro",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://evt.live/*",
-                    "https://evt.live/*/*",
-                    "https://live.eventlive.pro/*",
-                    "https://live.eventlive.pro/*/*"
-                ],
-                "url": "https://evt.live/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "everviz",
-        "provider_url": "https://everviz.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.everviz.com/embed/*",
-                    "http://app.everviz.com/embed/*"
-                ],
-                "url": "https://api.everviz.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Ex.Co",
-        "provider_url": "https://ex.co",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.ex.co/stories/*",
-                    "https://www.playbuzz.com/*"
-                ],
-                "url": "https://oembed.ex.co/item",
-                "discovery": false
-            }
-        ]
-    },
-    {
-        "provider_name": "Eyrie",
-        "provider_url": "https://eyrie.io/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://eyrie.io/board/*",
-                    "https://eyrie.io/sparkfun/*"
-                ],
-                "url": "https://eyrie.io/v1/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Facebook",
-        "provider_url": "https://www.facebook.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.facebook.com/*/posts/*",
-                    "https://www.facebook.com/*/activity/*",
-                    "https://www.facebook.com/*/photos/*",
-                    "https://www.facebook.com/photo.php?fbid=*",
-                    "https://www.facebook.com/photos/*",
-                    "https://www.facebook.com/permalink.php?story_fbid=*",
-                    "https://www.facebook.com/media/set?set=*",
-                    "https://www.facebook.com/questions/*",
-                    "https://www.facebook.com/notes/*/*/*"
-                ],
-                "url": "https://graph.facebook.com/v16.0/oembed_post",
-                "discovery": false
-            },
-            {
-                "schemes": [
-                    "https://www.facebook.com/*/videos/*",
-                    "https://www.facebook.com/video.php?id=*",
-                    "https://www.facebook.com/video.php?v=*"
-                ],
-                "url": "https://graph.facebook.com/v16.0/oembed_video",
-                "discovery": false
-            },
-            {
-                "schemes": [
-                    "https://www.facebook.com/*"
-                ],
-                "url": "https://graph.facebook.com/v16.0/oembed_page",
-                "discovery": false
-            }
-        ]
-    },
-    {
-        "provider_name": "Fader",
-        "provider_url": "https://app.getfader.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.getfader.com/projects/*/publish"
-                ],
-                "url": "https://app.getfader.com/api/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Faithlife TV",
-        "provider_url": "https://faithlifetv.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://faithlifetv.com/items/*",
-                    "https://faithlifetv.com/items/resource/*/*",
-                    "https://faithlifetv.com/media/*",
-                    "https://faithlifetv.com/media/assets/*",
-                    "https://faithlifetv.com/media/resource/*/*"
-                ],
-                "url": "https://faithlifetv.com/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Figma",
-        "provider_url": "https://www.figma.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.figma.com/file/*"
-                ],
-                "url": "https://www.figma.com/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Firework",
-        "provider_url": "https://fireworktv.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.fireworktv.com/*",
-                    "https://*.fireworktv.com/embed/*/v/*"
-                ],
-                "url": "https://www.fireworktv.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "FITE",
-        "provider_url": "https://www.fite.tv/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.fite.tv/watch/*"
-                ],
-                "url": "https://www.fite.tv/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Flat",
-        "provider_url": "https://flat.io",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://flat.io/score/*",
-                    "https://*.flat.io/score/*"
-                ],
-                "url": "https://flat.io/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Flickr",
-        "provider_url": "https://www.flickr.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.flickr.com/photos/*",
-                    "http://flic.kr/p/*",
-                    "http://flic.kr/s/*",
-                    "https://*.flickr.com/photos/*",
-                    "https://flic.kr/p/*",
-                    "https://flic.kr/s/*",
-                    "https://*.*.flickr.com/*/*",
-                    "http://*.*.flickr.com/*/*"
-                ],
-                "url": "https://www.flickr.com/services/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Flourish",
-        "provider_url": "https://flourish.studio/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://public.flourish.studio/visualisation/*",
-                    "https://public.flourish.studio/story/*"
-                ],
-                "url": "https://app.flourish.studio/api/v1/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "FlowHubOrg",
-        "provider_url": "https://flows.flowhub.org",
-        "endpoints": [
-            {
-                "url": "https://flowhub.org/o/embed",
-                "schemes": [
-                    "https://flowhub.org/f/*",
-                    "https://flowhub.org/s/*"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Fooday",
-        "provider_url": "https://fooday.app",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://fooday.app/*/reviews/*",
-                    "https://fooday.app/*/spots/*"
-                ],
-                "url": "https://fooday.app/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "FOX SPORTS Australia",
-        "provider_url": "http://www.foxsports.com.au",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://fiso.foxsports.com.au/isomorphic-widget/*",
-                    "https://fiso.foxsports.com.au/isomorphic-widget/*"
-                ],
-                "url": "https://fiso.foxsports.com.au/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "FrameBuzz",
-        "provider_url": "https://framebuzz.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://framebuzz.com/v/*",
-                    "https://framebuzz.com/v/*"
-                ],
-                "url": "https://framebuzz.com/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Framer",
-        "provider_url": "https://www.framer.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://framer.com/share/*",
-                    "https://framer.com/embed/*"
-                ],
-                "url": "https://api.framer.com/web/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Geograph Britain and Ireland",
-        "provider_url": "https://www.geograph.org.uk/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.geograph.org.uk/*",
-                    "http://*.geograph.co.uk/*",
-                    "http://*.geograph.ie/*",
-                    "http://*.wikimedia.org/*_geograph.org.uk_*"
-                ],
-                "url": "http://api.geograph.org.uk/api/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Geograph Channel Islands",
-        "provider_url": "http://channel-islands.geograph.org/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.geograph.org.gg/*",
-                    "http://*.geograph.org.je/*",
-                    "http://channel-islands.geograph.org/*",
-                    "http://channel-islands.geographs.org/*",
-                    "http://*.channel.geographs.org/*"
-                ],
-                "url": "http://www.geograph.org.gg/api/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Geograph Germany",
-        "provider_url": "http://geo-en.hlipp.de/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://geo-en.hlipp.de/*",
-                    "http://geo.hlipp.de/*",
-                    "http://germany.geograph.org/*"
-                ],
-                "url": "http://geo.hlipp.de/restapi.php/api/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Getty Images",
-        "provider_url": "http://www.gettyimages.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://gty.im/*"
-                ],
-                "url": "http://embed.gettyimages.com/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Gifnote",
-        "provider_url": "https://www.gifnote.com/",
-        "endpoints": [
-            {
-                "url": "https://www.gifnote.com/services/oembed",
-                "schemes": [
-                    "https://www.gifnote.com/play/*"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "GIPHY",
-        "provider_url": "https://giphy.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://giphy.com/gifs/*",
-                    "https://giphy.com/clips/*",
-                    "http://gph.is/*",
-                    "https://media.giphy.com/media/*/giphy.gif"
-                ],
-                "url": "https://giphy.com/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "GloriaTV",
-        "provider_url": "https://gloria.tv/",
-        "endpoints": [
-            {
-                "url": "https://gloria.tv/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "GMetri",
-        "provider_url": "https://www.gmetri.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://view.gmetri.com/*",
-                    "https://*.gmetri.com/*"
-                ],
-                "url": "https://embed.gmetri.com/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Gong",
-        "provider_url": "https://www.gong.io/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.gong.io/call?id=*"
-                ],
-                "url": "https://app.gong.io/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Grain",
-        "provider_url": "https://grain.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://grain.co/highlight/*",
-                    "https://grain.co/share/*",
-                    "https://grain.com/share/*"
-                ],
-                "url": "https://api.grain.com/_/api/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "GT Channel",
-        "provider_url": "https://gtchannel.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://gtchannel.com/watch/*"
-                ],
-                "url": "https://api.luminery.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Gumlet",
-        "provider_url": "https://www.gumlet.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://gumlet.tv/watch/*",
-                    "https://www.gumlet.com/watch/*",
-                    "https://play.gumlet.io/embed/*"
-                ],
-                "url": "https://api.gumlet.com/v1/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Gyazo",
-        "provider_url": "https://gyazo.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://gyazo.com/*"
-                ],
-                "url": "https://api.gyazo.com/api/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "HASH",
-        "provider_url": "https://hash.ai",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://core.hash.ai/@*"
-                ],
-                "url": "https://api.hash.ai/oembed",
-                "discovery": false
-            }
-        ]
-    },
-    {
-        "provider_name": "hearthis.at",
-        "provider_url": "https://hearthis.at/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://hearthis.at/*/*/",
-                    "https://hearthis.at/*/set/*/"
-                ],
-                "url": "https://hearthis.at/oembed/?format=json",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Heyzine",
-        "provider_url": "https://heyzine.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://heyzine.com/flip-book/*",
-                    "https://*.hflip.co/*",
-                    "https://*.aflip.in/*"
-                ],
-                "url": "https://heyzine.com/api1/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "hihaho",
-        "provider_url": "https://www.hihaho.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://player.hihaho.com/*"
-                ],
-                "url": "https://player.hihaho.com/services/oembed",
-                "formats": [
-                    "json",
-                    "xml"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "HippoVideo",
-        "provider_url": "https://hippovideo.io",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.hippovideo.io/*",
-                    "https://*.hippovideo.io/*"
-                ],
-                "url": "https://www.hippovideo.io/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Homey",
-        "provider_url": "https://homey.app",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://homey.app/f/*",
-                    "https://homey.app/*/flow/*"
-                ],
-                "url": "https://homey.app/api/oembed/flow",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Hopvue",
-        "provider_url": "https://www.hopvue.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.hopvue.com/*"
-                ],
-                "url": "https://portal.hopvue.com/api/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "HuffDuffer",
-        "provider_url": "http://huffduffer.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://huffduffer.com/*/*"
-                ],
-                "url": "http://huffduffer.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Hulu",
-        "provider_url": "http://www.hulu.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.hulu.com/watch/*"
-                ],
-                "url": "http://www.hulu.com/api/oembed.{format}"
-            }
-        ]
-    },
-    {
-        "provider_name": "Ideamapper",
-        "provider_url": "https://ideamapper.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://oembed.ideamapper.com/*"
-                ],
-                "url": "https://oembed.ideamapper.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Idomoo",
-        "provider_url": "https://idomoo.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.idomoo.com/*"
-                ],
-                "url": "https://oembed.idomoo.com/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "iFixit",
-        "provider_url": "http://www.iFixit.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.ifixit.com/Guide/View/*"
-                ],
-                "url": "http://www.ifixit.com/Embed"
-            }
-        ]
-    },
-    {
-        "provider_name": "IFTTT",
-        "provider_url": "http://www.ifttt.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://ifttt.com/recipes/*"
-                ],
-                "url": "http://www.ifttt.com/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "iHeartRadio",
-        "provider_url": "https://www.iheart.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.iheart.com/podcast/*/*"
-                ],
-                "url": "https://www.iheart.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "iMenuPro",
-        "provider_url": "https://imenupro.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://qr.imenupro.com/*",
-                    "https://qr.imenupro.com/*"
-                ],
-                "url": "https://qr.imenupro.com/api/oembed",
-                "formats": [
-                    "json"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Incredible",
-        "provider_url": "https://incredible.dev",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://incredible.dev/watch/*"
-                ],
-                "url": "https://oembed.incredible.dev/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Indaco",
-        "provider_url": "https://player.indacolive.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://player.indacolive.com/player/jwp/clients/*"
-                ],
-                "url": "https://player.indacolive.com/services/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Infogram",
-        "provider_url": "https://infogram.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://infogram.com/*"
-                ],
-                "url": "https://infogram.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Infoveave",
-        "provider_url": "https://infoveave.net/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.infoveave.net/E/*",
-                    "https://*.infoveave.net/P/*"
-                ],
-                "url": "https://infoveave.net/services/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Injurymap",
-        "provider_url": "https://www.injurymap.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.injurymap.com/exercises/*"
-                ],
-                "url": "https://www.injurymap.com/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Inoreader",
-        "provider_url": "https://www.inoreader.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.inoreader.com/oembed/"
-                ],
-                "url": "https://www.inoreader.com/oembed/api/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "inphood",
-        "provider_url": "http://inphood.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.inphood.com/*"
-                ],
-                "url": "http://api.inphood.com/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Insight Timer",
-        "provider_url": "https://insighttimer.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://insighttimer.com/*"
-                ],
-                "url": "https://widgets.insighttimer.com/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Instagram",
-        "provider_url": "https://instagram.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://instagram.com/*/p/*,",
-                    "http://www.instagram.com/*/p/*,",
-                    "https://instagram.com/*/p/*,",
-                    "https://www.instagram.com/*/p/*,",
-                    "http://instagram.com/p/*",
-                    "http://instagr.am/p/*",
-                    "http://www.instagram.com/p/*",
-                    "http://www.instagr.am/p/*",
-                    "https://instagram.com/p/*",
-                    "https://instagr.am/p/*",
-                    "https://www.instagram.com/p/*",
-                    "https://www.instagr.am/p/*",
-                    "http://instagram.com/tv/*",
-                    "http://instagr.am/tv/*",
-                    "http://www.instagram.com/tv/*",
-                    "http://www.instagr.am/tv/*",
-                    "https://instagram.com/tv/*",
-                    "https://instagr.am/tv/*",
-                    "https://www.instagram.com/tv/*",
-                    "https://www.instagr.am/tv/*",
-                    "http://www.instagram.com/reel/*",
-                    "https://www.instagram.com/reel/*",
-                    "http://instagram.com/reel/*",
-                    "https://instagram.com/reel/*",
-                    "http://instagr.am/reel/*",
-                    "https://instagr.am/reel/*"
-                ],
-                "url": "https://graph.facebook.com/v16.0/instagram_oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Insticator Inc",
-        "provider_url": "https://www.insticator.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://ppa.insticator.com/embed-unit/*"
-                ],
-                "url": "https://www.insticator.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Issuu",
-        "provider_url": "https://issuu.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://issuu.com/*/docs/*"
-                ],
-                "url": "https://issuu.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Itabtech infosys",
-        "provider_url": "https://samay.itabtechinfosys.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://samay.itabtechinfosys.com/*"
-                ],
-                "url": "https://samay.itabtechinfosys.com/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "itemis CREATE",
-        "provider_url": "https://play.itemis.io",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://play.itemis.io/*"
-                ],
-                "url": "https://create.storage.api.itemis.io/api/embed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Jovian",
-        "provider_url": "https://jovian.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://jovian.ml/*",
-                    "https://jovian.ml/viewer*",
-                    "https://*.jovian.ml/*",
-                    "https://jovian.ai/*",
-                    "https://jovian.ai/viewer*",
-                    "https://*.jovian.ai/*",
-                    "https://jovian.com/*",
-                    "https://jovian.com/viewer*",
-                    "https://*.jovian.com/*"
-                ],
-                "url": "https://api.jovian.com/oembed.json",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "KakaoTv",
-        "provider_url": "https://tv.kakao.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://tv.kakao.com/channel/*/cliplink/*",
-                    "https://tv.kakao.com/m/channel/*/cliplink/*",
-                    "https://tv.kakao.com/channel/v/*",
-                    "https://tv.kakao.com/channel/*/livelink/*",
-                    "https://tv.kakao.com/m/channel/*/livelink/*",
-                    "https://tv.kakao.com/channel/l/*"
-                ],
-                "url": "https://tv.kakao.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Kickstarter",
-        "provider_url": "http://www.kickstarter.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.kickstarter.com/projects/*"
-                ],
-                "url": "http://www.kickstarter.com/services/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Kidoju",
-        "provider_url": "https://www.kidoju.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.kidoju.com/en/x/*/*",
-                    "https://www.kidoju.com/fr/x/*/*"
-                ],
-                "url": "https://www.kidoju.com/api/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Kirim.Email",
-        "provider_url": "https://kirim.email/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://halaman.email/form/*",
-                    "https://aplikasi.kirim.email/form/*"
-                ],
-                "url": "https://halaman.email/service/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Kit",
-        "provider_url": "https://kit.co/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://kit.co/*/*",
-                    "https://kit.co/*/*"
-                ],
-                "url": "https://embed.kit.co/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Kitchenbowl",
-        "provider_url": "http://www.kitchenbowl.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.kitchenbowl.com/recipe/*"
-                ],
-                "url": "http://www.kitchenbowl.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "kmdr",
-        "provider_url": "https://kmdr.sh",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.kmdr.sh/h/*",
-                    "https://app.kmdr.sh/history/*"
-                ],
-                "url": "https://api.kmdr.sh/services/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Knacki",
-        "provider_url": "http://jdr.knacki.info",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://jdr.knacki.info/meuh/*",
-                    "https://jdr.knacki.info/meuh/*"
-                ],
-                "url": "https://jdr.knacki.info/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Knowledge Pad",
-        "provider_url": "https://knowledgepad.co/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://knowledgepad.co/#/knowledge/*"
-                ],
-                "url": "https://api.spoonacular.com/knowledge/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Kooapp",
-        "provider_url": "https://kooapp.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.kooapp.com/koo/*",
-                    "http://*.kooapp.com/koo/*"
-                ],
-                "url": "https://embed.kooapp.com/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Kurozora",
-        "provider_url": "https://kurozora.app/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://kurozora.app/episodes/*",
-                    "https://kurozora.app/songs/*"
-                ],
-                "url": "https://kurozora.app/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "LearningApps.org",
-        "provider_url": "http://learningapps.org/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://learningapps.org/*"
-                ],
-                "url": "http://learningapps.org/oembed.php",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "LeMans.Pod",
-        "provider_url": "https://umotion-test.univ-lemans.fr/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://umotion-test.univ-lemans.fr/video/*"
-                ],
-                "url": "https://umotion-test.univ-lemans.fr/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Lille.Pod",
-        "provider_url": "https://pod.univ-lille.fr/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://pod.univ-lille.fr/video/*"
-                ],
-                "url": "https://pod.univ-lille.fr/video/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Line Place",
-        "provider_url": "https://place.line.me",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://place.line.me/businesses/*"
-                ],
-                "url": "https://place.line.me/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Livestream",
-        "provider_url": "https://livestream.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://livestream.com/accounts/*/events/*",
-                    "https://livestream.com/accounts/*/events/*/videos/*",
-                    "https://livestream.com/*/events/*",
-                    "https://livestream.com/*/events/*/videos/*",
-                    "https://livestream.com/*/*",
-                    "https://livestream.com/*/*/videos/*"
-                ],
-                "url": "https://livestream.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "LottieFiles",
-        "provider_url": "https://lottiefiles.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://lottiefiles.com/*",
-                    "https://*.lottiefiles.com/*",
-                    "https://*.lottie.host/*",
-                    "https://lottie.host/*"
-                ],
-                "url": "https://embed.lottiefiles.com/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Ludus",
-        "provider_url": "https://ludus.one",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.ludus.one/*"
-                ],
-                "url": "https://app.ludus.one/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Lumiere",
-        "provider_url": "https://latd.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.lumiere.is/v/*"
-                ],
-                "url": "https://admin.lumiere.is/api/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "MathEmbed",
-        "provider_url": "http://mathembed.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://mathembed.com/latex?inputText=*",
-                    "http://mathembed.com/latex?inputText=*"
-                ],
-                "url": "http://mathembed.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Matterport",
-        "provider_url": "https://matterport.com/",
-        "endpoints": [
-            {
-                "url": "https://my.matterport.com/api/v1/models/oembed/",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "me.me",
-        "provider_url": "https://me.me/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://me.me/i/*"
-                ],
-                "url": "https://me.me/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Mediastream",
-        "provider_url": "https://mdstrm.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://mdstrm.com/embed/*",
-                    "https://mdstrm.com/live-stream/*",
-                    "https://mdstrm.com/image/*"
-                ],
-                "url": "https://mdstrm.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Medienarchiv der K\u00fcnste - Z\u00fcrcher Hochschule der K\u00fcnste",
-        "provider_url": "https://medienarchiv.zhdk.ch/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://medienarchiv.zhdk.ch/entries/*"
-                ],
-                "url": "https://medienarchiv.zhdk.ch/oembed.{format}",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Mermaid Ink",
-        "provider_url": "https://mermaid.ink",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://mermaid.ink/img/*",
-                    "https://mermaid.ink/svg/*"
-                ],
-                "url": "https://mermaid.ink/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Microsoft Stream",
-        "provider_url": "https://stream.microsoft.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.microsoftstream.com/video/*",
-                    "https://*.microsoftstream.com/channel/*"
-                ],
-                "url": "https://web.microsoftstream.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Minerva",
-        "provider_url": "https://www.minervaknows.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.minervaknows.com/featured-recipes/*",
-                    "https://www.minervaknows.com/themes/*",
-                    "https://www.minervaknows.com/themes/*/recipes/*",
-                    "https://app.minervaknows.com/recipes/*",
-                    "https://app.minervaknows.com/recipes/*/follow"
-                ],
-                "url": "https://oembed.minervaknows.com",
-                "formats": [
-                    "json"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Miro",
-        "provider_url": "https://miro.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://miro.com/app/board/*"
-                ],
-                "url": "https://miro.com/api/v1/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "MixCloud",
-        "provider_url": "https://mixcloud.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.mixcloud.com/*/*/",
-                    "https://www.mixcloud.com/*/*/"
-                ],
-                "url": "https://www.mixcloud.com/oembed/"
-            }
-        ]
-    },
-    {
-        "provider_name": "Mixpanel",
-        "provider_url": "https://mixpanel.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://mixpanel.com/*"
-                ],
-                "url": "https://mixpanel.com/api/app/embed/oembed/"
-            }
-        ]
-    },
-    {
-        "provider_name": "Moby Picture",
-        "provider_url": "http://www.mobypicture.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.mobypicture.com/user/*/view/*",
-                    "http://moby.to/*"
-                ],
-                "url": "http://api.mobypicture.com/oEmbed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Music Box Maniacs",
-        "provider_url": "https://musicboxmaniacs.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://musicboxmaniacs.com/explore/melody/*"
-                ],
-                "url": "https://musicboxmaniacs.com/embed/",
-                "formats": [
-                    "json"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "myBeweeg",
-        "provider_url": "https://mybeweeg.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://mybeweeg.com/w/*"
-                ],
-                "url": "https://mybeweeg.com/services/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "MySQL Visual Explain",
-        "provider_url": "https://mysqlexplain.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://mysqlexplain.com/explain/*",
-                    "https://embed.mysqlexplain.com/explain/*"
-                ],
-                "url": "https://api.mysqlexplain.com/v2/oembed.json",
-                "formats": [
-                    "json"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Namchey",
-        "provider_url": "https://namchey.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://namchey.com/embeds/*"
-                ],
-                "url": "https://namchey.com/api/oembed",
-                "formats": [
-                    "json",
-                    "xml"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "nanoo.tv",
-        "provider_url": "https://www.nanoo.tv/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.nanoo.tv/link/*",
-                    "http://nanoo.tv/link/*",
-                    "http://*.nanoo.pro/link/*",
-                    "http://nanoo.pro/link/*",
-                    "https://*.nanoo.tv/link/*",
-                    "https://nanoo.tv/link/*",
-                    "https://*.nanoo.pro/link/*",
-                    "https://nanoo.pro/link/*",
-                    "http://media.zhdk.ch/signatur/*",
-                    "http://new.media.zhdk.ch/signatur/*",
-                    "https://media.zhdk.ch/signatur/*",
-                    "https://new.media.zhdk.ch/signatur/*"
-                ],
-                "url": "https://www.nanoo.tv/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Nasjonalbiblioteket",
-        "provider_url": "https://www.nb.no/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.nb.no/items/*"
-                ],
-                "url": "https://api.nb.no/catalog/v1/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Natural Atlas",
-        "provider_url": "https://naturalatlas.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://naturalatlas.com/*",
-                    "https://naturalatlas.com/*/*",
-                    "https://naturalatlas.com/*/*/*",
-                    "https://naturalatlas.com/*/*/*/*"
-                ],
-                "url": "https://naturalatlas.com/oembed.{format}",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "NDLA - Norwegian Digital Learning Arena",
-        "provider_url": "https://ndla.no",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://ndla.no/*",
-                    "https://ndla.no/article/*",
-                    "https://ndla.no/audio/*",
-                    "https://ndla.no/concept/*",
-                    "https://ndla.no/image/*",
-                    "https://ndla.no/video/*"
-                ],
-                "url": "https://ndla.no/oembed",
-                "discovery": false
-            }
-        ]
-    },
-    {
-        "provider_name": "Nebula",
-        "provider_url": "https://nebula.tv",
-        "endpoints": [
-            {
-                "url": "https://nebula.tv/api/oembed",
-                "formats": [
-                    "json"
-                ],
-                "schemes": [
-                    "https://nebula.tv/videos/*"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Nebula Beta",
-        "provider_url": "https://beta.nebula.tv",
-        "endpoints": [
-            {
-                "url": "https://beta.nebula.tv/api/oembed",
-                "formats": [
-                    "json"
-                ],
-                "schemes": [
-                    "https://beta.nebula.tv/videos/*"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "neetoRecord",
-        "provider_url": "https://neetorecord.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.neetorecord.com/watch/*"
-                ],
-                "url": "https://api.neetorecord.com/api/v1/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "nfb.ca",
-        "provider_url": "http://www.nfb.ca/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.nfb.ca/film/*"
-                ],
-                "url": "http://www.nfb.ca/remote/services/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "NoPaste",
-        "provider_url": "https://nopaste.ml",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://nopaste.ml/*"
-                ],
-                "url": "https://oembed.nopaste.ml",
-                "discovery": false
-            }
-        ]
-    },
-    {
-        "provider_name": "Observable",
-        "provider_url": "https://observablehq.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://observablehq.com/@*/*",
-                    "https://observablehq.com/d/*",
-                    "https://observablehq.com/embed/*"
-                ],
-                "url": "https://api.observablehq.com/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Odds.com.au",
-        "provider_url": "https://www.odds.com.au",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.odds.com.au/*",
-                    "https://odds.com.au/*"
-                ],
-                "url": "https://www.odds.com.au/api/oembed/"
-            }
-        ]
-    },
-    {
-        "provider_name": "Odesli (formerly Songlink)",
-        "provider_url": "https://odesli.co",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://song.link/*",
-                    "https://album.link/*",
-                    "https://artist.link/*",
-                    "https://playlist.link/*",
-                    "https://pods.link/*",
-                    "https://mylink.page/*",
-                    "https://odesli.co/*"
-                ],
-                "url": "https://song.link/oembed",
-                "formats": [
-                    "json"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Odysee",
-        "provider_url": "https://odysee.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://odysee.com/*/*",
-                    "https://odysee.com/*"
-                ],
-                "url": "https://odysee.com/$/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Official FM",
-        "provider_url": "http://official.fm",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://official.fm/tracks/*",
-                    "http://official.fm/playlists/*"
-                ],
-                "url": "http://official.fm/services/oembed.{format}"
-            }
-        ]
-    },
-    {
-        "provider_name": "Omniscope",
-        "provider_url": "https://omniscope.me/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://omniscope.me/*"
-                ],
-                "url": "https://omniscope.me/_global_/oembed/json",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Omny Studio",
-        "provider_url": "https://omnystudio.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://omny.fm/shows/*"
-                ],
-                "url": "https://omny.fm/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Orbitvu",
-        "provider_url": "https://orbitvu.co",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://orbitvu.co/001/*/ov3601/view",
-                    "https://orbitvu.co/001/*/ov3601/*/view",
-                    "https://orbitvu.co/001/*/ov3602/*/view",
-                    "https://orbitvu.co/001/*/2/orbittour/*/view",
-                    "https://orbitvu.co/001/*/1/2/orbittour/*/view",
-                    "http://orbitvu.co/001/*/ov3601/view",
-                    "http://orbitvu.co/001/*/ov3601/*/view",
-                    "http://orbitvu.co/001/*/ov3602/*/view",
-                    "http://orbitvu.co/001/*/2/orbittour/*/view",
-                    "http://orbitvu.co/001/*/1/2/orbittour/*/view"
-                ],
-                "url": "http://orbitvu.co/service/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Origits",
-        "provider_url": "https://origits.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://origits.com/v/*"
-                ],
-                "url": "https://origits.net/oembed",
-                "discovery": true
-            },
-            {
-                "schemes": [
-                    "https://origits.com/v/*"
-                ],
-                "url": "https://origits.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Outplayed.tv",
-        "provider_url": "https://outplayed.tv/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://outplayed.tv/media/*"
-                ],
-                "url": "https://outplayed.tv/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Overflow",
-        "provider_url": "https://overflow.io",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://overflow.io/s/*",
-                    "https://overflow.io/embed/*"
-                ],
-                "url": "https://overflow.io/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "OZ",
-        "provider_url": "https://www.oz.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.oz.com/*/video/*"
-                ],
-                "url": "https://core.oz.com/oembed",
-                "formats": [
-                    "json",
-                    "xml"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Padlet",
-        "provider_url": "https://padlet.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://padlet.com/*"
-                ],
-                "url": "https://padlet.com/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Panda Video",
-        "provider_url": "https://pandavideo.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.tv.pandavideo.com.br/embed/?v=*",
-                    "https://*.tv.pandavideo.com.br/*/playlist.m3u8",
-                    "https://dashboard.pandavideo.com.br/#/videos/*"
-                ],
-                "url": "https://api-v2.pandavideo.com.br/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Pastery",
-        "provider_url": "https://www.pastery.net",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://pastery.net/*",
-                    "https://pastery.net/*",
-                    "http://www.pastery.net/*",
-                    "https://www.pastery.net/*"
-                ],
-                "url": "https://www.pastery.net/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Picturelfy",
-        "provider_url": "https://www.picturelfy.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.picturelfy.com/p/*",
-                    "https://www.picturelfy.com/p/*"
-                ],
-                "url": "https://api.picturelfy.com/service/oembed/",
-                "discovery": false
-            }
-        ]
-    },
-    {
-        "provider_name": "Piggy",
-        "provider_url": "https://piggy.to",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://piggy.to/@*/*",
-                    "https://piggy.to/view/*"
-                ],
-                "url": "https://piggy.to/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Pikasso",
-        "provider_url": "https://builder.pikasso.xyz",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.builder.pikasso.xyz/embed/*"
-                ],
-                "url": "https://builder.pikasso.xyz/api/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "PingVP",
-        "provider_url": "https://www.pingvp.com/",
-        "endpoints": [
-            {
-                "url": "https://beta.pingvp.com.kpnis.nl/p/oembed.php",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Pinpoll",
-        "provider_url": "https://www.pinpoll.com/products/tools",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://tools.pinpoll.com/embed/*"
-                ],
-                "url": "https://tools.pinpoll.com/oembed",
-                "discovery": true,
-                "formats": [
-                    "json",
-                    "xml"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Pinterest",
-        "provider_url": "https://www.pinterest.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.pinterest.com/*"
-                ],
-                "url": "https://www.pinterest.com/oembed.json",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "PitchHub",
-        "provider_url": "https://www.pitchhub.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://player.pitchhub.com/en/public/player/*"
-                ],
-                "url": "https://player.pitchhub.com/en/public/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Pixdor",
-        "provider_url": "http://www.pixdor.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://store.pixdor.com/place-marker-widget/*/show",
-                    "https://store.pixdor.com/map/*/show"
-                ],
-                "url": "https://store.pixdor.com/oembed",
-                "formats": [
-                    "json",
-                    "xml"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Plusdocs",
-        "provider_url": "http://plusdocs.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.plusdocs.com/*/snapshots/*",
-                    "https://app.plusdocs.com/*/pages/edit/*",
-                    "https://app.plusdocs.com/*/pages/share/*"
-                ],
-                "url": "https://app.plusdocs.com/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Podbean",
-        "provider_url": "http://podbean.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.podbean.com/e/*",
-                    "http://*.podbean.com/e/*"
-                ],
-                "url": "https://api.podbean.com/v1/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Poll Daddy",
-        "provider_url": "http://polldaddy.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.polldaddy.com/s/*",
-                    "http://*.polldaddy.com/poll/*",
-                    "http://*.polldaddy.com/ratings/*"
-                ],
-                "url": "http://polldaddy.com/oembed/"
-            }
-        ]
-    },
-    {
-        "provider_name": "Portfolium",
-        "provider_url": "https://portfolium.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://portfolium.com/entry/*"
-                ],
-                "url": "https://api.portfolium.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Present",
-        "provider_url": "https://present.do",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://present.do/decks/*"
-                ],
-                "url": "https://gateway.cobalt.run/present/decks/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Prezi Video",
-        "provider_url": "https://prezi.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://prezi.com/v/*",
-                    "https://*.prezi.com/v/*"
-                ],
-                "url": "https://prezi.com/v/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "QTpi",
-        "provider_url": "https://qtpi.gg/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://qtpi.gg/fashion/*"
-                ],
-                "url": "https://qtpi.gg/fashion/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Quiz.biz",
-        "provider_url": "http://www.quiz.biz/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.quiz.biz/quizz-*.html"
-                ],
-                "url": "http://www.quiz.biz/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Quizz.biz",
-        "provider_url": "http://www.quizz.biz/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.quizz.biz/quizz-*.html"
-                ],
-                "url": "http://www.quizz.biz/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "RadioPublic",
-        "provider_url": "https://radiopublic.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://play.radiopublic.com/*",
-                    "https://radiopublic.com/*",
-                    "https://www.radiopublic.com/*",
-                    "http://play.radiopublic.com/*",
-                    "http://radiopublic.com/*",
-                    "http://www.radiopublic.com/*",
-                    "https://*.radiopublic.com/*"
-                ],
-                "url": "https://oembed.radiopublic.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Raindrop",
-        "provider_url": "https://raindrop.io",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://raindrop.io/*",
-                    "https://raindrop.io/*/*",
-                    "https://raindrop.io/*/*/*",
-                    "https://raindrop.io/*/*/*/*"
-                ],
-                "url": "https://pub.raindrop.io/api/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "rcvis",
-        "provider_url": "https://www.rcvis.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.rcvis.com/v/*",
-                    "https://www.rcvis.com/visualize=*",
-                    "https://www.rcvis.com/ve/*",
-                    "https://www.rcvis.com/visualizeEmbedded=*"
-                ],
-                "url": "https://animatron.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Reddit",
-        "provider_url": "https://reddit.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://reddit.com/r/*/comments/*/*",
-                    "https://www.reddit.com/r/*/comments/*/*"
-                ],
-                "url": "https://www.reddit.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "ReleaseWire",
-        "provider_url": "http://www.releasewire.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://rwire.com/*"
-                ],
-                "url": "http://publisher.releasewire.com/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Replit",
-        "provider_url": "https://replit.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://repl.it/@*/*",
-                    "https://replit.com/@*/*"
-                ],
-                "url": "https://replit.com/data/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "ReverbNation",
-        "provider_url": "https://www.reverbnation.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.reverbnation.com/*",
-                    "https://www.reverbnation.com/*/songs/*"
-                ],
-                "url": "https://www.reverbnation.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Roomshare",
-        "provider_url": "http://roomshare.jp",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://roomshare.jp/post/*",
-                    "http://roomshare.jp/en/post/*"
-                ],
-                "url": "http://roomshare.jp/en/oembed.{format}"
-            }
-        ]
-    },
-    {
-        "provider_name": "RoosterTeeth",
-        "provider_url": "https://roosterteeth.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://roosterteeth.com/*"
-                ],
-                "url": "https://roosterteeth.com/oembed",
-                "formats": [
-                    "json"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Rumble",
-        "provider_url": "https://rumble.com/",
-        "endpoints": [
-            {
-                "url": "https://rumble.com/api/Media/oembed.{format}",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Runkit",
-        "provider_url": "https://runkit.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://embed.runkit.com/*,",
-                    "https://embed.runkit.com/*,"
-                ],
-                "url": "https://embed.runkit.com/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Saooti",
-        "provider_url": "https://octopus.saooti.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://octopus.saooti.com/main/pub/podcast/*"
-                ],
-                "url": "https://octopus.saooti.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Sapo Videos",
-        "provider_url": "http://videos.sapo.pt",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://videos.sapo.pt/*"
-                ],
-                "url": "http://videos.sapo.pt/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Screen9",
-        "provider_url": "http://www.screen9.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://console.screen9.com/*",
-                    "https://*.screen9.tv/*"
-                ],
-                "url": "https://api.screen9.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Screencast.com",
-        "provider_url": "http://www.screencast.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.screencast.com/*"
-                ],
-                "url": "https://api.screencast.com/external/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Screenr",
-        "provider_url": "http://www.screenr.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.screenr.com/*/"
-                ],
-                "url": "http://www.screenr.com/api/oembed.{format}"
-            }
-        ]
-    },
-    {
-        "provider_name": "ScribbleMaps",
-        "provider_url": "https://scribblemaps.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.scribblemaps.com/maps/view/*",
-                    "https://www.scribblemaps.com/maps/view/*",
-                    "http://scribblemaps.com/maps/view/*",
-                    "https://scribblemaps.com/maps/view/*"
-                ],
-                "url": "https://scribblemaps.com/api/services/oembed.{format}",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Scribd",
-        "provider_url": "http://www.scribd.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.scribd.com/doc/*"
-                ],
-                "url": "http://www.scribd.com/services/oembed/"
-            }
-        ]
-    },
-    {
-        "provider_name": "SendtoNews",
-        "provider_url": "http://www.sendtonews.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://embed.sendtonews.com/oembed/*"
-                ],
-                "url": "https://embed.sendtonews.com/services/oembed",
-                "discovery": true,
-                "formats": [
-                    "json",
-                    "xml"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "SharedFile",
-        "provider_url": "https://shared-file-kappa.vercel.app/file/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://shared-file-kappa.vercel.app/file/*"
-                ],
-                "url": "https://shared-file-kappa.vercel.app/file/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Shopshare",
-        "provider_url": "https://shopshare.tv",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://shopshare.tv/shopboard/*",
-                    "https://shopshare.tv/shopcast/*"
-                ],
-                "url": "https://shopshare.tv/api/shopcast/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "ShortNote",
-        "provider_url": "https://www.shortnote.jp/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.shortnote.jp/view/notes/*"
-                ],
-                "url": "https://www.shortnote.jp/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Shoudio",
-        "provider_url": "http://shoudio.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://shoudio.com/*",
-                    "http://shoud.io/*"
-                ],
-                "url": "http://shoudio.com/api/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Show by Animaker",
-        "provider_url": "https://getshow.io/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.getshow.io/iframe/*",
-                    "https://*.getshow.io/share/*"
-                ],
-                "url": "https://api.getshow.io/oembed.{format}",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Show the Way, actionable location info",
-        "provider_url": "https://showtheway.io",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://showtheway.io/to/*"
-                ],
-                "url": "https://showtheway.io/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Simplecast",
-        "provider_url": "https://simplecast.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://simplecast.com/s/*"
-                ],
-                "url": "https://simplecast.com/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Sizzle",
-        "provider_url": "https://onsizzle.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://onsizzle.com/i/*"
-                ],
-                "url": "https://onsizzle.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Sketchfab",
-        "provider_url": "http://sketchfab.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://sketchfab.com/*models/*",
-                    "https://sketchfab.com/*models/*",
-                    "https://sketchfab.com/*/folders/*"
-                ],
-                "url": "http://sketchfab.com/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "SlideShare",
-        "provider_url": "http://www.slideshare.net/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.slideshare.net/*/*",
-                    "http://www.slideshare.net/*/*",
-                    "https://fr.slideshare.net/*/*",
-                    "http://fr.slideshare.net/*/*",
-                    "https://de.slideshare.net/*/*",
-                    "http://de.slideshare.net/*/*",
-                    "https://es.slideshare.net/*/*",
-                    "http://es.slideshare.net/*/*",
-                    "https://pt.slideshare.net/*/*",
-                    "http://pt.slideshare.net/*/*"
-                ],
-                "url": "https://www.slideshare.net/api/oembed/2",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "SmashNotes",
-        "provider_url": "https://smashnotes.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://smashnotes.com/p/*",
-                    "https://smashnotes.com/p/*/e/* - https://smashnotes.com/p/*/e/*/s/*"
-                ],
-                "url": "https://smashnotes.com/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Smeme",
-        "provider_url": "https://smeme.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://open.smeme.com/*"
-                ],
-                "url": "https://open.smeme.com/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Smrthi",
-        "provider_url": "https://www.smrthi.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.smrthi.com/book/*"
-                ],
-                "url": "https://www.smrthi.com/api/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "SmugMug",
-        "provider_url": "https://www.smugmug.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.smugmug.com/*",
-                    "https://*.smugmug.com/*"
-                ],
-                "url": "https://api.smugmug.com/services/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "SocialExplorer",
-        "provider_url": "https://www.socialexplorer.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.socialexplorer.com/*/explore",
-                    "https://www.socialexplorer.com/*/view",
-                    "https://www.socialexplorer.com/*/edit",
-                    "https://www.socialexplorer.com/*/embed"
-                ],
-                "url": "https://www.socialexplorer.com/services/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "SoundCloud",
-        "provider_url": "http://soundcloud.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://soundcloud.com/*",
-                    "https://soundcloud.com/*",
-                    "https://on.soundcloud.com/*",
-                    "https://soundcloud.app.goog.gl/*"
-                ],
-                "url": "https://soundcloud.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "SpeakerDeck",
-        "provider_url": "https://speakerdeck.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://speakerdeck.com/*/*",
-                    "https://speakerdeck.com/*/*"
-                ],
-                "url": "https://speakerdeck.com/oembed.json",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Spotify",
-        "provider_url": "https://spotify.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://open.spotify.com/*",
-                    "spotify:*",
-                    "https://spotify.link/*"
-                ],
-                "url": "https://open.spotify.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Spotlightr",
-        "provider_url": "https://spotlightr.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.spotlightr.com/watch/*",
-                    "https://*.spotlightr.com/publish/*",
-                    "https://*.cdn.spotlightr.com/watch/*",
-                    "https://*.cdn.spotlightr.com/publish/*"
-                ],
-                "url": "https://api.spotlightr.com/getOEmbed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Spreaker",
-        "provider_url": "https://www.spreaker.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.spreaker.com/*",
-                    "https://*.spreaker.com/*"
-                ],
-                "url": "https://api.spreaker.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "SproutVideo",
-        "provider_url": "https://sproutvideo.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://sproutvideo.com/videos/*",
-                    "https://*.vids.io/videos/*"
-                ],
-                "url": "http://sproutvideo.com/oembed.{format}",
-                "formats": [
-                    "json",
-                    "xml"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Spyke",
-        "provider_url": "https://spyke.social",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://spyke.social/p/*",
-                    "http://spyke.social/u/*",
-                    "http://spyke.social/g/*",
-                    "http://spyke.social/c/*",
-                    "https://spyke.social/p/*",
-                    "https://spyke.social/u/*",
-                    "https://spyke.social/g/*",
-                    "https://spyke.social/c/*",
-                    "http://www.spyke.social/p/*",
-                    "http://www.spyke.social/u/*",
-                    "http://www.spyke.social/g/*",
-                    "http://www.spyke.social/c/*",
-                    "https://www.spyke.social/p/*",
-                    "https://www.spyke.social/u/*",
-                    "https://www.spyke.social/g/*",
-                    "https://www.spyke.social/c/*"
-                ],
-                "url": "https://api.spyke.social/embed/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Stanford Digital Repository",
-        "provider_url": "https://purl.stanford.edu/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://purl.stanford.edu/*"
-                ],
-                "url": "https://purl.stanford.edu/embed.{format}",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Streamable",
-        "provider_url": "https://streamable.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://streamable.com/*",
-                    "https://streamable.com/*"
-                ],
-                "url": "https://api.streamable.com/oembed.json",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Streamio",
-        "provider_url": "https://www.streamio.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://s3m.io/*",
-                    "https://23m.io/*"
-                ],
-                "url": "https://streamio.com/api/v1/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Subscribi",
-        "provider_url": "https://subscribi.io/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://subscribi.io/api/oembed*"
-                ],
-                "url": "https://subscribi.io/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Sudomemo",
-        "provider_url": "https://www.sudomemo.net/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.sudomemo.net/watch/*",
-                    "http://www.sudomemo.net/watch/*",
-                    "https://flipnot.es/*",
-                    "http://flipnot.es/*"
-                ],
-                "url": "https://www.sudomemo.net/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Sutori",
-        "provider_url": "https://www.sutori.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.sutori.com/story/*"
-                ],
-                "url": "https://www.sutori.com/api/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Sway",
-        "provider_url": "https://www.sway.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://sway.com/*",
-                    "https://www.sway.com/*"
-                ],
-                "url": "https://sway.com/api/v1.0/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Sway Office",
-        "provider_url": "https://sway.office.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://sway.office.com/*"
-                ],
-                "url": "https://sway.office.com/api/v1.0/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Synthesia",
-        "provider_url": "https://www.synthesia.io/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://share.synthesia.io/*"
-                ],
-                "url": "https://69jr5v75rc.execute-api.eu-west-1.amazonaws.com/prod/v2/oembed",
-                "formats": [
-                    "json"
-                ],
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "TED",
-        "provider_url": "https://www.ted.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://ted.com/talks/*",
-                    "https://ted.com/talks/*",
-                    "https://www.ted.com/talks/*"
-                ],
-                "url": "https://www.ted.com/services/v1/oembed.{format}",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "The New York Times",
-        "provider_url": "https://www.nytimes.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.nytimes.com/svc/oembed",
-                    "https://nytimes.com/*",
-                    "https://*.nytimes.com/*"
-                ],
-                "url": "https://www.nytimes.com/svc/oembed/json/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "They Said So",
-        "provider_url": "https://theysaidso.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://theysaidso.com/image/*"
-                ],
-                "url": "https://theysaidso.com/extensions/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "TickCounter",
-        "provider_url": "https://www.tickcounter.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.tickcounter.com/widget/*",
-                    "http://www.tickcounter.com/countdown/*",
-                    "http://www.tickcounter.com/countup/*",
-                    "http://www.tickcounter.com/ticker/*",
-                    "http://www.tickcounter.com/clock/*",
-                    "http://www.tickcounter.com/worldclock/*",
-                    "https://www.tickcounter.com/widget/*",
-                    "https://www.tickcounter.com/countdown/*",
-                    "https://www.tickcounter.com/countup/*",
-                    "https://www.tickcounter.com/ticker/*",
-                    "https://www.tickcounter.com/clock/*",
-                    "https://www.tickcounter.com/worldclock/*"
-                ],
-                "url": "https://www.tickcounter.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "TikTok",
-        "provider_url": "http://www.tiktok.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.tiktok.com/*",
-                    "https://www.tiktok.com/*/video/*"
-                ],
-                "url": "https://www.tiktok.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Tonic Audio",
-        "provider_url": "https://tonicaudio.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://tonicaudio.com/take/*",
-                    "https://tonicaudio.com/song/*",
-                    "https://tnic.io/song/*",
-                    "https://tnic.io/take/*"
-                ],
-                "url": "https://tonicaudio.com/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Toornament",
-        "provider_url": "https://www.toornament.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.toornament.com/tournaments/*/information",
-                    "https://www.toornament.com/tournaments/*/registration/",
-                    "https://www.toornament.com/tournaments/*/matches/schedule",
-                    "https://www.toornament.com/tournaments/*/stages/*/"
-                ],
-                "url": "https://widget.toornament.com/oembed",
-                "discovery": true,
-                "formats": [
-                    "json",
-                    "xml"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Topy",
-        "provider_url": "http://www.topy.se/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.topy.se/image/*"
-                ],
-                "url": "http://www.topy.se/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Totango",
-        "provider_url": "https://totango.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app-test.totango.com/*"
-                ],
-                "url": "https://app-test.totango.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Trackspace",
-        "provider_url": "http://trackspace.upitup.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://trackspace.upitup.com/*"
-                ],
-                "url": "https://trackspace.upitup.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Trinity Audio",
-        "provider_url": "https://trinityaudio.ai",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://trinitymedia.ai/player/*",
-                    "https://trinitymedia.ai/player/*/*",
-                    "https://trinitymedia.ai/player/*/*/*"
-                ],
-                "url": "https://trinitymedia.ai/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Tumblr",
-        "provider_url": "https://www.tumblr.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.tumblr.com/post/*"
-                ],
-                "url": "https://www.tumblr.com/oembed/1.0"
-            }
-        ]
-    },
-    {
-        "provider_name": "Tuxx",
-        "provider_url": "https://www.tuxx.be/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.tuxx.be/*"
-                ],
-                "url": "https://www.tuxx.be/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "tvcf",
-        "provider_url": "http://tvcf.co.kr",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://play.tvcf.co.kr/*",
-                    "https://*.tvcf.co.kr/*"
-                ],
-                "url": "https://play.tvcf.co.kr/rest/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Twinmotion",
-        "provider_url": "https://twinmotion.unrealengine.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://twinmotion.unrealengine.com/presentation/*",
-                    "https://twinmotion.unrealengine.com/panorama/*"
-                ],
-                "url": "https://twinmotion.unrealengine.com/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Twitter",
-        "provider_url": "http://www.twitter.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://twitter.com/*",
-                    "https://twitter.com/*/status/*",
-                    "https://*.twitter.com/*/status/*"
-                ],
-                "url": "https://publish.twitter.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "TypeCast",
-        "provider_url": "https://typecast.ai",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://play.typecast.ai/s/*",
-                    "https://play.typecast.ai/e/*",
-                    "https://play.typecast.ai/*"
-                ],
-                "url": "https://play.typecast.ai/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Typlog",
-        "provider_url": "https://typlog.com",
-        "endpoints": [
-            {
-                "url": "https://typlog.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "UAPod",
-        "provider_url": "https://uapod.univ-antilles.fr/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://uapod.univ-antilles.fr/video/*"
-                ],
-                "url": "https://uapod.univ-antilles.fr/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "University of Cambridge Map",
-        "provider_url": "https://map.cam.ac.uk",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://map.cam.ac.uk/*"
-                ],
-                "url": "https://map.cam.ac.uk/oembed/"
-            }
-        ]
-    },
-    {
-        "provider_name": "UnivParis1.Pod",
-        "provider_url": "https://mediatheque.univ-paris1.fr/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://mediatheque.univ-paris1.fr/video/*"
-                ],
-                "url": "https://mediatheque.univ-paris1.fr/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Upec.Pod",
-        "provider_url": "https://pod.u-pec.fr/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://pod.u-pec.fr/video/*"
-                ],
-                "url": "https://pod.u-pec.fr/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Ustream",
-        "provider_url": "http://www.ustream.tv",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.ustream.tv/*",
-                    "http://*.ustream.com/*"
-                ],
-                "url": "http://www.ustream.tv/oembed",
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "uStudio, Inc.",
-        "provider_url": "https://www.ustudio.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.ustudio.com/embed/*",
-                    "https://*.ustudio.com/embed/*/*"
-                ],
-                "url": "https://app.ustudio.com/api/v2/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "VeeR VR",
-        "provider_url": "http://veer.tv/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://veer.tv/videos/*"
-                ],
-                "url": "https://api.veer.tv/oembed",
-                "discovery": true
-            },
-            {
-                "schemes": [
-                    "http://veervr.tv/videos/*"
-                ],
-                "url": "https://api.veervr.tv/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "VEVO",
-        "provider_url": "http://www.vevo.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://www.vevo.com/*",
-                    "https://www.vevo.com/*"
-                ],
-                "url": "https://www.vevo.com/oembed",
-                "discovery": false
-            }
-        ]
-    },
-    {
-        "provider_name": "Videfit",
-        "provider_url": "https://videfit.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://videfit.com/videos/*"
-                ],
-                "url": "https://videfit.com/oembed",
-                "discovery": false
-            }
-        ]
-    },
-    {
-        "provider_name": "VidMount",
-        "provider_url": "https://vidmount.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://vidmount.com/*"
-                ],
-                "url": "https://vidmount.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Vidyard",
-        "provider_url": "https://vidyard.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "http://*.vidyard.com/*",
-                    "https://*.vidyard.com/*",
-                    "http://*.hubs.vidyard.com/*",
-                    "https://*.hubs.vidyard.com/*"
-                ],
-                "url": "https://api.vidyard.com/dashboard/v1.1/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Vimeo",
-        "provider_url": "https://vimeo.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://vimeo.com/*",
-                    "https://vimeo.com/album/*/video/*",
-                    "https://vimeo.com/channels/*/*",
-                    "https://vimeo.com/groups/*/videos/*",
-                    "https://vimeo.com/ondemand/*/*",
-                    "https://player.vimeo.com/video/*",
-                    "https://vimeo.com/event/*/*"
-                ],
-                "url": "https://vimeo.com/api/oembed.{format}",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Viostream",
-        "provider_url": "https://www.viostream.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://share.viostream.com/*"
-                ],
-                "url": "https://play.viostream.com/oembed",
-                "discovery": true,
-                "formats": [
-                    "json",
-                    "xml"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Viously",
-        "provider_url": "https://www.viously.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.viously.com/*/*"
-                ],
-                "url": "https://www.viously.com/oembed",
-                "discovery": true,
-                "formats": [
-                    "json",
-                    "xml"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Vizydrop",
-        "provider_url": "https://vizydrop.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://vizydrop.com/shared/*"
-                ],
-                "url": "https://vizydrop.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "Vlipsy",
-        "provider_url": "https://vlipsy.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://vlipsy.com/*"
-                ],
-                "url": "https://vlipsy.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "VLIVE",
-        "provider_url": "https://www.vlive.tv",
-        "endpoints": [
-            {
-                "url": "https://www.vlive.tv/oembed",
-                "schemes": [
-                    "https://www.vlive.tv/video/*"
-                ],
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Vouch",
-        "provider_url": "https://www.vouchfor.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.vouchfor.com/*"
-                ],
-                "url": "https://embed.vouchfor.com/v1/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "VoxSnap",
-        "provider_url": "https://voxsnap.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://article.voxsnap.com/*/*"
-                ],
-                "url": "https://data.voxsnap.com/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Waltrack",
-        "provider_url": "https://waltrack/net",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://waltrack.net/product/*"
-                ],
-                "url": "https://waltrack.net/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Wave.video",
-        "provider_url": "https://wave.video",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://watch.wave.video/*",
-                    "https://embed.wave.video/*"
-                ],
-                "url": "https://embed.wave.video/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Web3 is Going Just Great",
-        "provider_url": "https://www.web3isgoinggreat.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.web3isgoinggreat.com/?id=*",
-                    "https://www.web3isgoinggreat.com/single/*",
-                    "https://www.web3isgoinggreat.com/embed/*"
-                ],
-                "url": "https://www.web3isgoinggreat.com/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "wecandeo",
-        "provider_url": "https://www.wecandeo.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://play.wecandeo.com/video/v/*"
-                ],
-                "url": "https://play.wecandeo.com/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Whimsical",
-        "provider_url": "https://www.whimsical.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://whimsical.com/*"
-                ],
-                "url": "https://whimsical.com/api/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Wistia, Inc.",
-        "provider_url": "https://wistia.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://fast.wistia.com/embed/iframe/*",
-                    "https://fast.wistia.com/embed/playlists/*",
-                    "https://*.wistia.com/medias/*"
-                ],
-                "url": "https://fast.wistia.com/oembed.{format}",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "wizer.me",
-        "provider_url": "https://www.wizer.me/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.wizer.me/learn/*",
-                    "https://*.wizer.me/preview/*"
-                ],
-                "url": "https://app.wizer.me/api/oembed.{format}",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Wokwi",
-        "provider_url": "https://wokwi.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://wokwi.com/share/*"
-                ],
-                "url": "https://wokwi.com/api/oembed",
-                "discovery": true,
-                "formats": [
-                    "json"
-                ]
-            }
-        ]
-    },
-    {
-        "provider_name": "Wolfram Cloud",
-        "provider_url": "https://www.wolframcloud.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.wolframcloud.com/*"
-                ],
-                "url": "https://www.wolframcloud.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "WordPress.com",
-        "provider_url": "https://wordpress.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://wordpress.com/*",
-                    "http://wordpress.com/*",
-                    "https://*.wordpress.com/*",
-                    "http://*.wordpress.com/*",
-                    "https://*.*.wordpress.com/*",
-                    "http://*.*.wordpress.com/*",
-                    "https://wp.me/*",
-                    "http://wp.me/*"
-                ],
-                "url": "http://public-api.wordpress.com/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "X",
-        "provider_url": "http://www.x.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://x.com/*",
-                    "https://x.com/*/status/*",
-                    "https://*.x.com/*/status/*"
-                ],
-                "url": "https://publish.x.com/oembed"
-            }
-        ]
-    },
-    {
-        "provider_name": "YouTube",
-        "provider_url": "https://www.youtube.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.youtube.com/watch*",
-                    "https://*.youtube.com/v/*",
-                    "https://youtu.be/*",
-                    "https://*.youtube.com/playlist?list=*",
-                    "https://youtube.com/playlist?list=*",
-                    "https://*.youtube.com/shorts*",
-                    "https://youtube.com/shorts*",
-                    "https://*.youtube.com/embed/*"
-                ],
-                "url": "https://www.youtube.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "YUMPU",
-        "provider_url": "https://www.yumpu.com/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://www.yumpu.com/*/document/view/*/*"
-                ],
-                "url": "https://www.yumpu.com/services/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Zeplin",
-        "provider_url": "https://zeplin.io",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.zeplin.io/project/*/screen/*",
-                    "https://app.zeplin.io/project/*/screen/*/version/*",
-                    "https://app.zeplin.io/project/*/styleguide/components?coid=*",
-                    "https://app.zeplin.io/styleguide/*/components?coid=*"
-                ],
-                "url": "https://app.zeplin.io/embed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "ZingSoft",
-        "provider_url": "https://app.zingsoft.com",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://app.zingsoft.com/embed/*",
-                    "https://app.zingsoft.com/view/*"
-                ],
-                "url": "https://app.zingsoft.com/oembed",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "ZnipeTV",
-        "provider_url": "https://www.znipe.tv/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://*.znipe.tv/*"
-                ],
-                "url": "https://api.znipe.tv/v3/oembed/",
-                "discovery": true
-            }
-        ]
-    },
-    {
-        "provider_name": "Zoomable",
-        "provider_url": "https://zoomable.ca/",
-        "endpoints": [
-            {
-                "schemes": [
-                    "https://srv2.zoomable.ca/viewer.php*"
-                ],
-                "url": "https://srv2.zoomable.ca/oembed",
-                "discovery": true
-            }
-        ]
-    }
-]
\ No newline at end of file
diff --git a/trial/artifact_assets/drupal_cms_trial/src/OutgoingHttpInterceptor.php b/trial/artifact_assets/drupal_cms_trial/src/OutgoingHttpInterceptor.php
deleted file mode 100644
index bab113607f4d4494233d56e922e1ead36400896c..0000000000000000000000000000000000000000
--- a/trial/artifact_assets/drupal_cms_trial/src/OutgoingHttpInterceptor.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace Drupal\drupal_cms_trial;
-
-use GuzzleHttp\Promise\FulfilledPromise;
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7\Response;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Currently PHP in WebAssembly does not support outgoing HTTP requests.
- *
- * This HTTP client middleware is used to intercept outgoing HTTP requests so
- * that they do not fail.
- */
-final class OutgoingHttpInterceptor {
-
-  public function __invoke(): callable {
-    return static function (callable $handler): callable {
-      return static function (RequestInterface $request, array $options) use ($handler): PromiseInterface {
-        $request_uri = (string) $request->getUri();
-        if ($request_uri === 'https://oembed.com/providers.json') {
-          $response = file_get_contents(
-            __DIR__ . '/../oembed-providers.json'
-          );
-          return new FulfilledPromise(new Response(200, ['Content-Type' => 'application/json'], $response));
-        }
-        if ($request_uri === 'https://www.youtube.com/oembed?url=https%3A//www.youtube.com/watch%3Fv%3D21X5lGlDOfg') {
-          $response = file_get_contents(
-            __DIR__ . '/../youtube-oembed.json'
-          );
-          return new FulfilledPromise(new Response(200, ['Content-Type' => 'application/json'], $response));
-        }
-        if ($request_uri === 'https://updates.drupal.org/psa.json') {
-            return new FulfilledPromise(new Response(200, ['Content-Type' => 'application/json'], '[]'));
-        }
-        return $handler($request, $options);
-      };
-    };
-  }
-
-}
diff --git a/trial/artifact_assets/drupal_cms_trial/youtube-oembed.json b/trial/artifact_assets/drupal_cms_trial/youtube-oembed.json
deleted file mode 100644
index 99c8ab14b8fbd99bf5ddb47a58e2398cfd9130ae..0000000000000000000000000000000000000000
--- a/trial/artifact_assets/drupal_cms_trial/youtube-oembed.json
+++ /dev/null
@@ -1 +0,0 @@
-{"title":"NASA Live: Official Stream of NASA TV","author_name":"NASA","author_url":"https://www.youtube.com/@NASA","type":"video","height":150,"width":200,"version":"1.0","provider_name":"YouTube","provider_url":"https://www.youtube.com/","thumbnail_height":360,"thumbnail_width":480,"thumbnail_url":"https://i.ytimg.com/vi/21X5lGlDOfg/hqdefault.jpg","html":"\u003ciframe width=\u0022200\u0022 height=\u0022150\u0022 src=\u0022https://www.youtube.com/embed/21X5lGlDOfg?feature=oembed\u0022 frameborder=\u00220\u0022 allow=\u0022accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\u0022 referrerpolicy=\u0022strict-origin-when-cross-origin\u0022 allowfullscreen title=\u0022NASA Live: Official Stream of NASA TV\u0022\u003e\u003c/iframe\u003e"}
\ No newline at end of file
diff --git a/trial/artifact_assets/drush/drush.yml b/trial/artifact_assets/drush/drush.yml
deleted file mode 100644
index 7a5fdc68ea3a16aa6af28434feb26658f7f152d0..0000000000000000000000000000000000000000
--- a/trial/artifact_assets/drush/drush.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# Contains project-wide configuration for Drush. These options are only used
-# for building the in-browser trial.
-# @see https://drush.org/latest/using-drush-configuration
-command:
-  site:
-    install:
-      options:
-        account-pass: admin
-        # SQLite is the only kind of database supported by the in-browser trial.
-        db-url: sqlite://localhost/db.sqlite
-        site-name: Drupal CMS
diff --git a/trial/artifact_assets/patches.json b/trial/artifact_assets/patches.json
deleted file mode 100644
index e1cdda65d24303ed06f65f76e55f513c9eb75916..0000000000000000000000000000000000000000
--- a/trial/artifact_assets/patches.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-    "patches": {
-        "drupal/core": {
-            "Remove renderer support for fibers": "./patches/core/renderer-remove-fibers.patch",
-            "#3463572: SQLite install tasks requires the file_system service": "./patches/core/8913.patch",
-            "Remove warnings about opcache and 32-bit integers": "./patches/core/system-reqs-wasm.patch",
-            "Remove permission hardening warning": "./patches/core/skip-permission-hardening-warning.patch"
-        }
-    }
-}
diff --git a/trial/artifact_assets/patches/core/8913.patch b/trial/artifact_assets/patches/core/8913.patch
deleted file mode 100644
index 333ebb967d4ed55282648aa431fd924411cad30b..0000000000000000000000000000000000000000
--- a/trial/artifact_assets/patches/core/8913.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
-index 68ef6a2c81a219cd465c6bb4d2ef0100adb7f61a..b724d9e9bda931be05d837a8b8c5a28a01a88305 100644
---- a/core/includes/install.core.inc
-+++ b/core/includes/install.core.inc
-@@ -17,6 +17,7 @@
- use Drupal\Core\Database\Database;
- use Drupal\Core\Database\DatabaseExceptionWrapper;
- use Drupal\Core\Extension\Exception\UnknownExtensionException;
-+use Drupal\Core\File\FileSystem;
- use Drupal\Core\File\FileSystemInterface;
- use Drupal\Core\Form\FormState;
- use Drupal\Core\Installer\Exception\AlreadyInstalledException;
-@@ -29,6 +30,7 @@
- use Drupal\Core\Recipe\Recipe;
- use Drupal\Core\Recipe\RecipeRunner;
- use Drupal\Core\Site\Settings;
-+use Drupal\Core\StreamWrapper\StreamWrapperManager;
- use Drupal\Core\StringTranslation\Translator\FileTranslation;
- use Drupal\Core\StackMiddleware\ReverseProxyMiddleware;
- use Drupal\Core\Extension\ExtensionDiscovery;
-@@ -378,6 +380,13 @@ function install_begin_request($class_loader, &$install_state) {
-   // @see \Drupal\Core\Extension\DatabaseDriverList
-   $container->set('class_loader', $class_loader);
- 
-+  $container->set('settings', Settings::getInstance());
-+  $container->register('stream_wrapper_manager', StreamWrapperManager::class)
-+    ->addArgument($container);
-+  $container->register('file_system', FileSystem::class)
-+    ->addArgument(new Reference('stream_wrapper_manager'))
-+    ->addArgument(new Reference('settings'));
-+
-   \Drupal::setContainer($container);
- 
-   // Determine whether base system services are ready to operate.
diff --git a/trial/artifact_assets/patches/core/renderer-remove-fibers.patch b/trial/artifact_assets/patches/core/renderer-remove-fibers.patch
deleted file mode 100644
index 70cde15c6905c9a55faec6bb216827a65e960bc3..0000000000000000000000000000000000000000
--- a/trial/artifact_assets/patches/core/renderer-remove-fibers.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php
-index 3774cb2272..e2ab5ad075 100644
---- a/core/lib/Drupal/Core/Render/Renderer.php
-+++ b/core/lib/Drupal/Core/Render/Renderer.php
-@@ -179,11 +179,26 @@ protected function doReplacePlaceholder(string $placeholder, string|MarkupInterf
-    */
-   public function renderPlaceholder($placeholder, array $elements) {
-     // Get the render array for the given placeholder
--    $placeholder_element = $elements['#attached']['placeholders'][$placeholder];
--    $markup = $this->doRenderPlaceholder($placeholder_element);
--    return $this->doReplacePlaceholder($placeholder, $markup, $elements, $placeholder_element);
-+    $placeholder_elements = $elements['#attached']['placeholders'][$placeholder];
-+
-+    // Prevent the render array from being auto-placeholdered again.
-+    $placeholder_elements['#create_placeholder'] = FALSE;
-+
-+    // Render the placeholder into markup.
-+    $markup = $this->renderInIsolation($placeholder_elements);
-+
-+    // Replace the placeholder with its rendered markup, and merge its
-+    // bubbleable metadata with the main elements'.
-+    $elements['#markup'] = Markup::create(str_replace($placeholder, $markup, $elements['#markup']));
-+    $elements = $this->mergeBubbleableMetadata($elements, $placeholder_elements);
-+
-+    // Remove the placeholder that we've just rendered.
-+    unset($elements['#attached']['placeholders'][$placeholder]);
-+
-+    return $elements;
-   }
- 
-+
-   /**
-    * {@inheritdoc}
-    */
-@@ -642,7 +657,7 @@ protected function setCurrentRenderContext(RenderContext $context = NULL) {
-    *   bubbleable metadata associated with the markup that replaced the
-    *   placeholders.
-    *
--   * @return bool
-+   * @returns bool
-    *   Whether placeholders were replaced.
-    *
-    * @see \Drupal\Core\Render\Renderer::renderPlaceholder()
-@@ -667,47 +682,13 @@ protected function replacePlaceholders(array &$elements) {
- 
-     // First render all placeholders except 'status messages' placeholders.
-     $message_placeholders = [];
--    $fibers = [];
-     foreach ($elements['#attached']['placeholders'] as $placeholder => $placeholder_element) {
-       if (isset($placeholder_element['#lazy_builder']) && $placeholder_element['#lazy_builder'][0] === 'Drupal\Core\Render\Element\StatusMessages::renderMessages') {
-         $message_placeholders[] = $placeholder;
-       }
-       else {
--        // Get the render array for the given placeholder
--        $fibers[$placeholder] = new \Fiber(function () use ($placeholder_element) {
--          return [$this->doRenderPlaceholder($placeholder_element), $placeholder_element];
--        });
--      }
--    }
--    $iterations = 0;
--    while (count($fibers) > 0) {
--      foreach ($fibers as $placeholder => $fiber) {
--        if (!$fiber->isStarted()) {
--          $fiber->start();
--        }
--        elseif ($fiber->isSuspended()) {
--          $fiber->resume();
--        }
--        // If the Fiber hasn't terminated by this point, move onto the next
--        // placeholder, we'll resume this fiber again when we get back here.
--        if (!$fiber->isTerminated()) {
--          // If we've gone through the placeholders once already, and they're
--          // still not finished, then start to allow code higher up the stack to
--          // get on with something else.
--          if ($iterations) {
--            $fiber = \Fiber::getCurrent();
--            if ($fiber !== NULL) {
--              $fiber->suspend();
--            }
--          }
--          continue;
--        }
--        [$markup, $placeholder_element] = $fiber->getReturn();
--
--        $elements = $this->doReplacePlaceholder($placeholder, $markup, $elements, $placeholder_element);
--        unset($fibers[$placeholder]);
-+        $elements = $this->renderPlaceholder($placeholder, $elements);
-       }
--      $iterations++;
-     }
- 
-     // Then render 'status messages' placeholders.
diff --git a/trial/artifact_assets/patches/core/skip-permission-hardening-warning.patch b/trial/artifact_assets/patches/core/skip-permission-hardening-warning.patch
deleted file mode 100644
index 9468e8779e5a4f07a60afef8700f2dbee4cc4b76..0000000000000000000000000000000000000000
--- a/trial/artifact_assets/patches/core/skip-permission-hardening-warning.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php b/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php
-index eed24215eaa..9faa723b26f 100644
---- a/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php
-+++ b/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php
-@@ -157,7 +157,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
-     // successfully.)
-     $post_params = $this->getRequest()->request->all();
-     if (empty($post_params) && (Settings::get('skip_permissions_hardening') || !drupal_verify_install_file($this->root . '/' . $settings_file, FILE_EXIST | FILE_READABLE | FILE_NOT_WRITABLE) || !drupal_verify_install_file($this->root . '/' . $settings_dir, FILE_NOT_WRITABLE, 'dir'))) {
--      $this->messenger()->addWarning($this->t('All necessary changes to %dir and %file have been made, so you should remove write permissions to them now in order to avoid security risks. If you are unsure how to do so, consult the <a href=":handbook_url">online handbook</a>.', ['%dir' => $settings_dir, '%file' => $settings_file, ':handbook_url' => 'https://www.drupal.org/server-permissions']));
-+      // $this->messenger()->addWarning($this->t('All necessary changes to %dir and %file have been made, so you should remove write permissions to them now in order to avoid security risks. If you are unsure how to do so, consult the <a href=":handbook_url">online handbook</a>.', ['%dir' => $settings_dir, '%file' => $settings_file, ':handbook_url' => 'https://www.drupal.org/server-permissions']));
-     }
- 
-     $form['#attached']['library'][] = 'system/drupal.system';
diff --git a/trial/artifact_assets/patches/core/system-reqs-wasm.patch b/trial/artifact_assets/patches/core/system-reqs-wasm.patch
deleted file mode 100644
index af974f8542757387a54f8f95f1b186f98428f411..0000000000000000000000000000000000000000
--- a/trial/artifact_assets/patches/core/system-reqs-wasm.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/core/modules/system/system.install b/core/modules/system/system.install
-index b7deb9dd4b9..596793e3d4e 100644
---- a/core/modules/system/system.install
-+++ b/core/modules/system/system.install
-@@ -396,7 +396,7 @@ function system_requirements($phase) {
-     if (!OpCodeCache::isEnabled()) {
-       $requirements['php_opcache'] = [
-         'value' => t('Not enabled'),
--        'severity' => REQUIREMENT_WARNING,
-+        'severity' => REQUIREMENT_OK,
-         'description' => t('PHP OPcode caching can improve your site\'s performance considerably. It is <strong>highly recommended</strong> to have <a href="http://php.net/manual/opcache.installation.php" target="_blank">OPcache</a> installed on your server.'),
-       ];
-     }
-@@ -1430,7 +1430,7 @@ function system_requirements($phase) {
-       'title' => t('Limited date range'),
-       'value' => t('Your PHP installation has a limited date range.'),
-       'description' => t('You are running on a system where PHP is compiled or limited to using 32-bit integers. This will limit the range of dates and timestamps to the years 1901-2038. Read about the <a href=":url">limitations of 32-bit PHP</a>.', [':url' => 'https://www.drupal.org/docs/system-requirements/limitations-of-32-bit-php']),
--      'severity' => REQUIREMENT_WARNING,
-+      'severity' => REQUIREMENT_OK,
-     ];
-   }
- 
diff --git a/trial/artifact_assets/patches/npm/php-cgi-wasm+0.0.9-alpha-25.patch b/trial/artifact_assets/patches/npm/php-cgi-wasm+0.0.9-alpha-25.patch
deleted file mode 100644
index 3d196304b61e63d2e6438ff716cb9de32bb4215f..0000000000000000000000000000000000000000
--- a/trial/artifact_assets/patches/npm/php-cgi-wasm+0.0.9-alpha-25.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-diff --git a/node_modules/php-cgi-wasm/PhpCgiBase.mjs b/node_modules/php-cgi-wasm/PhpCgiBase.mjs
-index b5d9fbb..01f7b90 100644
---- a/node_modules/php-cgi-wasm/PhpCgiBase.mjs
-+++ b/node_modules/php-cgi-wasm/PhpCgiBase.mjs
-@@ -406,7 +406,7 @@ export class PhpCgiBase
- 		else
- 		{
- 
--			path = docroot + '/' + rewrite.substr((vHostPrefix || this.prefix).length);
-+			path = docroot + '/' + rewrite.substr((vHostPrefix || this.prefix).length).replace(/^\/+/, '');
- 			scriptName = path;
- 		}
- 
-@@ -419,6 +419,15 @@ export class PhpCgiBase
- 
- 		const extension = path.split('.').pop();
- 
-+		if(vHostEntrypoint)
-+		{
-+			if (extension === 'php') {
-+				scriptName = vHostPrefix + '/' + rewrite.substr((vHostPrefix || this.prefix).length).replace(/^\/+/, '')
-+			} else {
-+				scriptName = vHostPrefix + '/' + vHostEntrypoint;
-+			}
-+		}
-+
- 		if(extension !== 'php' && extension !== 'phar')
- 		{
- 			const aboutPath = php.FS.analyzePath(path);
diff --git a/trial/artifact_assets/scaffold/default.settings.php b/trial/artifact_assets/scaffold/default.settings.php
deleted file mode 100644
index 097263a079a44aee473852161db13b4c3a69823d..0000000000000000000000000000000000000000
--- a/trial/artifact_assets/scaffold/default.settings.php
+++ /dev/null
@@ -1,3 +0,0 @@
-$settings['skip_permissions_hardening'] = TRUE;
-$config['system.performance']['css']['preprocess'] = FALSE;
-$config['system.performance']['js']['preprocess'] = FALSE;
diff --git a/trial/modules/drupal_cms_trial/composer.json b/trial/modules/drupal_cms_trial/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..4c4fe3bd2fa001ccea7a2f63a505e433cd7209c8
--- /dev/null
+++ b/trial/modules/drupal_cms_trial/composer.json
@@ -0,0 +1,6 @@
+{
+    "name": "drupal/drupal_cms_trial",
+    "version": "dev-main",
+    "type": "drupal-custom-module",
+    "description": "Provides support code for the trial of Drupal CMS. Not meant for production use."
+}
diff --git a/trial/artifact_assets/drupal_cms_trial/drupal_cms_trial.info.yml b/trial/modules/drupal_cms_trial/drupal_cms_trial.info.yml
similarity index 100%
rename from trial/artifact_assets/drupal_cms_trial/drupal_cms_trial.info.yml
rename to trial/modules/drupal_cms_trial/drupal_cms_trial.info.yml
diff --git a/trial/package-lock.json b/trial/package-lock.json
deleted file mode 100644
index 7443594b4c77e8f18d62946856dbe34aad11ebac..0000000000000000000000000000000000000000
--- a/trial/package-lock.json
+++ /dev/null
@@ -1,7546 +0,0 @@
-{
-  "name": "trial",
-  "lockfileVersion": 3,
-  "requires": true,
-  "packages": {
-    "": {
-      "hasInstallScript": true,
-      "devDependencies": {
-        "@tailwindcss/typography": "^0.5.13",
-        "@vitest/coverage-v8": "^2.0.5",
-        "babel-loader": "^9.1.3",
-        "happy-dom": "^14.12.3",
-        "patch-package": "^8.0.0",
-        "php-cgi-wasm": "0.0.9-alpha-25",
-        "php-wasm": "0.0.9-alpha-25",
-        "php-wasm-dom": "0.0.9-alpha-25",
-        "php-wasm-gd": "0.0.9-alpha-25",
-        "php-wasm-iconv": "0.0.9-alpha-25",
-        "php-wasm-libxml": "0.0.9-alpha-25",
-        "php-wasm-libzip": "0.0.9-alpha-25",
-        "php-wasm-mbstring": "0.0.9-alpha-25",
-        "php-wasm-simplexml": "0.0.9-alpha-25",
-        "php-wasm-sqlite": "0.0.9-alpha-25",
-        "php-wasm-xml": "0.0.9-alpha-25",
-        "php-wasm-zlib": "0.0.9-alpha-25",
-        "tailwindcss": "^3.4.4",
-        "vitest": "^2.0.5",
-        "webpack": "^5.92.1",
-        "webpack-cli": "^5.1.4",
-        "webpack-dev-server": "^5.0.4"
-      }
-    },
-    "node_modules/@alloc/quick-lru": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
-      "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/@ampproject/remapping": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
-      "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/gen-mapping": "^0.3.5",
-        "@jridgewell/trace-mapping": "^0.3.24"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@babel/code-frame": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
-      "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/highlight": "^7.24.7",
-        "picocolors": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/compat-data": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz",
-      "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==",
-      "dev": true,
-      "peer": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/core": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz",
-      "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@ampproject/remapping": "^2.2.0",
-        "@babel/code-frame": "^7.24.7",
-        "@babel/generator": "^7.24.7",
-        "@babel/helper-compilation-targets": "^7.24.7",
-        "@babel/helper-module-transforms": "^7.24.7",
-        "@babel/helpers": "^7.24.7",
-        "@babel/parser": "^7.24.7",
-        "@babel/template": "^7.24.7",
-        "@babel/traverse": "^7.24.7",
-        "@babel/types": "^7.24.7",
-        "convert-source-map": "^2.0.0",
-        "debug": "^4.1.0",
-        "gensync": "^1.0.0-beta.2",
-        "json5": "^2.2.3",
-        "semver": "^6.3.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/babel"
-      }
-    },
-    "node_modules/@babel/core/node_modules/debug": {
-      "version": "4.3.5",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
-      "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@babel/core/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true,
-      "peer": true
-    },
-    "node_modules/@babel/generator": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz",
-      "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/types": "^7.24.7",
-        "@jridgewell/gen-mapping": "^0.3.5",
-        "@jridgewell/trace-mapping": "^0.3.25",
-        "jsesc": "^2.5.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-compilation-targets": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz",
-      "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/compat-data": "^7.24.7",
-        "@babel/helper-validator-option": "^7.24.7",
-        "browserslist": "^4.22.2",
-        "lru-cache": "^5.1.1",
-        "semver": "^6.3.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "yallist": "^3.0.2"
-      }
-    },
-    "node_modules/@babel/helper-environment-visitor": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz",
-      "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/types": "^7.24.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-function-name": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz",
-      "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/template": "^7.24.7",
-        "@babel/types": "^7.24.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-hoist-variables": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz",
-      "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/types": "^7.24.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-module-imports": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
-      "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/traverse": "^7.24.7",
-        "@babel/types": "^7.24.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-module-transforms": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz",
-      "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/helper-environment-visitor": "^7.24.7",
-        "@babel/helper-module-imports": "^7.24.7",
-        "@babel/helper-simple-access": "^7.24.7",
-        "@babel/helper-split-export-declaration": "^7.24.7",
-        "@babel/helper-validator-identifier": "^7.24.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-simple-access": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
-      "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/traverse": "^7.24.7",
-        "@babel/types": "^7.24.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-split-export-declaration": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
-      "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/types": "^7.24.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-string-parser": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz",
-      "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-validator-identifier": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
-      "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-validator-option": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz",
-      "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==",
-      "dev": true,
-      "peer": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helpers": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz",
-      "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/template": "^7.24.7",
-        "@babel/types": "^7.24.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/highlight": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
-      "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/helper-validator-identifier": "^7.24.7",
-        "chalk": "^2.4.2",
-        "js-tokens": "^4.0.0",
-        "picocolors": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/highlight/node_modules/ansi-styles": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "color-convert": "^1.9.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@babel/highlight/node_modules/chalk": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "ansi-styles": "^3.2.1",
-        "escape-string-regexp": "^1.0.5",
-        "supports-color": "^5.3.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@babel/highlight/node_modules/color-convert": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "color-name": "1.1.3"
-      }
-    },
-    "node_modules/@babel/highlight/node_modules/color-name": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
-      "dev": true,
-      "peer": true
-    },
-    "node_modules/@babel/highlight/node_modules/has-flag": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
-      "dev": true,
-      "peer": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@babel/highlight/node_modules/supports-color": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@babel/parser": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz",
-      "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==",
-      "dev": true,
-      "bin": {
-        "parser": "bin/babel-parser.js"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@babel/template": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz",
-      "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/code-frame": "^7.24.7",
-        "@babel/parser": "^7.24.7",
-        "@babel/types": "^7.24.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/traverse": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz",
-      "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "@babel/code-frame": "^7.24.7",
-        "@babel/generator": "^7.24.7",
-        "@babel/helper-environment-visitor": "^7.24.7",
-        "@babel/helper-function-name": "^7.24.7",
-        "@babel/helper-hoist-variables": "^7.24.7",
-        "@babel/helper-split-export-declaration": "^7.24.7",
-        "@babel/parser": "^7.24.7",
-        "@babel/types": "^7.24.7",
-        "debug": "^4.3.1",
-        "globals": "^11.1.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/traverse/node_modules/debug": {
-      "version": "4.3.5",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
-      "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@babel/traverse/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true,
-      "peer": true
-    },
-    "node_modules/@babel/types": {
-      "version": "7.24.7",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz",
-      "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-string-parser": "^7.24.7",
-        "@babel/helper-validator-identifier": "^7.24.7",
-        "to-fast-properties": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@bcoe/v8-coverage": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
-      "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "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==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=10.0.0"
-      }
-    },
-    "node_modules/@esbuild/aix-ppc64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
-      "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
-      "cpu": [
-        "ppc64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "aix"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/android-arm": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
-      "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/android-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
-      "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/android-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
-      "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/darwin-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
-      "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/darwin-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
-      "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/freebsd-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
-      "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "freebsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/freebsd-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
-      "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "freebsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-arm": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
-      "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
-      "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-ia32": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
-      "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-loong64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
-      "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
-      "cpu": [
-        "loong64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-mips64el": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
-      "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
-      "cpu": [
-        "mips64el"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-ppc64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
-      "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
-      "cpu": [
-        "ppc64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-riscv64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
-      "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
-      "cpu": [
-        "riscv64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-s390x": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
-      "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
-      "cpu": [
-        "s390x"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
-      "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/netbsd-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
-      "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "netbsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/openbsd-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
-      "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "openbsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/sunos-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
-      "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "sunos"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/win32-arm64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
-      "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/win32-ia32": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
-      "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/win32-x64": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
-      "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@isaacs/cliui": {
-      "version": "8.0.2",
-      "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
-      "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
-      "dev": true,
-      "dependencies": {
-        "string-width": "^5.1.2",
-        "string-width-cjs": "npm:string-width@^4.2.0",
-        "strip-ansi": "^7.0.1",
-        "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
-        "wrap-ansi": "^8.1.0",
-        "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@istanbuljs/schema": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
-      "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@jridgewell/gen-mapping": {
-      "version": "0.3.5",
-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
-      "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/set-array": "^1.2.1",
-        "@jridgewell/sourcemap-codec": "^1.4.10",
-        "@jridgewell/trace-mapping": "^0.3.24"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/resolve-uri": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
-      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/set-array": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
-      "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/source-map": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
-      "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jridgewell/gen-mapping": "^0.3.5",
-        "@jridgewell/trace-mapping": "^0.3.25"
-      }
-    },
-    "node_modules/@jridgewell/sourcemap-codec": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
-      "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@jridgewell/trace-mapping": {
-      "version": "0.3.25",
-      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
-      "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/resolve-uri": "^3.1.0",
-        "@jridgewell/sourcemap-codec": "^1.4.14"
-      }
-    },
-    "node_modules/@jsonjoy.com/base64": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz",
-      "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==",
-      "dev": true,
-      "engines": {
-        "node": ">=10.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/streamich"
-      },
-      "peerDependencies": {
-        "tslib": "2"
-      }
-    },
-    "node_modules/@jsonjoy.com/json-pack": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz",
-      "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==",
-      "dev": true,
-      "dependencies": {
-        "@jsonjoy.com/base64": "^1.1.1",
-        "@jsonjoy.com/util": "^1.1.2",
-        "hyperdyperid": "^1.2.0",
-        "thingies": "^1.20.0"
-      },
-      "engines": {
-        "node": ">=10.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/streamich"
-      },
-      "peerDependencies": {
-        "tslib": "2"
-      }
-    },
-    "node_modules/@jsonjoy.com/util": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.2.0.tgz",
-      "integrity": "sha512-4B8B+3vFsY4eo33DMKyJPlQ3sBMpPFUZK2dr3O3rXrOGKKbYG44J0XSFkDo1VOQiri5HFEhIeVvItjR2xcazmg==",
-      "dev": true,
-      "engines": {
-        "node": ">=10.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/streamich"
-      },
-      "peerDependencies": {
-        "tslib": "2"
-      }
-    },
-    "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==",
-      "dev": true
-    },
-    "node_modules/@nodelib/fs.scandir": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
-      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
-      "dev": true,
-      "dependencies": {
-        "@nodelib/fs.stat": "2.0.5",
-        "run-parallel": "^1.1.9"
-      },
-      "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==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "dependencies": {
-        "@nodelib/fs.scandir": "2.1.5",
-        "fastq": "^1.6.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@pkgjs/parseargs": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
-      "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
-      "dev": true,
-      "optional": true,
-      "engines": {
-        "node": ">=14"
-      }
-    },
-    "node_modules/@rollup/rollup-android-arm-eabi": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz",
-      "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "android"
-      ]
-    },
-    "node_modules/@rollup/rollup-android-arm64": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz",
-      "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "android"
-      ]
-    },
-    "node_modules/@rollup/rollup-darwin-arm64": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz",
-      "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ]
-    },
-    "node_modules/@rollup/rollup-darwin-x64": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz",
-      "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz",
-      "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-arm-musleabihf": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz",
-      "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-arm64-gnu": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz",
-      "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-arm64-musl": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz",
-      "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz",
-      "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==",
-      "cpu": [
-        "ppc64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-riscv64-gnu": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz",
-      "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==",
-      "cpu": [
-        "riscv64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-s390x-gnu": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz",
-      "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==",
-      "cpu": [
-        "s390x"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-x64-gnu": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz",
-      "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-x64-musl": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz",
-      "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-win32-arm64-msvc": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz",
-      "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
-    "node_modules/@rollup/rollup-win32-ia32-msvc": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz",
-      "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
-    "node_modules/@rollup/rollup-win32-x64-msvc": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz",
-      "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
-    "node_modules/@tailwindcss/typography": {
-      "version": "0.5.13",
-      "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.13.tgz",
-      "integrity": "sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==",
-      "dev": true,
-      "dependencies": {
-        "lodash.castarray": "^4.4.0",
-        "lodash.isplainobject": "^4.0.6",
-        "lodash.merge": "^4.6.2",
-        "postcss-selector-parser": "6.0.10"
-      },
-      "peerDependencies": {
-        "tailwindcss": ">=3.0.0 || insiders"
-      }
-    },
-    "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": {
-      "version": "6.0.10",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
-      "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
-      "dev": true,
-      "dependencies": {
-        "cssesc": "^3.0.0",
-        "util-deprecate": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@types/body-parser": {
-      "version": "1.19.5",
-      "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
-      "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "dependencies": {
-        "@types/express-serve-static-core": "*",
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/eslint": {
-      "version": "8.56.10",
-      "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz",
-      "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/eslint": "*",
-        "@types/estree": "*"
-      }
-    },
-    "node_modules/@types/estree": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
-      "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/express": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
-      "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
-      "dev": true,
-      "dependencies": {
-        "@types/body-parser": "*",
-        "@types/express-serve-static-core": "^4.17.33",
-        "@types/qs": "*",
-        "@types/serve-static": "*"
-      }
-    },
-    "node_modules/@types/express-serve-static-core": {
-      "version": "4.19.5",
-      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz",
-      "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*",
-        "@types/qs": "*",
-        "@types/range-parser": "*",
-        "@types/send": "*"
-      }
-    },
-    "node_modules/@types/http-errors": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
-      "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
-      "dev": true
-    },
-    "node_modules/@types/http-proxy": {
-      "version": "1.17.14",
-      "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz",
-      "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/json-schema": {
-      "version": "7.0.15",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
-      "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/mime": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
-      "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
-      "dev": true
-    },
-    "node_modules/@types/node": {
-      "version": "20.14.9",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz",
-      "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "undici-types": "~5.26.4"
-      }
-    },
-    "node_modules/@types/node-forge": {
-      "version": "1.3.11",
-      "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz",
-      "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/qs": {
-      "version": "6.9.15",
-      "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz",
-      "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==",
-      "dev": true
-    },
-    "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==",
-      "dev": true
-    },
-    "node_modules/@types/retry": {
-      "version": "0.12.2",
-      "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz",
-      "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==",
-      "dev": true
-    },
-    "node_modules/@types/send": {
-      "version": "0.17.4",
-      "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
-      "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
-      "dev": true,
-      "dependencies": {
-        "@types/mime": "^1",
-        "@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==",
-      "dev": true,
-      "dependencies": {
-        "@types/express": "*"
-      }
-    },
-    "node_modules/@types/serve-static": {
-      "version": "1.15.7",
-      "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
-      "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
-      "dev": true,
-      "dependencies": {
-        "@types/http-errors": "*",
-        "@types/node": "*",
-        "@types/send": "*"
-      }
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/ws": {
-      "version": "8.5.10",
-      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
-      "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@vitest/coverage-v8": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.0.5.tgz",
-      "integrity": "sha512-qeFcySCg5FLO2bHHSa0tAZAOnAUbp4L6/A5JDuj9+bt53JREl8hpLjLHEWF0e/gWc8INVpJaqA7+Ene2rclpZg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@ampproject/remapping": "^2.3.0",
-        "@bcoe/v8-coverage": "^0.2.3",
-        "debug": "^4.3.5",
-        "istanbul-lib-coverage": "^3.2.2",
-        "istanbul-lib-report": "^3.0.1",
-        "istanbul-lib-source-maps": "^5.0.6",
-        "istanbul-reports": "^3.1.7",
-        "magic-string": "^0.30.10",
-        "magicast": "^0.3.4",
-        "std-env": "^3.7.0",
-        "test-exclude": "^7.0.1",
-        "tinyrainbow": "^1.2.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/vitest"
-      },
-      "peerDependencies": {
-        "vitest": "2.0.5"
-      }
-    },
-    "node_modules/@vitest/coverage-v8/node_modules/debug": {
-      "version": "4.3.6",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
-      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@vitest/coverage-v8/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@vitest/expect": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz",
-      "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@vitest/spy": "2.0.5",
-        "@vitest/utils": "2.0.5",
-        "chai": "^5.1.1",
-        "tinyrainbow": "^1.2.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/vitest"
-      }
-    },
-    "node_modules/@vitest/pretty-format": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz",
-      "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "tinyrainbow": "^1.2.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/vitest"
-      }
-    },
-    "node_modules/@vitest/runner": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.5.tgz",
-      "integrity": "sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@vitest/utils": "2.0.5",
-        "pathe": "^1.1.2"
-      },
-      "funding": {
-        "url": "https://opencollective.com/vitest"
-      }
-    },
-    "node_modules/@vitest/snapshot": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.5.tgz",
-      "integrity": "sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@vitest/pretty-format": "2.0.5",
-        "magic-string": "^0.30.10",
-        "pathe": "^1.1.2"
-      },
-      "funding": {
-        "url": "https://opencollective.com/vitest"
-      }
-    },
-    "node_modules/@vitest/spy": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz",
-      "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "tinyspy": "^3.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/vitest"
-      }
-    },
-    "node_modules/@vitest/utils": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz",
-      "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@vitest/pretty-format": "2.0.5",
-        "estree-walker": "^3.0.3",
-        "loupe": "^3.1.1",
-        "tinyrainbow": "^1.2.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/vitest"
-      }
-    },
-    "node_modules/@webassemblyjs/ast": {
-      "version": "1.12.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
-      "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/helper-numbers": "1.11.6",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
-      }
-    },
-    "node_modules/@webassemblyjs/floating-point-hex-parser": {
-      "version": "1.11.6",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
-      "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/helper-api-error": {
-      "version": "1.11.6",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
-      "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/helper-buffer": {
-      "version": "1.12.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
-      "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/helper-numbers": {
-      "version": "1.11.6",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
-      "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/floating-point-hex-parser": "1.11.6",
-        "@webassemblyjs/helper-api-error": "1.11.6",
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "node_modules/@webassemblyjs/helper-wasm-bytecode": {
-      "version": "1.11.6",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
-      "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/helper-wasm-section": {
-      "version": "1.12.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
-      "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.12.1",
-        "@webassemblyjs/helper-buffer": "1.12.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
-        "@webassemblyjs/wasm-gen": "1.12.1"
-      }
-    },
-    "node_modules/@webassemblyjs/ieee754": {
-      "version": "1.11.6",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
-      "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@xtuc/ieee754": "^1.2.0"
-      }
-    },
-    "node_modules/@webassemblyjs/leb128": {
-      "version": "1.11.6",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
-      "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "node_modules/@webassemblyjs/utf8": {
-      "version": "1.11.6",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
-      "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/wasm-edit": {
-      "version": "1.12.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
-      "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.12.1",
-        "@webassemblyjs/helper-buffer": "1.12.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
-        "@webassemblyjs/helper-wasm-section": "1.12.1",
-        "@webassemblyjs/wasm-gen": "1.12.1",
-        "@webassemblyjs/wasm-opt": "1.12.1",
-        "@webassemblyjs/wasm-parser": "1.12.1",
-        "@webassemblyjs/wast-printer": "1.12.1"
-      }
-    },
-    "node_modules/@webassemblyjs/wasm-gen": {
-      "version": "1.12.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
-      "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.12.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
-        "@webassemblyjs/ieee754": "1.11.6",
-        "@webassemblyjs/leb128": "1.11.6",
-        "@webassemblyjs/utf8": "1.11.6"
-      }
-    },
-    "node_modules/@webassemblyjs/wasm-opt": {
-      "version": "1.12.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
-      "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.12.1",
-        "@webassemblyjs/helper-buffer": "1.12.1",
-        "@webassemblyjs/wasm-gen": "1.12.1",
-        "@webassemblyjs/wasm-parser": "1.12.1"
-      }
-    },
-    "node_modules/@webassemblyjs/wasm-parser": {
-      "version": "1.12.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
-      "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.12.1",
-        "@webassemblyjs/helper-api-error": "1.11.6",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
-        "@webassemblyjs/ieee754": "1.11.6",
-        "@webassemblyjs/leb128": "1.11.6",
-        "@webassemblyjs/utf8": "1.11.6"
-      }
-    },
-    "node_modules/@webassemblyjs/wast-printer": {
-      "version": "1.12.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
-      "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.12.1",
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "node_modules/@webpack-cli/configtest": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
-      "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==",
-      "dev": true,
-      "engines": {
-        "node": ">=14.15.0"
-      },
-      "peerDependencies": {
-        "webpack": "5.x.x",
-        "webpack-cli": "5.x.x"
-      }
-    },
-    "node_modules/@webpack-cli/info": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz",
-      "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==",
-      "dev": true,
-      "engines": {
-        "node": ">=14.15.0"
-      },
-      "peerDependencies": {
-        "webpack": "5.x.x",
-        "webpack-cli": "5.x.x"
-      }
-    },
-    "node_modules/@webpack-cli/serve": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz",
-      "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=14.15.0"
-      },
-      "peerDependencies": {
-        "webpack": "5.x.x",
-        "webpack-cli": "5.x.x"
-      },
-      "peerDependenciesMeta": {
-        "webpack-dev-server": {
-          "optional": true
-        }
-      }
-    },
-    "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==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "license": "Apache-2.0"
-    },
-    "node_modules/@yarnpkg/lockfile": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
-      "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
-      "dev": true,
-      "license": "BSD-2-Clause"
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "mime-types": "~2.1.34",
-        "negotiator": "0.6.3"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/acorn": {
-      "version": "8.12.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
-      "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/acorn-import-attributes": {
-      "version": "1.9.5",
-      "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
-      "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
-      "dev": true,
-      "license": "MIT",
-      "peerDependencies": {
-        "acorn": "^8"
-      }
-    },
-    "node_modules/ajv": {
-      "version": "8.16.0",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz",
-      "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.3",
-        "json-schema-traverse": "^1.0.0",
-        "require-from-string": "^2.0.2",
-        "uri-js": "^4.4.1"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-    "node_modules/ajv-formats": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
-      "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ajv": "^8.0.0"
-      },
-      "peerDependencies": {
-        "ajv": "^8.0.0"
-      },
-      "peerDependenciesMeta": {
-        "ajv": {
-          "optional": true
-        }
-      }
-    },
-    "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==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.3"
-      },
-      "peerDependencies": {
-        "ajv": "^8.8.2"
-      }
-    },
-    "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==",
-      "dev": true,
-      "engines": [
-        "node >= 0.8.0"
-      ],
-      "bin": {
-        "ansi-html": "bin/ansi-html"
-      }
-    },
-    "node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/ansi-styles": {
-      "version": "6.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
-      "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/any-promise": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
-      "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
-      "dev": true
-    },
-    "node_modules/anymatch": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
-      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
-      "dev": true,
-      "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==",
-      "dev": true
-    },
-    "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==",
-      "dev": true
-    },
-    "node_modules/assertion-error": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
-      "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/at-least-node": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
-      "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
-      "dev": true,
-      "license": "ISC",
-      "engines": {
-        "node": ">= 4.0.0"
-      }
-    },
-    "node_modules/babel-loader": {
-      "version": "9.1.3",
-      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz",
-      "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==",
-      "dev": true,
-      "dependencies": {
-        "find-cache-dir": "^4.0.0",
-        "schema-utils": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 14.15.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.12.0",
-        "webpack": ">=5"
-      }
-    },
-    "node_modules/balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true
-    },
-    "node_modules/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==",
-      "dev": true
-    },
-    "node_modules/binary-extensions": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
-      "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/body-parser": {
-      "version": "1.20.2",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
-      "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
-      "dev": true,
-      "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.0",
-        "iconv-lite": "0.4.24",
-        "on-finished": "2.4.1",
-        "qs": "6.11.0",
-        "raw-body": "2.5.2",
-        "type-is": "~1.6.18",
-        "unpipe": "1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8",
-        "npm": "1.2.8000 || >= 1.4.16"
-      }
-    },
-    "node_modules/bonjour-service": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz",
-      "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==",
-      "dev": true,
-      "dependencies": {
-        "fast-deep-equal": "^3.1.3",
-        "multicast-dns": "^7.2.5"
-      }
-    },
-    "node_modules/brace-expansion": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-      "dev": true,
-      "dependencies": {
-        "balanced-match": "^1.0.0"
-      }
-    },
-    "node_modules/braces": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
-      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
-      "dev": true,
-      "dependencies": {
-        "fill-range": "^7.1.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/browserslist": {
-      "version": "4.23.1",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz",
-      "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/browserslist"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "caniuse-lite": "^1.0.30001629",
-        "electron-to-chromium": "^1.4.796",
-        "node-releases": "^2.0.14",
-        "update-browserslist-db": "^1.0.16"
-      },
-      "bin": {
-        "browserslist": "cli.js"
-      },
-      "engines": {
-        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
-      }
-    },
-    "node_modules/buffer-from": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
-      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/bundle-name": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
-      "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
-      "dev": true,
-      "dependencies": {
-        "run-applescript": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=18"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/bytes": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/cac": {
-      "version": "6.7.14",
-      "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
-      "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/call-bind": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
-      "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
-      "dev": true,
-      "dependencies": {
-        "es-define-property": "^1.0.0",
-        "es-errors": "^1.3.0",
-        "function-bind": "^1.1.2",
-        "get-intrinsic": "^1.2.4",
-        "set-function-length": "^1.2.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/camelcase-css": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
-      "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/caniuse-lite": {
-      "version": "1.0.30001640",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz",
-      "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "CC-BY-4.0"
-    },
-    "node_modules/chai": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz",
-      "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "assertion-error": "^2.0.1",
-        "check-error": "^2.1.1",
-        "deep-eql": "^5.0.1",
-        "loupe": "^3.1.0",
-        "pathval": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dev": true,
-      "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/chalk/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/check-error": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
-      "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 16"
-      }
-    },
-    "node_modules/chokidar": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
-      "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-      "dev": true,
-      "dependencies": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
-      },
-      "engines": {
-        "node": ">= 8.10.0"
-      },
-      "funding": {
-        "url": "https://paulmillr.com/funding/"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/chokidar/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "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==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/sibiraj-s"
-        }
-      ],
-      "license": "MIT",
-      "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==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4",
-        "kind-of": "^6.0.2",
-        "shallow-clone": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
-    },
-    "node_modules/colorette": {
-      "version": "2.0.19",
-      "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
-      "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
-      "dev": true
-    },
-    "node_modules/commander": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
-      "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/common-path-prefix": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
-      "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
-      "dev": true
-    },
-    "node_modules/compressible": {
-      "version": "2.0.18",
-      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
-      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
-      "dev": true,
-      "dependencies": {
-        "mime-db": ">= 1.43.0 < 2"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/compression": {
-      "version": "1.7.4",
-      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
-      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
-      "dev": true,
-      "dependencies": {
-        "accepts": "~1.3.5",
-        "bytes": "3.0.0",
-        "compressible": "~2.0.16",
-        "debug": "2.6.9",
-        "on-headers": "~1.0.2",
-        "safe-buffer": "5.1.2",
-        "vary": "~1.1.2"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/compression/node_modules/bytes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/compression/node_modules/safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-      "dev": true
-    },
-    "node_modules/concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "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==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "5.2.1"
-      },
-      "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==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "peer": true
-    },
-    "node_modules/cookie": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
-      "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/cookie-signature": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
-      "dev": true
-    },
-    "node_modules/core-util-is": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
-      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
-      "dev": true
-    },
-    "node_modules/cross-spawn": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
-      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-      "dev": true,
-      "dependencies": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/cssesc": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
-      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
-      "dev": true,
-      "bin": {
-        "cssesc": "bin/cssesc"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/deep-eql": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
-      "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/default-browser": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
-      "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
-      "dev": true,
-      "dependencies": {
-        "bundle-name": "^4.1.0",
-        "default-browser-id": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=18"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/default-browser-id": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
-      "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
-      "dev": true,
-      "engines": {
-        "node": ">=18"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "execa": "^5.0.0"
-      },
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/define-data-property": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
-      "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
-      "dev": true,
-      "dependencies": {
-        "es-define-property": "^1.0.0",
-        "es-errors": "^1.3.0",
-        "gopd": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/define-lazy-prop": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
-      "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "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==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8",
-        "npm": "1.2.8000 || >= 1.4.16"
-      }
-    },
-    "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==",
-      "dev": true
-    },
-    "node_modules/didyoumean": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
-      "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
-      "dev": true
-    },
-    "node_modules/dlv": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
-      "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
-      "dev": true
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "@leichtgewicht/ip-codec": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/eastasianwidth": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
-      "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
-      "dev": true
-    },
-    "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==",
-      "dev": true
-    },
-    "node_modules/electron-to-chromium": {
-      "version": "1.4.816",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz",
-      "integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==",
-      "dev": true,
-      "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==",
-      "dev": true
-    },
-    "node_modules/encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/enhanced-resolve": {
-      "version": "5.17.0",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
-      "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "graceful-fs": "^4.2.4",
-        "tapable": "^2.2.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==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=0.12"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/entities?sponsor=1"
-      }
-    },
-    "node_modules/envinfo": {
-      "version": "7.13.0",
-      "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz",
-      "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==",
-      "dev": true,
-      "bin": {
-        "envinfo": "dist/cli.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/es-define-property": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
-      "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
-      "dev": true,
-      "dependencies": {
-        "get-intrinsic": "^1.2.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/es-errors": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
-      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/es-module-lexer": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
-      "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/esbuild": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
-      "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
-      "dev": true,
-      "hasInstallScript": true,
-      "license": "MIT",
-      "bin": {
-        "esbuild": "bin/esbuild"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "optionalDependencies": {
-        "@esbuild/aix-ppc64": "0.21.5",
-        "@esbuild/android-arm": "0.21.5",
-        "@esbuild/android-arm64": "0.21.5",
-        "@esbuild/android-x64": "0.21.5",
-        "@esbuild/darwin-arm64": "0.21.5",
-        "@esbuild/darwin-x64": "0.21.5",
-        "@esbuild/freebsd-arm64": "0.21.5",
-        "@esbuild/freebsd-x64": "0.21.5",
-        "@esbuild/linux-arm": "0.21.5",
-        "@esbuild/linux-arm64": "0.21.5",
-        "@esbuild/linux-ia32": "0.21.5",
-        "@esbuild/linux-loong64": "0.21.5",
-        "@esbuild/linux-mips64el": "0.21.5",
-        "@esbuild/linux-ppc64": "0.21.5",
-        "@esbuild/linux-riscv64": "0.21.5",
-        "@esbuild/linux-s390x": "0.21.5",
-        "@esbuild/linux-x64": "0.21.5",
-        "@esbuild/netbsd-x64": "0.21.5",
-        "@esbuild/openbsd-x64": "0.21.5",
-        "@esbuild/sunos-x64": "0.21.5",
-        "@esbuild/win32-arm64": "0.21.5",
-        "@esbuild/win32-ia32": "0.21.5",
-        "@esbuild/win32-x64": "0.21.5"
-      }
-    },
-    "node_modules/escalade": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
-      "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "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==",
-      "dev": true
-    },
-    "node_modules/escape-string-regexp": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
-      "dev": true,
-      "peer": true,
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "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==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/esrecurse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "estraverse": "^5.2.0"
-      },
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/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==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/estree-walker": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
-      "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0"
-      }
-    },
-    "node_modules/etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/eventemitter3": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
-      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
-      "dev": true
-    },
-    "node_modules/events": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
-      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "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/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==",
-      "dev": true
-    },
-    "node_modules/express": {
-      "version": "4.19.2",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
-      "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
-      "dev": true,
-      "dependencies": {
-        "accepts": "~1.3.8",
-        "array-flatten": "1.1.1",
-        "body-parser": "1.20.2",
-        "content-disposition": "0.5.4",
-        "content-type": "~1.0.4",
-        "cookie": "0.6.0",
-        "cookie-signature": "1.0.6",
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "finalhandler": "1.2.0",
-        "fresh": "0.5.2",
-        "http-errors": "2.0.0",
-        "merge-descriptors": "1.0.1",
-        "methods": "~1.1.2",
-        "on-finished": "2.4.1",
-        "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.7",
-        "proxy-addr": "~2.0.7",
-        "qs": "6.11.0",
-        "range-parser": "~1.2.1",
-        "safe-buffer": "5.2.1",
-        "send": "0.18.0",
-        "serve-static": "1.15.0",
-        "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"
-      }
-    },
-    "node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/fast-glob": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
-      "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
-      "dev": true,
-      "dependencies": {
-        "@nodelib/fs.stat": "^2.0.2",
-        "@nodelib/fs.walk": "^1.2.3",
-        "glob-parent": "^5.1.2",
-        "merge2": "^1.3.0",
-        "micromatch": "^4.0.4"
-      },
-      "engines": {
-        "node": ">=8.6.0"
-      }
-    },
-    "node_modules/fast-glob/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/fastest-levenshtein": {
-      "version": "1.0.16",
-      "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
-      "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 4.9.1"
-      }
-    },
-    "node_modules/fastq": {
-      "version": "1.17.1",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
-      "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "dependencies": {
-        "websocket-driver": ">=0.5.1"
-      },
-      "engines": {
-        "node": ">=0.8.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==",
-      "dev": true,
-      "dependencies": {
-        "to-regex-range": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/finalhandler": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
-      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
-      "dev": true,
-      "dependencies": {
-        "debug": "2.6.9",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "on-finished": "2.4.1",
-        "parseurl": "~1.3.3",
-        "statuses": "2.0.1",
-        "unpipe": "~1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/find-cache-dir": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz",
-      "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==",
-      "dev": true,
-      "dependencies": {
-        "common-path-prefix": "^3.0.0",
-        "pkg-dir": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/find-up": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
-      "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
-      "dev": true,
-      "dependencies": {
-        "locate-path": "^7.1.0",
-        "path-exists": "^5.0.0"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/find-yarn-workspace-root": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz",
-      "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "micromatch": "^4.0.2"
-      }
-    },
-    "node_modules/flat": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
-      "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
-      "dev": true,
-      "bin": {
-        "flat": "cli.js"
-      }
-    },
-    "node_modules/follow-redirects": {
-      "version": "1.15.6",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
-      "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "individual",
-          "url": "https://github.com/sponsors/RubenVerborgh"
-        }
-      ],
-      "engines": {
-        "node": ">=4.0"
-      },
-      "peerDependenciesMeta": {
-        "debug": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/foreground-child": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz",
-      "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==",
-      "dev": true,
-      "dependencies": {
-        "cross-spawn": "^7.0.0",
-        "signal-exit": "^4.0.1"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/forwarded": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
-      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/fs-extra": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
-      "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "at-least-node": "^1.0.0",
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^6.0.1",
-        "universalify": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/fsevents": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
-      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
-    "node_modules/function-bind": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
-      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
-      "dev": true,
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/gensync": {
-      "version": "1.0.0-beta.2",
-      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
-      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
-      "dev": true,
-      "peer": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/get-func-name": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
-      "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/get-intrinsic": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
-      "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
-      "dev": true,
-      "dependencies": {
-        "es-errors": "^1.3.0",
-        "function-bind": "^1.1.2",
-        "has-proto": "^1.0.1",
-        "has-symbols": "^1.0.3",
-        "hasown": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/get-stream": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
-      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/glob": {
-      "version": "10.4.2",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz",
-      "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==",
-      "dev": true,
-      "dependencies": {
-        "foreground-child": "^3.1.0",
-        "jackspeak": "^3.1.2",
-        "minimatch": "^9.0.4",
-        "minipass": "^7.1.2",
-        "package-json-from-dist": "^1.0.0",
-        "path-scurry": "^1.11.1"
-      },
-      "bin": {
-        "glob": "dist/esm/bin.mjs"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.18"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/glob-parent": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
-      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^4.0.3"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "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==",
-      "dev": true,
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/globals": {
-      "version": "11.12.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
-      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
-      "dev": true,
-      "peer": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/gopd": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
-      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
-      "dev": true,
-      "dependencies": {
-        "get-intrinsic": "^1.1.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/graceful-fs": {
-      "version": "4.2.11",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
-      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
-      "dev": true,
-      "license": "ISC"
-    },
-    "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==",
-      "dev": true
-    },
-    "node_modules/happy-dom": {
-      "version": "14.12.3",
-      "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-14.12.3.tgz",
-      "integrity": "sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "entities": "^4.5.0",
-        "webidl-conversions": "^7.0.0",
-        "whatwg-mimetype": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=16.0.0"
-      }
-    },
-    "node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/has-property-descriptors": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
-      "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
-      "dev": true,
-      "dependencies": {
-        "es-define-property": "^1.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-proto": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
-      "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-symbols": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
-      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/hasown": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
-      "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "obuf": "^1.0.0",
-        "readable-stream": "^2.0.1",
-        "wbuf": "^1.1.0"
-      }
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.3",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~2.0.0",
-        "safe-buffer": "~5.1.1",
-        "string_decoder": "~1.1.1",
-        "util-deprecate": "~1.0.1"
-      }
-    },
-    "node_modules/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==",
-      "dev": true
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "node_modules/html-entities": {
-      "version": "2.5.2",
-      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz",
-      "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/mdevils"
-        },
-        {
-          "type": "patreon",
-          "url": "https://patreon.com/mdevils"
-        }
-      ]
-    },
-    "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==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "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==",
-      "dev": true
-    },
-    "node_modules/http-errors": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
-      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
-      "dev": true,
-      "dependencies": {
-        "depd": "2.0.0",
-        "inherits": "2.0.4",
-        "setprototypeof": "1.2.0",
-        "statuses": "2.0.1",
-        "toidentifier": "1.0.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/http-parser-js": {
-      "version": "0.5.8",
-      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
-      "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==",
-      "dev": true
-    },
-    "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==",
-      "dev": true,
-      "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.6",
-      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
-      "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
-      "dev": true,
-      "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/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==",
-      "dev": true,
-      "engines": {
-        "node": ">=10.17.0"
-      }
-    },
-    "node_modules/hyperdyperid": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz",
-      "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==",
-      "dev": true,
-      "engines": {
-        "node": ">=10.18"
-      }
-    },
-    "node_modules/iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-      "dev": true,
-      "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/import-local": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
-      "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
-      "dev": true,
-      "dependencies": {
-        "pkg-dir": "^4.2.0",
-        "resolve-cwd": "^3.0.0"
-      },
-      "bin": {
-        "import-local-fixture": "fixtures/cli.js"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/import-local/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==",
-      "dev": true,
-      "dependencies": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/import-local/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==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/import-local/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==",
-      "dev": true,
-      "dependencies": {
-        "p-try": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/import-local/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==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/import-local/node_modules/path-exists": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/import-local/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==",
-      "dev": true,
-      "dependencies": {
-        "find-up": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
-      "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
-      "dev": true,
-      "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==",
-      "dev": true
-    },
-    "node_modules/interpret": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
-      "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "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==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/is-binary-path": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
-      "dependencies": {
-        "binary-extensions": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-core-module": {
-      "version": "2.14.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz",
-      "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==",
-      "dev": true,
-      "dependencies": {
-        "hasown": "^2.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-docker": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
-      "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
-      "dev": true,
-      "bin": {
-        "is-docker": "cli.js"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-fullwidth-code-point": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "dependencies": {
-        "is-extglob": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-inside-container": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
-      "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
-      "dev": true,
-      "dependencies": {
-        "is-docker": "^3.0.0"
-      },
-      "bin": {
-        "is-inside-container": "cli.js"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/is-network-error": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz",
-      "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==",
-      "dev": true,
-      "engines": {
-        "node": ">=16"
-      },
-      "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==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "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==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "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==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/is-wsl": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
-      "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
-      "dev": true,
-      "dependencies": {
-        "is-inside-container": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
-      "dev": true
-    },
-    "node_modules/isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
-      "dev": true
-    },
-    "node_modules/isobject": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/istanbul-lib-coverage": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
-      "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/istanbul-lib-report": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
-      "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "istanbul-lib-coverage": "^3.0.0",
-        "make-dir": "^4.0.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/istanbul-lib-source-maps": {
-      "version": "5.0.6",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz",
-      "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@jridgewell/trace-mapping": "^0.3.23",
-        "debug": "^4.1.1",
-        "istanbul-lib-coverage": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/istanbul-lib-source-maps/node_modules/debug": {
-      "version": "4.3.6",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
-      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/istanbul-lib-source-maps/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/istanbul-reports": {
-      "version": "3.1.7",
-      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
-      "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "html-escaper": "^2.0.0",
-        "istanbul-lib-report": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jackspeak": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz",
-      "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==",
-      "dev": true,
-      "dependencies": {
-        "@isaacs/cliui": "^8.0.2"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      },
-      "optionalDependencies": {
-        "@pkgjs/parseargs": "^0.11.0"
-      }
-    },
-    "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==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*",
-        "merge-stream": "^2.0.0",
-        "supports-color": "^8.0.0"
-      },
-      "engines": {
-        "node": ">= 10.13.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==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/supports-color?sponsor=1"
-      }
-    },
-    "node_modules/jiti": {
-      "version": "1.21.6",
-      "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
-      "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
-      "dev": true,
-      "bin": {
-        "jiti": "bin/jiti.js"
-      }
-    },
-    "node_modules/js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "dev": true,
-      "peer": true
-    },
-    "node_modules/jsesc": {
-      "version": "2.5.2",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
-      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
-      "dev": true,
-      "peer": true,
-      "bin": {
-        "jsesc": "bin/jsesc"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "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==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/json-schema-traverse": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
-      "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/json-stable-stringify": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz",
-      "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "call-bind": "^1.0.5",
-        "isarray": "^2.0.5",
-        "jsonify": "^0.0.1",
-        "object-keys": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/json-stable-stringify/node_modules/isarray": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
-      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/json5": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
-      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
-      "dev": true,
-      "peer": true,
-      "bin": {
-        "json5": "lib/cli.js"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jsonfile": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
-      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "universalify": "^2.0.0"
-      },
-      "optionalDependencies": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "node_modules/jsonify": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz",
-      "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==",
-      "dev": true,
-      "license": "Public Domain",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/kind-of": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/klaw-sync": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
-      "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "graceful-fs": "^4.1.11"
-      }
-    },
-    "node_modules/launch-editor": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz",
-      "integrity": "sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^1.0.0",
-        "shell-quote": "^1.8.1"
-      }
-    },
-    "node_modules/lilconfig": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
-      "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
-      "dev": true,
-      "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==",
-      "dev": true
-    },
-    "node_modules/loader-runner": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
-      "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.11.5"
-      }
-    },
-    "node_modules/locate-path": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
-      "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^6.0.0"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/lodash.castarray": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
-      "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
-      "dev": true
-    },
-    "node_modules/lodash.isplainobject": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
-      "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
-      "dev": true
-    },
-    "node_modules/lodash.merge": {
-      "version": "4.6.2",
-      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
-      "dev": true
-    },
-    "node_modules/loupe": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz",
-      "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "get-func-name": "^2.0.1"
-      }
-    },
-    "node_modules/lru-cache": {
-      "version": "10.3.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz",
-      "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==",
-      "dev": true,
-      "engines": {
-        "node": "14 || >=16.14"
-      }
-    },
-    "node_modules/magic-string": {
-      "version": "0.30.11",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
-      "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jridgewell/sourcemap-codec": "^1.5.0"
-      }
-    },
-    "node_modules/magicast": {
-      "version": "0.3.4",
-      "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.4.tgz",
-      "integrity": "sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/parser": "^7.24.4",
-        "@babel/types": "^7.24.0",
-        "source-map-js": "^1.2.0"
-      }
-    },
-    "node_modules/make-dir": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
-      "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "semver": "^7.5.3"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/make-dir/node_modules/semver": {
-      "version": "7.6.3",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
-      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "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==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
-      "dev": true
-    },
-    "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==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/micromatch": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
-      "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/mime-db": {
-      "version": "1.52.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mime-types": {
-      "version": "2.1.35",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
-      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mime-db": "1.52.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==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/minimalistic-assert": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
-      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
-      "dev": true
-    },
-    "node_modules/minimatch": {
-      "version": "9.0.5",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-      "dev": true,
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/minimist": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
-      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
-      "dev": true,
-      "license": "MIT",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/minipass": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
-      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
-      "dev": true,
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      }
-    },
-    "node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "dev": true
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "dns-packet": "^5.2.2",
-        "thunky": "^1.0.2"
-      },
-      "bin": {
-        "multicast-dns": "cli.js"
-      }
-    },
-    "node_modules/mz": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
-      "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
-      "dev": true,
-      "dependencies": {
-        "any-promise": "^1.0.0",
-        "object-assign": "^4.0.1",
-        "thenify-all": "^1.0.0"
-      }
-    },
-    "node_modules/nanoid": {
-      "version": "3.3.7",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
-      "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "bin": {
-        "nanoid": "bin/nanoid.cjs"
-      },
-      "engines": {
-        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
-      }
-    },
-    "node_modules/negotiator": {
-      "version": "0.6.3",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
-      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/node-forge": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
-      "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6.13.0"
-      }
-    },
-    "node_modules/node-releases": {
-      "version": "2.0.14",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
-      "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/normalize-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "path-key": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-hash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
-      "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/object-inspect": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
-      "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/obuf": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
-      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
-      "dev": true
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "ee-first": "1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/on-headers": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
-      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "dependencies": {
-        "mimic-fn": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/open": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz",
-      "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==",
-      "dev": true,
-      "dependencies": {
-        "default-browser": "^5.2.1",
-        "define-lazy-prop": "^3.0.0",
-        "is-inside-container": "^1.0.0",
-        "is-wsl": "^3.1.0"
-      },
-      "engines": {
-        "node": ">=18"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/os-tmpdir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
-      "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/p-limit": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
-      "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
-      "dev": true,
-      "dependencies": {
-        "yocto-queue": "^1.0.0"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/p-locate": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
-      "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^4.0.0"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/p-retry": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz",
-      "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==",
-      "dev": true,
-      "dependencies": {
-        "@types/retry": "0.12.2",
-        "is-network-error": "^1.0.0",
-        "retry": "^0.13.1"
-      },
-      "engines": {
-        "node": ">=16.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/p-try": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/package-json-from-dist": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
-      "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
-      "dev": true
-    },
-    "node_modules/parseurl": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/patch-package": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz",
-      "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@yarnpkg/lockfile": "^1.1.0",
-        "chalk": "^4.1.2",
-        "ci-info": "^3.7.0",
-        "cross-spawn": "^7.0.3",
-        "find-yarn-workspace-root": "^2.0.0",
-        "fs-extra": "^9.0.0",
-        "json-stable-stringify": "^1.0.2",
-        "klaw-sync": "^6.0.0",
-        "minimist": "^1.2.6",
-        "open": "^7.4.2",
-        "rimraf": "^2.6.3",
-        "semver": "^7.5.3",
-        "slash": "^2.0.0",
-        "tmp": "^0.0.33",
-        "yaml": "^2.2.2"
-      },
-      "bin": {
-        "patch-package": "index.js"
-      },
-      "engines": {
-        "node": ">=14",
-        "npm": ">5"
-      }
-    },
-    "node_modules/patch-package/node_modules/brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "node_modules/patch-package/node_modules/glob": {
-      "version": "7.2.3",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
-      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
-      "deprecated": "Glob versions prior to v9 are no longer supported",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.1.1",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      },
-      "engines": {
-        "node": "*"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/patch-package/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==",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "is-docker": "cli.js"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/patch-package/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==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-docker": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/patch-package/node_modules/minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/patch-package/node_modules/open": {
-      "version": "7.4.2",
-      "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
-      "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-docker": "^2.0.0",
-        "is-wsl": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/patch-package/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "deprecated": "Rimraf versions prior to v4 are no longer supported",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/patch-package/node_modules/semver": {
-      "version": "7.6.3",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
-      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/path-exists": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
-      "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
-      "dev": true,
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      }
-    },
-    "node_modules/path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/path-key": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/path-parse": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true
-    },
-    "node_modules/path-scurry": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
-      "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "^10.2.0",
-        "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.18"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/path-to-regexp": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
-      "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
-      "dev": true
-    },
-    "node_modules/pathe": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
-      "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/pathval": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz",
-      "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 14.16"
-      }
-    },
-    "node_modules/php-cgi-wasm": {
-      "version": "0.0.9-alpha-25",
-      "resolved": "https://registry.npmjs.org/php-cgi-wasm/-/php-cgi-wasm-0.0.9-alpha-25.tgz",
-      "integrity": "sha512-vNFMWn6bsTon8hhm35R0OCZjCmA10Ld4rNCf3PSOeygQoaoiyScMxl6xgBne7kpd0I60SEfkN6jip9clv6OURQ==",
-      "dev": true,
-      "license": "Apache-2.0"
-    },
-    "node_modules/php-wasm": {
-      "version": "0.0.9-alpha-25",
-      "resolved": "https://registry.npmjs.org/php-wasm/-/php-wasm-0.0.9-alpha-25.tgz",
-      "integrity": "sha512-Sr1DfX1GvCotZbKzo8zAeKbocKgbhvRfKYZeJYCsAqZSy49BQRhHtSft0vV2HZ7+ZX1ZU16L1XTPwoIMPH+pBg==",
-      "dev": true,
-      "license": "Apache-2.0"
-    },
-    "node_modules/php-wasm-dom": {
-      "version": "0.0.9-alpha-25",
-      "resolved": "https://registry.npmjs.org/php-wasm-dom/-/php-wasm-dom-0.0.9-alpha-25.tgz",
-      "integrity": "sha512-xHYbcnBoyhot6CDJko4vFvqVhdoI1sEixXoK6Q425985F1nQNQwrfYnw13vR3iktgS/dy/AZ6n4apXkJV81G1g==",
-      "dev": true
-    },
-    "node_modules/php-wasm-gd": {
-      "version": "0.0.9-alpha-25",
-      "resolved": "https://registry.npmjs.org/php-wasm-gd/-/php-wasm-gd-0.0.9-alpha-25.tgz",
-      "integrity": "sha512-1ElIlgVDE+D9jXxHn4oDkgl9sF6CmclXP3eEYW3l6BAj6rd1EdF0JmpdVMf6zfOWoLG70c0m/ndsf/0VFhtBBA==",
-      "dev": true
-    },
-    "node_modules/php-wasm-iconv": {
-      "version": "0.0.9-alpha-25",
-      "resolved": "https://registry.npmjs.org/php-wasm-iconv/-/php-wasm-iconv-0.0.9-alpha-25.tgz",
-      "integrity": "sha512-sI56aA6pFwWEzaiWmvF8AHFesNKEfxpvuQm/2EwPKv5x361y0IjFL5YgvCifVsjrBlhKyOmzxvkJ+89zZ0ML8Q==",
-      "dev": true
-    },
-    "node_modules/php-wasm-libxml": {
-      "version": "0.0.9-alpha-25",
-      "resolved": "https://registry.npmjs.org/php-wasm-libxml/-/php-wasm-libxml-0.0.9-alpha-25.tgz",
-      "integrity": "sha512-Z1LB4yNCa6SC7Sh6pn3c4wstO4UnLrnZ3XgRIWVTAzMR94tDJWBCnhkgUPTGJaBwhAx9MWV+gtRCmfkj36IWbQ==",
-      "dev": true
-    },
-    "node_modules/php-wasm-libzip": {
-      "version": "0.0.9-alpha-25",
-      "resolved": "https://registry.npmjs.org/php-wasm-libzip/-/php-wasm-libzip-0.0.9-alpha-25.tgz",
-      "integrity": "sha512-t00u6kxmy9oG+yCsRBhyPHG62bR7gE11e7KAA1L7v/x11XficyyGWNn12shzqrWm0FhA1VkcQsGK3lzj7b/AWQ==",
-      "dev": true
-    },
-    "node_modules/php-wasm-mbstring": {
-      "version": "0.0.9-alpha-25",
-      "resolved": "https://registry.npmjs.org/php-wasm-mbstring/-/php-wasm-mbstring-0.0.9-alpha-25.tgz",
-      "integrity": "sha512-2vZkbbnjGuonuJ7HeI4IbQF6a4v9E/B9MtboZCVgP+UiRJ66nSRAkN8xCUz+fXCyq/LxKdDU0XZbboa4/mxUGg==",
-      "dev": true
-    },
-    "node_modules/php-wasm-simplexml": {
-      "version": "0.0.9-alpha-25",
-      "resolved": "https://registry.npmjs.org/php-wasm-simplexml/-/php-wasm-simplexml-0.0.9-alpha-25.tgz",
-      "integrity": "sha512-6i540HEnV9KdwnwzSTI9hQfx5bpOSzM36HWO6u4mjaf/BD+jR9xB7gDTlfX42qvmakaj5xQBh6JKtqP+NObNbw==",
-      "dev": true
-    },
-    "node_modules/php-wasm-sqlite": {
-      "version": "0.0.9-alpha-25",
-      "resolved": "https://registry.npmjs.org/php-wasm-sqlite/-/php-wasm-sqlite-0.0.9-alpha-25.tgz",
-      "integrity": "sha512-VMTGsZ6arDy+IHaqEv4JBRSMsxvyjVVTkpHLGnkqKk1ooOR+VYm0pE8bnBH3xxsImusXahzaEoQ/EgH2JXVX3w==",
-      "dev": true
-    },
-    "node_modules/php-wasm-xml": {
-      "version": "0.0.9-alpha-25",
-      "resolved": "https://registry.npmjs.org/php-wasm-xml/-/php-wasm-xml-0.0.9-alpha-25.tgz",
-      "integrity": "sha512-Gk96IaLcFXQG+VYbmXn3AaZ2nofLPodDSdrSrYjhSEo3uNEN7jnGSt7ZFjWM49jpgWQDQBTXt3P9gvtkND8uAQ==",
-      "dev": true
-    },
-    "node_modules/php-wasm-zlib": {
-      "version": "0.0.9-alpha-25",
-      "resolved": "https://registry.npmjs.org/php-wasm-zlib/-/php-wasm-zlib-0.0.9-alpha-25.tgz",
-      "integrity": "sha512-XZAWupuLbXcuZvKtrSxIXPAX81mDjIntwdDTrtuBu6r/ZyD1/lexwBs1MP5TjT0N2wEsjhmm7Z3npbue44xTng==",
-      "dev": true
-    },
-    "node_modules/picocolors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
-      "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
-      "dev": true
-    },
-    "node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/pify": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/pirates": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
-      "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/pkg-dir": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
-      "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==",
-      "dev": true,
-      "dependencies": {
-        "find-up": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/postcss": {
-      "version": "8.4.41",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz",
-      "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==",
-      "dev": true,
-      "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.7",
-        "picocolors": "^1.0.1",
-        "source-map-js": "^1.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14"
-      }
-    },
-    "node_modules/postcss-import": {
-      "version": "15.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
-      "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
-      "dev": true,
-      "dependencies": {
-        "postcss-value-parser": "^4.0.0",
-        "read-cache": "^1.0.0",
-        "resolve": "^1.1.7"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.0.0"
-      }
-    },
-    "node_modules/postcss-js": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
-      "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
-      "dev": true,
-      "dependencies": {
-        "camelcase-css": "^2.0.1"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >= 16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.21"
-      }
-    },
-    "node_modules/postcss-load-config": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
-      "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/postcss/"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "dependencies": {
-        "lilconfig": "^3.0.0",
-        "yaml": "^2.3.4"
-      },
-      "engines": {
-        "node": ">= 14"
-      },
-      "peerDependencies": {
-        "postcss": ">=8.0.9",
-        "ts-node": ">=9.0.0"
-      },
-      "peerDependenciesMeta": {
-        "postcss": {
-          "optional": true
-        },
-        "ts-node": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/postcss-load-config/node_modules/lilconfig": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",
-      "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==",
-      "dev": true,
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/antonk52"
-      }
-    },
-    "node_modules/postcss-nested": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
-      "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
-      "dev": true,
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.11"
-      },
-      "engines": {
-        "node": ">=12.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.14"
-      }
-    },
-    "node_modules/postcss-selector-parser": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz",
-      "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==",
-      "dev": true,
-      "dependencies": {
-        "cssesc": "^3.0.0",
-        "util-deprecate": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postcss-value-parser": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
-      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
-      "dev": true
-    },
-    "node_modules/process-nextick-args": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-      "dev": true
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "forwarded": "0.2.0",
-        "ipaddr.js": "1.9.1"
-      },
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/punycode": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
-      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/qs": {
-      "version": "6.11.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
-      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
-      "dev": true,
-      "dependencies": {
-        "side-channel": "^1.0.4"
-      },
-      "engines": {
-        "node": ">=0.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/queue-microtask": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/randombytes": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
-      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "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==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/raw-body": {
-      "version": "2.5.2",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
-      "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
-      "dev": true,
-      "dependencies": {
-        "bytes": "3.1.2",
-        "http-errors": "2.0.0",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/read-cache": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
-      "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
-      "dev": true,
-      "dependencies": {
-        "pify": "^2.3.0"
-      }
-    },
-    "node_modules/readable-stream": {
-      "version": "3.6.2",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
-      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/rechoir": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
-      "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
-      "dev": true,
-      "dependencies": {
-        "resolve": "^1.20.0"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      }
-    },
-    "node_modules/require-from-string": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
-      "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/requires-port": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
-      "dev": true
-    },
-    "node_modules/resolve": {
-      "version": "1.22.8",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
-      "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
-      "dev": true,
-      "dependencies": {
-        "is-core-module": "^2.13.0",
-        "path-parse": "^1.0.7",
-        "supports-preserve-symlinks-flag": "^1.0.0"
-      },
-      "bin": {
-        "resolve": "bin/resolve"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/resolve-cwd": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
-      "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
-      "dev": true,
-      "dependencies": {
-        "resolve-from": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/resolve-from": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
-      "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/retry": {
-      "version": "0.13.1",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
-      "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/reusify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
-      "dev": true,
-      "engines": {
-        "iojs": ">=1.0.0",
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/rimraf": {
-      "version": "5.0.7",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz",
-      "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^10.3.7"
-      },
-      "bin": {
-        "rimraf": "dist/esm/bin.mjs"
-      },
-      "engines": {
-        "node": ">=14.18"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/rollup": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz",
-      "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "1.0.5"
-      },
-      "bin": {
-        "rollup": "dist/bin/rollup"
-      },
-      "engines": {
-        "node": ">=18.0.0",
-        "npm": ">=8.0.0"
-      },
-      "optionalDependencies": {
-        "@rollup/rollup-android-arm-eabi": "4.20.0",
-        "@rollup/rollup-android-arm64": "4.20.0",
-        "@rollup/rollup-darwin-arm64": "4.20.0",
-        "@rollup/rollup-darwin-x64": "4.20.0",
-        "@rollup/rollup-linux-arm-gnueabihf": "4.20.0",
-        "@rollup/rollup-linux-arm-musleabihf": "4.20.0",
-        "@rollup/rollup-linux-arm64-gnu": "4.20.0",
-        "@rollup/rollup-linux-arm64-musl": "4.20.0",
-        "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0",
-        "@rollup/rollup-linux-riscv64-gnu": "4.20.0",
-        "@rollup/rollup-linux-s390x-gnu": "4.20.0",
-        "@rollup/rollup-linux-x64-gnu": "4.20.0",
-        "@rollup/rollup-linux-x64-musl": "4.20.0",
-        "@rollup/rollup-win32-arm64-msvc": "4.20.0",
-        "@rollup/rollup-win32-ia32-msvc": "4.20.0",
-        "@rollup/rollup-win32-x64-msvc": "4.20.0",
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/run-applescript": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
-      "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
-      "dev": true,
-      "engines": {
-        "node": ">=18"
-      },
-      "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==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "dependencies": {
-        "queue-microtask": "^1.2.2"
-      }
-    },
-    "node_modules/safe-buffer": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
-      "dev": true
-    },
-    "node_modules/schema-utils": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
-      "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
-      "dev": true,
-      "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": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
-    },
-    "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==",
-      "dev": true
-    },
-    "node_modules/selfsigned": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz",
-      "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
-      "dev": true,
-      "dependencies": {
-        "@types/node-forge": "^1.3.0",
-        "node-forge": "^1"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/semver": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
-      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-      "dev": true,
-      "license": "ISC",
-      "peer": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/send": {
-      "version": "0.18.0",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
-      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
-      "dev": true,
-      "dependencies": {
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "destroy": "1.2.0",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "fresh": "0.5.2",
-        "http-errors": "2.0.0",
-        "mime": "1.6.0",
-        "ms": "2.1.3",
-        "on-finished": "2.4.1",
-        "range-parser": "~1.2.1",
-        "statuses": "2.0.1"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/send/node_modules/ms": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-      "dev": true
-    },
-    "node_modules/serialize-javascript": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
-      "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "node_modules/serve-index": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
-      "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
-      "dev": true,
-      "dependencies": {
-        "accepts": "~1.3.4",
-        "batch": "0.6.1",
-        "debug": "2.6.9",
-        "escape-html": "~1.0.3",
-        "http-errors": "~1.6.2",
-        "mime-types": "~2.1.17",
-        "parseurl": "~1.3.2"
-      },
-      "engines": {
-        "node": ">= 0.8.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==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/serve-index/node_modules/http-errors": {
-      "version": "1.6.3",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-      "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
-      "dev": true,
-      "dependencies": {
-        "depd": "~1.1.2",
-        "inherits": "2.0.3",
-        "setprototypeof": "1.1.0",
-        "statuses": ">= 1.4.0 < 2"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/serve-index/node_modules/inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
-      "dev": true
-    },
-    "node_modules/serve-index/node_modules/setprototypeof": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
-      "dev": true
-    },
-    "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==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/serve-static": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
-      "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
-      "dev": true,
-      "dependencies": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.18.0"
-      },
-      "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==",
-      "dev": true,
-      "dependencies": {
-        "define-data-property": "^1.1.4",
-        "es-errors": "^1.3.0",
-        "function-bind": "^1.1.2",
-        "get-intrinsic": "^1.2.4",
-        "gopd": "^1.0.1",
-        "has-property-descriptors": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/setprototypeof": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
-      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
-      "dev": true
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/shebang-command": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-      "dev": true,
-      "dependencies": {
-        "shebang-regex": "^3.0.0"
-      },
-      "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==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/shell-quote": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
-      "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
-      "dev": true,
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/side-channel": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
-      "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.7",
-        "es-errors": "^1.3.0",
-        "get-intrinsic": "^1.2.4",
-        "object-inspect": "^1.13.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/siginfo": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
-      "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/signal-exit": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
-      "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
-      "dev": true,
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/slash": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-      "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/sockjs": {
-      "version": "0.3.24",
-      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
-      "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
-      "dev": true,
-      "dependencies": {
-        "faye-websocket": "^0.11.3",
-        "uuid": "^8.3.2",
-        "websocket-driver": "^0.7.4"
-      }
-    },
-    "node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/source-map-js": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
-      "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/source-map-support": {
-      "version": "0.5.21",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
-      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      }
-    },
-    "node_modules/spdy": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
-      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "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/spdy-transport/node_modules/debug": {
-      "version": "4.3.5",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
-      "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/spdy-transport/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true
-    },
-    "node_modules/spdy/node_modules/debug": {
-      "version": "4.3.5",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
-      "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/spdy/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true
-    },
-    "node_modules/stackback": {
-      "version": "0.0.2",
-      "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
-      "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/statuses": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
-      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/std-env": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz",
-      "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "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-cjs": {
-      "name": "string-width",
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "dev": true,
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/string-width-cjs/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==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/string-width-cjs/node_modules/emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "dev": true
-    },
-    "node_modules/string-width-cjs/node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/strip-ansi": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
-    "node_modules/strip-ansi-cjs": {
-      "name": "strip-ansi",
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/strip-ansi-cjs/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==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "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==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/sucrase": {
-      "version": "3.35.0",
-      "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
-      "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/gen-mapping": "^0.3.2",
-        "commander": "^4.0.0",
-        "glob": "^10.3.10",
-        "lines-and-columns": "^1.1.6",
-        "mz": "^2.7.0",
-        "pirates": "^4.0.1",
-        "ts-interface-checker": "^0.1.9"
-      },
-      "bin": {
-        "sucrase": "bin/sucrase",
-        "sucrase-node": "bin/sucrase-node"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      }
-    },
-    "node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/tailwindcss": {
-      "version": "3.4.4",
-      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz",
-      "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==",
-      "dev": true,
-      "dependencies": {
-        "@alloc/quick-lru": "^5.2.0",
-        "arg": "^5.0.2",
-        "chokidar": "^3.5.3",
-        "didyoumean": "^1.2.2",
-        "dlv": "^1.1.3",
-        "fast-glob": "^3.3.0",
-        "glob-parent": "^6.0.2",
-        "is-glob": "^4.0.3",
-        "jiti": "^1.21.0",
-        "lilconfig": "^2.1.0",
-        "micromatch": "^4.0.5",
-        "normalize-path": "^3.0.0",
-        "object-hash": "^3.0.0",
-        "picocolors": "^1.0.0",
-        "postcss": "^8.4.23",
-        "postcss-import": "^15.1.0",
-        "postcss-js": "^4.0.1",
-        "postcss-load-config": "^4.0.1",
-        "postcss-nested": "^6.0.1",
-        "postcss-selector-parser": "^6.0.11",
-        "resolve": "^1.22.2",
-        "sucrase": "^3.32.0"
-      },
-      "bin": {
-        "tailwind": "lib/cli.js",
-        "tailwindcss": "lib/cli.js"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/tapable": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
-      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser": {
-      "version": "5.31.1",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz",
-      "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "@jridgewell/source-map": "^0.3.3",
-        "acorn": "^8.8.2",
-        "commander": "^2.20.0",
-        "source-map-support": "~0.5.20"
-      },
-      "bin": {
-        "terser": "bin/terser"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/terser-webpack-plugin": {
-      "version": "5.3.10",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
-      "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jridgewell/trace-mapping": "^0.3.20",
-        "jest-worker": "^27.4.5",
-        "schema-utils": "^3.1.1",
-        "serialize-javascript": "^6.0.1",
-        "terser": "^5.26.0"
-      },
-      "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": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "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/terser-webpack-plugin/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==",
-      "dev": true,
-      "license": "MIT",
-      "peerDependencies": {
-        "ajv": "^6.9.1"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/terser-webpack-plugin/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==",
-      "dev": true,
-      "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/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==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/test-exclude": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz",
-      "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "@istanbuljs/schema": "^0.1.2",
-        "glob": "^10.4.1",
-        "minimatch": "^9.0.4"
-      },
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/thenify": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
-      "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
-      "dev": true,
-      "dependencies": {
-        "any-promise": "^1.0.0"
-      }
-    },
-    "node_modules/thenify-all": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
-      "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
-      "dev": true,
-      "dependencies": {
-        "thenify": ">= 3.1.0 < 4"
-      },
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/thingies": {
-      "version": "1.21.0",
-      "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz",
-      "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==",
-      "dev": true,
-      "engines": {
-        "node": ">=10.18"
-      },
-      "peerDependencies": {
-        "tslib": "^2"
-      }
-    },
-    "node_modules/thunky": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
-      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
-      "dev": true
-    },
-    "node_modules/tinybench": {
-      "version": "2.9.0",
-      "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
-      "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/tinypool": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz",
-      "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "^18.0.0 || >=20.0.0"
-      }
-    },
-    "node_modules/tinyrainbow": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz",
-      "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/tinyspy": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz",
-      "integrity": "sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/tmp": {
-      "version": "0.0.33",
-      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
-      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "os-tmpdir": "~1.0.2"
-      },
-      "engines": {
-        "node": ">=0.6.0"
-      }
-    },
-    "node_modules/to-fast-properties": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
-      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8.0"
-      }
-    },
-    "node_modules/toidentifier": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
-      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/tree-dump": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz",
-      "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=10.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/streamich"
-      },
-      "peerDependencies": {
-        "tslib": "2"
-      }
-    },
-    "node_modules/ts-interface-checker": {
-      "version": "0.1.13",
-      "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
-      "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
-      "dev": true
-    },
-    "node_modules/tslib": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
-      "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
-      "dev": true
-    },
-    "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==",
-      "dev": true,
-      "dependencies": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/undici-types": {
-      "version": "5.26.5",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
-      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/universalify": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
-      "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
-    "node_modules/unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/update-browserslist-db": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
-      "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/browserslist"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "escalade": "^3.1.2",
-        "picocolors": "^1.0.1"
-      },
-      "bin": {
-        "update-browserslist-db": "cli.js"
-      },
-      "peerDependencies": {
-        "browserslist": ">= 4.21.0"
-      }
-    },
-    "node_modules/uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "punycode": "^2.1.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==",
-      "dev": true
-    },
-    "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==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "bin": {
-        "uuid": "dist/bin/uuid"
-      }
-    },
-    "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==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/vite": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz",
-      "integrity": "sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "esbuild": "^0.21.3",
-        "postcss": "^8.4.40",
-        "rollup": "^4.13.0"
-      },
-      "bin": {
-        "vite": "bin/vite.js"
-      },
-      "engines": {
-        "node": "^18.0.0 || >=20.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/vitejs/vite?sponsor=1"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.3"
-      },
-      "peerDependencies": {
-        "@types/node": "^18.0.0 || >=20.0.0",
-        "less": "*",
-        "lightningcss": "^1.21.0",
-        "sass": "*",
-        "sass-embedded": "*",
-        "stylus": "*",
-        "sugarss": "*",
-        "terser": "^5.4.0"
-      },
-      "peerDependenciesMeta": {
-        "@types/node": {
-          "optional": true
-        },
-        "less": {
-          "optional": true
-        },
-        "lightningcss": {
-          "optional": true
-        },
-        "sass": {
-          "optional": true
-        },
-        "sass-embedded": {
-          "optional": true
-        },
-        "stylus": {
-          "optional": true
-        },
-        "sugarss": {
-          "optional": true
-        },
-        "terser": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/vite-node": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.5.tgz",
-      "integrity": "sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cac": "^6.7.14",
-        "debug": "^4.3.5",
-        "pathe": "^1.1.2",
-        "tinyrainbow": "^1.2.0",
-        "vite": "^5.0.0"
-      },
-      "bin": {
-        "vite-node": "vite-node.mjs"
-      },
-      "engines": {
-        "node": "^18.0.0 || >=20.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/vitest"
-      }
-    },
-    "node_modules/vite-node/node_modules/debug": {
-      "version": "4.3.6",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
-      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/vite-node/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/vitest": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.5.tgz",
-      "integrity": "sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@ampproject/remapping": "^2.3.0",
-        "@vitest/expect": "2.0.5",
-        "@vitest/pretty-format": "^2.0.5",
-        "@vitest/runner": "2.0.5",
-        "@vitest/snapshot": "2.0.5",
-        "@vitest/spy": "2.0.5",
-        "@vitest/utils": "2.0.5",
-        "chai": "^5.1.1",
-        "debug": "^4.3.5",
-        "execa": "^8.0.1",
-        "magic-string": "^0.30.10",
-        "pathe": "^1.1.2",
-        "std-env": "^3.7.0",
-        "tinybench": "^2.8.0",
-        "tinypool": "^1.0.0",
-        "tinyrainbow": "^1.2.0",
-        "vite": "^5.0.0",
-        "vite-node": "2.0.5",
-        "why-is-node-running": "^2.3.0"
-      },
-      "bin": {
-        "vitest": "vitest.mjs"
-      },
-      "engines": {
-        "node": "^18.0.0 || >=20.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/vitest"
-      },
-      "peerDependencies": {
-        "@edge-runtime/vm": "*",
-        "@types/node": "^18.0.0 || >=20.0.0",
-        "@vitest/browser": "2.0.5",
-        "@vitest/ui": "2.0.5",
-        "happy-dom": "*",
-        "jsdom": "*"
-      },
-      "peerDependenciesMeta": {
-        "@edge-runtime/vm": {
-          "optional": true
-        },
-        "@types/node": {
-          "optional": true
-        },
-        "@vitest/browser": {
-          "optional": true
-        },
-        "@vitest/ui": {
-          "optional": true
-        },
-        "happy-dom": {
-          "optional": true
-        },
-        "jsdom": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/vitest/node_modules/debug": {
-      "version": "4.3.6",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
-      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/vitest/node_modules/execa": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
-      "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cross-spawn": "^7.0.3",
-        "get-stream": "^8.0.1",
-        "human-signals": "^5.0.0",
-        "is-stream": "^3.0.0",
-        "merge-stream": "^2.0.0",
-        "npm-run-path": "^5.1.0",
-        "onetime": "^6.0.0",
-        "signal-exit": "^4.1.0",
-        "strip-final-newline": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=16.17"
-      },
-      "funding": {
-        "url": "https://github.com/sindresorhus/execa?sponsor=1"
-      }
-    },
-    "node_modules/vitest/node_modules/get-stream": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
-      "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/vitest/node_modules/human-signals": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
-      "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
-      "dev": true,
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=16.17.0"
-      }
-    },
-    "node_modules/vitest/node_modules/is-stream": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
-      "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/vitest/node_modules/mimic-fn": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
-      "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/vitest/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/vitest/node_modules/npm-run-path": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
-      "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "path-key": "^4.0.0"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/vitest/node_modules/onetime": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
-      "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mimic-fn": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/vitest/node_modules/path-key": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
-      "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/vitest/node_modules/strip-final-newline": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
-      "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/watchpack": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz",
-      "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "dependencies": {
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "node_modules/webidl-conversions": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
-      "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/webpack": {
-      "version": "5.92.1",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz",
-      "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==",
-      "dev": true,
-      "dependencies": {
-        "@types/eslint-scope": "^3.7.3",
-        "@types/estree": "^1.0.5",
-        "@webassemblyjs/ast": "^1.12.1",
-        "@webassemblyjs/wasm-edit": "^1.12.1",
-        "@webassemblyjs/wasm-parser": "^1.12.1",
-        "acorn": "^8.7.1",
-        "acorn-import-attributes": "^1.9.5",
-        "browserslist": "^4.21.10",
-        "chrome-trace-event": "^1.0.2",
-        "enhanced-resolve": "^5.17.0",
-        "es-module-lexer": "^1.2.1",
-        "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.2.0",
-        "mime-types": "^2.1.27",
-        "neo-async": "^2.6.2",
-        "schema-utils": "^3.2.0",
-        "tapable": "^2.1.1",
-        "terser-webpack-plugin": "^5.3.10",
-        "watchpack": "^2.4.1",
-        "webpack-sources": "^3.2.3"
-      },
-      "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-cli": {
-      "version": "5.1.4",
-      "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz",
-      "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
-      "dev": true,
-      "dependencies": {
-        "@discoveryjs/json-ext": "^0.5.0",
-        "@webpack-cli/configtest": "^2.1.1",
-        "@webpack-cli/info": "^2.0.2",
-        "@webpack-cli/serve": "^2.0.5",
-        "colorette": "^2.0.14",
-        "commander": "^10.0.1",
-        "cross-spawn": "^7.0.3",
-        "envinfo": "^7.7.3",
-        "fastest-levenshtein": "^1.0.12",
-        "import-local": "^3.0.2",
-        "interpret": "^3.1.1",
-        "rechoir": "^0.8.0",
-        "webpack-merge": "^5.7.3"
-      },
-      "bin": {
-        "webpack-cli": "bin/cli.js"
-      },
-      "engines": {
-        "node": ">=14.15.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "5.x.x"
-      },
-      "peerDependenciesMeta": {
-        "@webpack-cli/generators": {
-          "optional": true
-        },
-        "webpack-bundle-analyzer": {
-          "optional": true
-        },
-        "webpack-dev-server": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/webpack-cli/node_modules/commander": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
-      "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
-      "dev": true,
-      "engines": {
-        "node": ">=14"
-      }
-    },
-    "node_modules/webpack-dev-server": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz",
-      "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==",
-      "dev": true,
-      "dependencies": {
-        "@types/bonjour": "^3.5.13",
-        "@types/connect-history-api-fallback": "^1.5.4",
-        "@types/express": "^4.17.21",
-        "@types/serve-index": "^1.9.4",
-        "@types/serve-static": "^1.15.5",
-        "@types/sockjs": "^0.3.36",
-        "@types/ws": "^8.5.10",
-        "ansi-html-community": "^0.0.8",
-        "bonjour-service": "^1.2.1",
-        "chokidar": "^3.6.0",
-        "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.4.0",
-        "http-proxy-middleware": "^2.0.3",
-        "ipaddr.js": "^2.1.0",
-        "launch-editor": "^2.6.1",
-        "open": "^10.0.3",
-        "p-retry": "^6.2.0",
-        "rimraf": "^5.0.5",
-        "schema-utils": "^4.2.0",
-        "selfsigned": "^2.4.1",
-        "serve-index": "^1.9.1",
-        "sockjs": "^0.3.24",
-        "spdy": "^4.0.2",
-        "webpack-dev-middleware": "^7.1.0",
-        "ws": "^8.16.0"
-      },
-      "bin": {
-        "webpack-dev-server": "bin/webpack-dev-server.js"
-      },
-      "engines": {
-        "node": ">= 18.12.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^5.0.0"
-      },
-      "peerDependenciesMeta": {
-        "webpack": {
-          "optional": true
-        },
-        "webpack-cli": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/ipaddr.js": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz",
-      "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/memfs": {
-      "version": "4.9.3",
-      "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.3.tgz",
-      "integrity": "sha512-bsYSSnirtYTWi1+OPMFb0M048evMKyUYe0EbtuGQgq6BVQM1g1W8/KIUJCCvjgI/El0j6Q4WsmMiBwLUBSw8LA==",
-      "dev": true,
-      "dependencies": {
-        "@jsonjoy.com/json-pack": "^1.0.3",
-        "@jsonjoy.com/util": "^1.1.2",
-        "tree-dump": "^1.0.1",
-        "tslib": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 4.0.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/streamich"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": {
-      "version": "7.2.1",
-      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz",
-      "integrity": "sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==",
-      "dev": true,
-      "dependencies": {
-        "colorette": "^2.0.10",
-        "memfs": "^4.6.0",
-        "mime-types": "^2.1.31",
-        "on-finished": "^2.4.1",
-        "range-parser": "^1.2.1",
-        "schema-utils": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 18.12.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^5.0.0"
-      },
-      "peerDependenciesMeta": {
-        "webpack": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/ws": {
-      "version": "8.18.0",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
-      "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
-      "dev": true,
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "peerDependencies": {
-        "bufferutil": "^4.0.1",
-        "utf-8-validate": ">=5.0.2"
-      },
-      "peerDependenciesMeta": {
-        "bufferutil": {
-          "optional": true
-        },
-        "utf-8-validate": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/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==",
-      "dev": true,
-      "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.2.3",
-      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
-      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/webpack/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "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/webpack/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==",
-      "dev": true,
-      "license": "MIT",
-      "peerDependencies": {
-        "ajv": "^6.9.1"
-      }
-    },
-    "node_modules/webpack/node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/webpack/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==",
-      "dev": true,
-      "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/websocket-driver": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
-      "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
-      "dev": true,
-      "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==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/whatwg-mimetype": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
-      "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/which": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-      "dev": true,
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/node-which"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/why-is-node-running": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
-      "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "siginfo": "^2.0.0",
-        "stackback": "0.0.2"
-      },
-      "bin": {
-        "why-is-node-running": "cli.js"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/wildcard": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
-      "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
-      "dev": true
-    },
-    "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==",
-      "dev": true,
-      "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-cjs": {
-      "name": "wrap-ansi",
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
-      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^4.0.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
-      }
-    },
-    "node_modules/wrap-ansi-cjs/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==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "dev": true
-    },
-    "node_modules/wrap-ansi-cjs/node_modules/string-width": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "dev": true,
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/yallist": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-      "dev": true,
-      "peer": true
-    },
-    "node_modules/yaml": {
-      "version": "2.4.5",
-      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz",
-      "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==",
-      "dev": true,
-      "bin": {
-        "yaml": "bin.mjs"
-      },
-      "engines": {
-        "node": ">= 14"
-      }
-    },
-    "node_modules/yocto-queue": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz",
-      "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==",
-      "dev": true,
-      "engines": {
-        "node": ">=12.20"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    }
-  }
-}
diff --git a/trial/package.json b/trial/package.json
deleted file mode 100644
index 59d9d71ffe3cc2f819928512341ff6eb23966ff4..0000000000000000000000000000000000000000
--- a/trial/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "devDependencies": {
-    "@tailwindcss/typography": "^0.5.13",
-    "@vitest/coverage-v8": "^2.0.5",
-    "babel-loader": "^9.1.3",
-    "happy-dom": "^14.12.3",
-    "patch-package": "^8.0.0",
-    "php-cgi-wasm": "0.0.9-alpha-25",
-    "php-wasm": "0.0.9-alpha-25",
-    "php-wasm-dom": "0.0.9-alpha-25",
-    "php-wasm-gd": "0.0.9-alpha-25",
-    "php-wasm-iconv": "0.0.9-alpha-25",
-    "php-wasm-libxml": "0.0.9-alpha-25",
-    "php-wasm-libzip": "0.0.9-alpha-25",
-    "php-wasm-mbstring": "0.0.9-alpha-25",
-    "php-wasm-simplexml": "0.0.9-alpha-25",
-    "php-wasm-sqlite": "0.0.9-alpha-25",
-    "php-wasm-xml": "0.0.9-alpha-25",
-    "php-wasm-zlib": "0.0.9-alpha-25",
-    "tailwindcss": "^3.4.4",
-    "vitest": "^2.0.5",
-    "webpack": "^5.92.1",
-    "webpack-cli": "^5.1.4",
-    "webpack-dev-server": "^5.0.4"
-  },
-  "scripts": {
-    "tailwind:build": "npx tailwindcss -i ./src/styles.css -o ./public/styles.css --minify",
-    "tailwind:watch": "npx tailwindcss -i ./src/styles.css -o ./public/styles.css --watch",
-    "postinstall": "patch-package --patch-dir=artifact_assets/patches/npm && ./postinstall.sh",
-    "worker:build": "webpack --config workers.webpack.js",
-    "build": "npm run worker:build && npm run tailwind:build",
-    "test": "vitest",
-    "coverage": "vitest run --coverage"
-  }
-}
diff --git a/trial/postinstall.sh b/trial/postinstall.sh
deleted file mode 100755
index afdf539a23eb3fcf98a5934e361afd0ea9bf3e39..0000000000000000000000000000000000000000
--- a/trial/postinstall.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-# Since we're not using a bundler, we need to manually copy the required
-# dependencies from node_modules
-#
-# NOTE: Rollup has been evaluated, but even with preserveModules it does not
-# copy over the required .wasm files or .so files, and preserves the dependencies
-# directory structure.
-# NOTE: Work needs to be done to see about further leveraging Webpack beyond
-# compiling the bundles non-ESM service worker.
-rsync --exclude='*[nN]ode*' --exclude='*[wW]ebview*' --exclude='php-tags*' --exclude='*index*' node_modules/php-*/*.mjs* public
-rsync --exclude='php8.0*' --exclude='php8.1*' --exclude='php8.2*' node_modules/*/*.so public
diff --git a/trial/public/assets/export.phpcode b/trial/public/assets/export.phpcode
deleted file mode 100644
index a5f6b64ca40fb9e831445bd3acc4f5dd20ada109..0000000000000000000000000000000000000000
--- a/trial/public/assets/export.phpcode
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-$stdErr = fopen('php://stderr', 'w');
-
-set_error_handler(function (...$args) use ($stdErr, &$errors) {
-    fwrite($stdErr, print_r($args, 1));
-});
-
-$flavor = file_get_contents('/config/flavor.txt');
-
-$docroot = '/persist/' . $flavor;
-
-$zip = new ZipArchive;
-
-if ($zip->open('/persist/export.zip', ZipArchive::CREATE) !== TRUE) {
-    print json_encode([
-            'message' => 'export.zip could not be created',
-            'type' => 'error',
-        ], JSON_THROW_ON_ERROR) . PHP_EOL;
-    exit(1);
-}
-
-$files = new RecursiveIteratorIterator(
-    new RecursiveDirectoryIterator($docroot, FilesystemIterator::SKIP_DOTS)
-);
-$total = iterator_count($files);
-$i = $percent = 0;
-foreach ($files as $name => $file) {
-    if (is_dir($name)) {
-        continue;
-    }
-    $added = $zip->addFile($name, str_replace($docroot, '', $name));
-    if ($added) {
-        $newPercent = (++$i / $total);
-        if ($newPercent - $percent >= 0.01) {
-            print json_encode([
-                    'message' => 'Packing files ' . round($newPercent * 100, 2) . '%',
-                    'type' => 'archive',
-                ], JSON_THROW_ON_ERROR) . PHP_EOL;
-            $percent = $newPercent;
-        }
-    } else {
-        print json_encode([
-                'message' => 'Could not pack file ' . $name,
-                'type' => 'error',
-            ], JSON_THROW_ON_ERROR) . PHP_EOL;
-        exit();
-    }
-}
-print json_encode([
-        'message' => 'Packing files 100%',
-        'type' => 'archive',
-    ], JSON_THROW_ON_ERROR) . PHP_EOL;
-
-$zip->close();
-
-print json_encode([
-        'message' => 'Export archive created',
-        'type' => 'archive',
-    ], JSON_THROW_ON_ERROR) . PHP_EOL;
-
-exit(0);
diff --git a/trial/public/assets/init.phpcode b/trial/public/assets/init.phpcode
deleted file mode 100644
index 8ff8ea81cb1b8042d80f3b27ce666d030e7fb832..0000000000000000000000000000000000000000
--- a/trial/public/assets/init.phpcode
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-$stdErr = fopen('php://stderr', 'w');
-
-set_error_handler(function(...$args) use($stdErr, &$errors){
-    fwrite($stdErr, print_r($args,1));
-});
-
-$flavor = file_get_contents('/config/flavor.txt');
-
-$docroot = '/persist/' . $flavor;
-
-$zip = new ZipArchive;
-
-if (!file_exists('/persist/artifact.zip')) {
-    print json_encode([
-            'message' => 'artifact could not be found',
-            'type' => 'error',
-        ], JSON_THROW_ON_ERROR) . PHP_EOL;
-    exit(1);
-}
-
-if($zip->open('/persist/artifact.zip', ZipArchive::RDONLY) === TRUE)
-{
-    $total = $zip->count();
-    $percent = 0;
-    for($i = 0; $i < $total; $i++)
-    {
-        $zip->extractTo($docroot, $zip->getNameIndex($i));
-        $newPercent = ((1+$i) / $total);
-
-        if($newPercent - $percent >= 0.01)
-        {
-            print json_encode([
-                    'message' => 'Unpacking files ' . round($newPercent * 100, 2) . '%',
-                    'type' => 'unarchive',
-                ], JSON_THROW_ON_ERROR) . PHP_EOL;
-            $percent = $newPercent;
-        }
-    }
-    print json_encode([
-            'message' => 'Unpacking files 100%',
-            'type' => 'unarchive',
-        ], JSON_THROW_ON_ERROR) . PHP_EOL;
-}
-else {
-    print json_encode([
-            'message' => 'could not open artifact archive',
-            'type' => 'error',
-        ], JSON_THROW_ON_ERROR) . PHP_EOL;
-    exit(1);
-}
-
-exit(0);
diff --git a/trial/public/assets/install-site.phpcode b/trial/public/assets/install-site.phpcode
deleted file mode 100644
index c068120931df585de71c2f64f4dd53d40d6c6726..0000000000000000000000000000000000000000
--- a/trial/public/assets/install-site.phpcode
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-$stdErr = fopen('php://stderr', 'w');
-
-set_error_handler(function(...$args) use($stdErr, &$errors){
-    fwrite($stdErr, print_r($args,1));
-});
-
-$flavor = file_get_contents('/config/flavor.txt');
-$docroot = '/persist/' . $flavor;
-
-$install_params = \json_decode(
-    file_get_contents("/config/$flavor-install-params.json") ?: [],
-    true
-);
-
-chdir($docroot . '/web');
-
-$install_type = $install_params['installType'] ?? 'interactive';
-
-if ($install_type === 'interactive') {
-    exit;
-}
-
-if ($install_type === 'preinstalled') {
-    if (!is_dir('sites/default/files/css') && !mkdir('sites/default/files/css') && !is_dir('sites/default/files/css')) {
-        throw new \RuntimeException(sprintf('Directory "%s" was not created', 'sites/default/files/css'));
-    }
-    if (!is_dir('sites/default/files/js') && !mkdir('sites/default/files/js') && !is_dir('sites/default/files/js')) {
-        throw new \RuntimeException(sprintf('Directory "%s" was not created', 'sites/default/files/js'));
-    }
-
-    print json_encode([
-        'message' => "Installed",
-        'type' => 'install',
-    ], JSON_THROW_ON_ERROR) . PHP_EOL;
-    exit;
-}
-
-$class_loader = require $docroot . '/vendor/autoload.php';
-
-$parameters = [
-    'interactive' => FALSE,
-    'site_path' => 'sites/default',
-    'parameters' => [
-        'profile' => 'drupal_cms_installer',
-        'langcode' => $install_params['langcode'] ?? 'en',
-    ],
-    'forms' => [
-        'install_settings_form' => [
-            'driver' => 'Drupal\sqlite\Driver\Database\sqlite',
-            'sqlite' => [
-                'database' => 'sites/default/files/.sqlite',
-            ],
-        ],
-        'install_configure_form' => [
-            'site_name' => $install_params['siteName'],
-            'site_mail' => 'drupal@localhost',
-            'account' => [
-                'name' => 'admin',
-                'mail' => 'admin@localhost',
-                'pass' => [
-                    'pass1' => 'admin',
-                    'pass2' => 'admin',
-                ],
-            ],
-            'enable_update_status_module' => TRUE,
-            // \Drupal\Core\Render\Element\Checkboxes::valueCallback() requires
-            // NULL instead of FALSE values for programmatic form submissions to
-            // disable a checkbox.
-            'enable_update_status_emails' => NULL,
-        ],
-    ],
-];
-
-require_once 'core/includes/install.core.inc';
-
-try {
-    install_drupal($class_loader, $parameters, static function ($install_state) {
-        static $started = FALSE;
-        static $finished, $total = 0;
-        if (!$started) {
-            print json_encode([
-                    'message' => 'Beginning install tasks',
-                    'type' => 'install',
-                ], JSON_THROW_ON_ERROR) . PHP_EOL;
-
-            $started = TRUE;
-            $total = count(install_tasks_to_perform($install_state));
-        }
-        print json_encode([
-                'message' => "Performing install task ($finished / $total)",
-                'type' => 'install',
-            ], JSON_THROW_ON_ERROR) . PHP_EOL;
-        $finished++;
-    });
-
-    chmod('sites/default', 0755);
-    chmod('sites/default/settings.php', 0644);
-
-} catch (\Exception $e) {
-    print json_encode([
-        'message' => $e->getMessage(),
-        'type' => 'error',
-    ], JSON_THROW_ON_ERROR) . PHP_EOL;
-exit(1);
-}
-
-exit;
diff --git a/trial/public/assets/login-admin.phpcode b/trial/public/assets/login-admin.phpcode
deleted file mode 100644
index 2bbaaa65b2299db2a8ee87e0947b18fb164b5d97..0000000000000000000000000000000000000000
--- a/trial/public/assets/login-admin.phpcode
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-use Drupal\Core\DrupalKernel;
-use Drupal\user\Entity\User;
-use Symfony\Component\HttpFoundation\Request;
-
-$stdErr = fopen('php://stderr', 'w');
-
-set_error_handler(function (...$args) use ($stdErr, &$errors) {
-    fwrite($stdErr, print_r($args, 1));
-});
-
-$flavor = file_get_contents('/config/flavor.txt');
-$docroot = '/persist/' . $flavor;
-
-$install_params = \json_decode(
-    file_get_contents("/config/$flavor-install-params.json") ?: [],
-    true
-);
-
-chdir($docroot . '/web');
-
-$class_loader = require $docroot . '/vendor/autoload.php';
-
-$request = Request::create("/cgi/$flavor/", 'GET', [], [], [], [
-    'HTTP_HOST' => $install_params['host'] ?? 'localhost',
-    'REMOTE_ADDR' => '127.0.0.1',
-    'SCRIPT_FILENAME' => "/persist/$flavor/web/index.php",
-    'SCRIPT_NAME' => "/cgi/$flavor/index.php"
-]);
-$kernel = DrupalKernel::createFromRequest($request, $class_loader, 'prod');
-$kernel->boot();
-$kernel->loadLegacyIncludes();
-
-$container = $kernel->getContainer();
-$container->get('request_stack')->push($request);
-
-$container->get('module_handler')->loadAll();
-
-/** @var \Symfony\Component\HttpFoundation\Session\Session $session */
-$session = $container->get('session');
-$session->start();
-$request->setSession($session);
-
-$account = User::load(1);
-user_login_finalize($account);
-
-try {
-    $session->save();
-} catch (\Throwable $e) {
-    print json_encode([
-            'message' => 'could not get login session',
-            'trace' => $e->getTraceAsString(),
-            'type' => 'login',
-        ], JSON_THROW_ON_ERROR) . PHP_EOL;
-    exit(1);
-}
-
-print json_encode([
-        'message' => 'Logged in!',
-        'params' => [
-            'name' => $session->getName(),
-            'id' => $session->getId(),
-        ],
-        'type' => 'set_cookie',
-    ], JSON_THROW_ON_ERROR) . PHP_EOL;
diff --git a/trial/public/cookie-map.mjs b/trial/public/cookie-map.mjs
deleted file mode 100644
index 0ac8032f7fe87c0fc86394d01c385ae75e4faf90..0000000000000000000000000000000000000000
--- a/trial/public/cookie-map.mjs
+++ /dev/null
@@ -1,85 +0,0 @@
-export default class CookieMap extends Map {
-
-    name = '/cookies'
-    store = 'COOKIES'
-
-    constructor(iterable) {
-        super();
-
-        this._db = this._openDB();
-        this._db.then(db => {
-            const transaction = db.transaction(this.store, 'readonly');
-            const store = transaction.objectStore(this.store);
-
-            const request = store.getAll();
-            request.onsuccess = (event) => {
-                const entries = event.target.result;
-                entries.forEach(({ key, value }) => super.set(key, value));
-                iterable.forEach(([ key, value ]) => {
-                  this.set(key, value)
-              });
-            };
-        });
-    }
-
-    _openDB() {
-        return new Promise((resolve, reject) => {
-            const request = indexedDB.open(this.name);
-
-            request.onupgradeneeded = (event) => {
-                const db = event.target.result;
-                if (!db.objectStoreNames.contains(this.store)) {
-                    db.createObjectStore(this.store, { keyPath: 'key' });
-                }
-            };
-
-            request.onsuccess = (event) => resolve(event.target.result);
-            request.onerror = (event) => reject(event.target.error);
-        });
-    }
-
-    get(key) {
-        return super.get(key);
-    }
-
-    set(key, value) {
-        if (value === 'deleted') {
-            return  this.delete(key)
-        }
-        super.set(key, value)
-        this._persist(key, value);
-        return this;
-    }
-
-    delete(key) {
-        const result = super.delete(key);
-        this._delete(key);
-        return result;
-    }
-
-    clear() {
-        super.clear();
-        this._clear();
-    }
-
-    async _persist(key, value) {
-        const store = await this._getTransaction()
-        store.put({value, key});
-    }
-
-    async _delete(key) {
-        const store = await this._getTransaction()
-        store.delete(key);
-    }
-
-    async _clear() {
-        const store = await this._getTransaction()
-        store.clear();
-    }
-
-    async _getTransaction() {
-        const db = await this._db;
-        const transaction = db.transaction(this.store, 'readwrite');
-        return transaction.objectStore(this.store);
-    }
-}
diff --git a/trial/public/drupal-cgi-worker.mjs b/trial/public/drupal-cgi-worker.mjs
deleted file mode 100644
index 26e61aa3baeeff2c5d9df1dde30390159d3b0178..0000000000000000000000000000000000000000
--- a/trial/public/drupal-cgi-worker.mjs
+++ /dev/null
@@ -1,108 +0,0 @@
-import {getBroadcastChannel} from "./utils.mjs";
-import CookieMap from "./cookie-map.mjs";
-
-// Fibers are not yet supported in the Wasm runtime.
-// Instead of uninstalling BigPipe, set the `big_pipe_nojs` cookie which disables its functionality.
-// This will make it easier to export the trial experience in the future.
-const cookies = new CookieMap([
-  ['big_pipe_nojs', '1']
-]);
-
-const onRequest = (request, response) => {
-    const url = new URL(request.url);
-    const logLine =
-        `[${new Date().toISOString()}]` +
-        ` 127.0.0.1 - "${request.method}` +
-        ` ${url.pathname}" - HTTP/1.1 ${response.status}`;
-    console.log(logLine);
-};
-const notFound = (request) => {
-    console.log(request)
-    return new Response(`<body><h1>404</h1>${request.url} not found</body>`, {
-        status: 404,
-        headers: {"Content-Type": "text/html"},
-    });
-};
-
-const sharedLibs = [
-    `php\${PHP_VERSION}-zlib.so`,
-    `php\${PHP_VERSION}-zip.so`,
-    `php\${PHP_VERSION}-iconv.so`,
-    `php\${PHP_VERSION}-gd.so`,
-    `php\${PHP_VERSION}-dom.so`,
-    `php\${PHP_VERSION}-mbstring.so`,
-    `php\${PHP_VERSION}-sqlite.so`,
-    `php\${PHP_VERSION}-pdo-sqlite.so`,
-    `php\${PHP_VERSION}-xml.so`,
-    `php\${PHP_VERSION}-simplexml.so`,
-];
-
-export function setUpWorker(worker, PhpCgiWorker, prefix, docroot) {
-    const php = new PhpCgiWorker({
-        onRequest,
-        notFound,
-        sharedLibs,
-        prefix,
-        docroot,
-        types: {
-            jpeg: "image/jpeg",
-            jpg: "image/jpeg",
-            gif: "image/gif",
-            png: "image/png",
-            svg: "image/svg+xml"
-        },
-        env: {
-            HTTP_USER_AGENT: worker.navigator.userAgent,
-            DRUPAL_CMS_TRIAL: '1',
-        },
-        ini: `
-        date.timezone=${Intl.DateTimeFormat().resolvedOptions().timeZone}
-        `,
-        cookies,
-    })
-
-    const channel = getBroadcastChannel()
-    channel.addEventListener('message', async ({ data }) => {
-        const { action, params } = data;
-        if (action === 'refresh') {
-            await navigator.locks.request('cgi-worker-action', async () => {
-                console.log('Refreshing CGI')
-                php.refresh();
-            });
-        }
-        if (action === 'set_vhost') {
-            await navigator.locks.request('cgi-worker-action', async () => {
-                const vHost = {
-                    pathPrefix: `/cgi/${params.flavor}`,
-                    directory: `/persist/${params.flavor}/web`,
-                    entrypoint: 'index.php',
-                };
-                const settings = await php.getSettings();
-                const vHostExists = settings.vHosts.find(existing => existing.pathPrefix === vHost.pathPrefix);
-
-                if (!vHostExists) {
-                    settings.vHosts.push(vHost)
-                    await php.setSettings(settings)
-                    await php.storeInit()
-                }
-            });
-        }
-        else if (action === 'set_cookie') {
-            await navigator.locks.request('cgi-worker-action', async () => {
-                cookies.set(params.name, params.id)
-            });
-        }
-    })
-
-    worker.addEventListener('install',  event => php.handleInstallEvent(event));
-    worker.addEventListener('activate', event => php.handleActivateEvent(event));
-    worker.addEventListener('activate', () => {
-        channel.postMessage({
-            action: 'service_worker_activated'
-        })
-    });
-    worker.addEventListener('fetch',    event => php.handleFetchEvent(event));
-    worker.addEventListener('message',  event => php.handleMessageEvent(event));
-
-    return php
-}
diff --git a/trial/public/favicon.ico b/trial/public/favicon.ico
deleted file mode 100644
index 63c573b9adf1336978fdd09cd958cd914bee6abb..0000000000000000000000000000000000000000
Binary files a/trial/public/favicon.ico and /dev/null differ
diff --git a/trial/public/fonts/inter-cryllic-ext.woff2 b/trial/public/fonts/inter-cryllic-ext.woff2
deleted file mode 100644
index 1029b2511535218cfad5aff3a67b88742683d488..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-cryllic-ext.woff2 and /dev/null differ
diff --git a/trial/public/fonts/inter-cyrillic.woff2 b/trial/public/fonts/inter-cyrillic.woff2
deleted file mode 100644
index 4a88c023d68345726256ebf7df3761d25e2981b1..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-cyrillic.woff2 and /dev/null differ
diff --git a/trial/public/fonts/inter-greek-ext.woff2 b/trial/public/fonts/inter-greek-ext.woff2
deleted file mode 100644
index bbcbf27020c79e5930fecd6a0126b44cdfa6fea8..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-greek-ext.woff2 and /dev/null differ
diff --git a/trial/public/fonts/inter-greek.woff2 b/trial/public/fonts/inter-greek.woff2
deleted file mode 100644
index 1339c681c57e2635b36a9d069d2d45a78b0ca511..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-greek.woff2 and /dev/null differ
diff --git a/trial/public/fonts/inter-italic-cyrillic-ext.woff2 b/trial/public/fonts/inter-italic-cyrillic-ext.woff2
deleted file mode 100644
index 83e50e1edd2560cad6557d7f93651df5e70be4d6..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-italic-cyrillic-ext.woff2 and /dev/null differ
diff --git a/trial/public/fonts/inter-italic-cyrillic.woff2 b/trial/public/fonts/inter-italic-cyrillic.woff2
deleted file mode 100644
index 87a694984b6e0764f49335c238a0dd7d57bbbe36..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-italic-cyrillic.woff2 and /dev/null differ
diff --git a/trial/public/fonts/inter-italic-greek-ext.woff2 b/trial/public/fonts/inter-italic-greek-ext.woff2
deleted file mode 100644
index ea4c043b84c498966663d301f8530ff063ab2d37..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-italic-greek-ext.woff2 and /dev/null differ
diff --git a/trial/public/fonts/inter-italic-greek.woff2 b/trial/public/fonts/inter-italic-greek.woff2
deleted file mode 100644
index 05fae388ecea1d46562382829245c768bfcff1e6..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-italic-greek.woff2 and /dev/null differ
diff --git a/trial/public/fonts/inter-italic-latin-ext.woff2 b/trial/public/fonts/inter-italic-latin-ext.woff2
deleted file mode 100644
index b1fae490f93a7540d755469198c6e50f44d1b36b..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-italic-latin-ext.woff2 and /dev/null differ
diff --git a/trial/public/fonts/inter-italic-latin.woff2 b/trial/public/fonts/inter-italic-latin.woff2
deleted file mode 100644
index ac7e0de6b7778aa91ab99851409f21c0fd7f9920..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-italic-latin.woff2 and /dev/null differ
diff --git a/trial/public/fonts/inter-italic-vietnamese.woff2 b/trial/public/fonts/inter-italic-vietnamese.woff2
deleted file mode 100644
index ddc6badf4fbcc80e3bb40017b0d907b93aa5c254..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-italic-vietnamese.woff2 and /dev/null differ
diff --git a/trial/public/fonts/inter-latin-ext.woff2 b/trial/public/fonts/inter-latin-ext.woff2
deleted file mode 100644
index 82e134726698d0096702766a029be7730583f7e9..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-latin-ext.woff2 and /dev/null differ
diff --git a/trial/public/fonts/inter-latin.woff2 b/trial/public/fonts/inter-latin.woff2
deleted file mode 100644
index e0cab47a8483420dfb61637332265a31990dfd66..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-latin.woff2 and /dev/null differ
diff --git a/trial/public/fonts/inter-vietnamese.woff2 b/trial/public/fonts/inter-vietnamese.woff2
deleted file mode 100644
index e9057325ddd54ddd5218c539cf584b38c91123c8..0000000000000000000000000000000000000000
Binary files a/trial/public/fonts/inter-vietnamese.woff2 and /dev/null differ
diff --git a/trial/public/index.html b/trial/public/index.html
deleted file mode 100644
index c7b3661cb523bbd3ceb7683e08e37aaff87540d4..0000000000000000000000000000000000000000
--- a/trial/public/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html>
-<html lang="en" class="h-dvh">
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <title>Try Drupal CMS</title>
-    <link href="styles.css" rel="stylesheet">
-</head>
-<body class="bg-drupal-blue bg-gradient-33-turn from-drupal-purple to-drupal-blue h-dvh flex flex-col justify-center">
-<div class="flex flex-col justify-center w-full max-w-screen-sm mx-auto border border-transparent rounded-lg bg-white py-16 px-12 shadow-lg">
-  <div>
-    <h1 class="font-black mb-8">
-      <span class="text-4xl">Drupal</span>
-      <span class="text-3xl opacity-75">CMS</span>
-    </h1>
-  </div>
-  <trial-manager></trial-manager>
-</div>
-<script src="main.mjs" type="module"></script>
-</body>
-</html>
diff --git a/trial/public/install-worker.mjs b/trial/public/install-worker.mjs
deleted file mode 100644
index c2652340361c193c0a166104b17941f8280dc590..0000000000000000000000000000000000000000
--- a/trial/public/install-worker.mjs
+++ /dev/null
@@ -1,285 +0,0 @@
-import { PhpWorker } from './PhpWorker.mjs'
-import { getBroadcastChannel } from "./utils.mjs";
-
-const sharedLibs = [
-    `php${PhpWorker.phpVersion}-zip.so`,
-    `php${PhpWorker.phpVersion}-zlib.so`,
-    `php${PhpWorker.phpVersion}-iconv.so`,
-    `php${PhpWorker.phpVersion}-gd.so`,
-    `php${PhpWorker.phpVersion}-dom.so`,
-    `php${PhpWorker.phpVersion}-mbstring.so`,
-    `php${PhpWorker.phpVersion}-sqlite.so`,
-    `php${PhpWorker.phpVersion}-pdo-sqlite.so`,
-    `php${PhpWorker.phpVersion}-xml.so`,
-    `php${PhpWorker.phpVersion}-simplexml.so`,
-];
-
-console.log('booting PhpWorker')
-const php = new PhpWorker({
-    sharedLibs,
-    persist: [{ mountPath: '/persist' }, { mountPath: '/config' }],
-    ini: `
-    date.timezone=${Intl.DateTimeFormat().resolvedOptions().timeZone}
-    `
-})
-php.addEventListener('output', event => {
-    event.detail.forEach(detail => {
-        try {
-            const data = JSON.parse(detail.trim());
-            postMessage({
-                action: `status`,
-                ...data
-            })
-        } catch (e) {
-            console.log(detail)
-        }
-    })
-});
-php.addEventListener('error', event => console.log(event.detail));
-
-self.onmessage = async ({data }) => {
-    const { action, params } = data;
-
-    if (action === 'start') {
-        await navigator.locks.request('start', async () => {
-            console.log('Starting')
-            postMessage({
-                action: `started`,
-                params,
-                message: 'Starting'
-            })
-
-            const { flavor, artifact } = params;
-
-            getBroadcastChannel().postMessage({
-                action: 'set_vhost',
-                params
-            })
-
-            const checkWww = await php.analyzePath(`/persist/${flavor}`)
-            if (checkWww.exists) {
-                postMessage({
-                    action: `finished`,
-                    params,
-                    message: 'Site already exists'
-                })
-            } else {
-                const checkArchive = await php.analyzePath('/persist/artifact.zip');
-                if (checkArchive.exists) {
-                    postMessage({
-                        action: 'status',
-                        params,
-                        message: 'Removing existing Drupal CMS archive'
-                    })
-                    console.log('Removing archive');
-                    await php.unlink('/persist/artifact.zip')
-                }
-                postMessage({
-                    action: 'status',
-                    params,
-                    message: 'Downloading Drupal CMS'
-                })
-                const downloader = fetch(artifact);
-
-                const download = await downloader.then(response => {
-                  const contentEncoding = response.headers.get('content-encoding');
-                  const contentLength = response.headers.get(contentEncoding ? 'x-file-size' : 'content-length');
-                  const total = parseInt(contentLength, 10);
-                  let loaded = 0;
-
-                  return new Response(
-                    new ReadableStream({
-                      start(controller) {
-                        const reader = response.body.getReader();
-
-                        read();
-                        function read() {
-                          reader.read().then(({done, value}) => {
-                            if (done) {
-                              controller.close();
-                              return;
-                            }
-                            loaded += value.byteLength;
-                            postMessage({
-                              action: 'status',
-                              params,
-                              message: `Downloading Drupal CMS ${Math.round(loaded/total*100)+'%'}`
-                          })
-                            controller.enqueue(value);
-                            read();
-                          }).catch(error => {
-                            console.error(error);
-                            controller.error(error)
-                          })
-                        }
-                      }
-                    })
-                  );
-                })
-
-
-                const zipContents = await download.arrayBuffer();
-
-                postMessage({
-                    action: 'status',
-                    params,
-                    message: 'Saving Drupal CMS'
-                })
-
-                await php.writeFile('/config/flavor.txt', flavor)
-                await php.writeFile('/persist/artifact.zip', new Uint8Array(zipContents))
-
-                postMessage({
-                    action: 'status',
-                    params,
-                    message: 'Extracting Drupal CMS'
-                })
-                const initPhpCode = fetch('/assets/init.phpcode');
-                await php.binary;
-
-                const initPhpExitCode = await php.run(await (await initPhpCode).text());
-                console.log(initPhpExitCode)
-
-                const installType = params.installParameters.installType;
-                if (installType !== 'interactive') {
-                    postMessage({
-                        action: 'status',
-                        params,
-                        message: 'Preparing Drupal CMS',
-                    });
-
-                    console.log('Writing install parameters');
-                    await php.writeFile(`/config/${flavor}-install-params.json`, JSON.stringify({
-                        langcode: 'en',
-                        host: (new URL(globalThis.location || 'http://localhost')).host,
-                        ...params.installParameters,
-                    }));
-
-                    if (installType === 'automated') {
-                        console.log('Installing site');
-
-                        await php.run(`<?php putenv('DRUPAL_CMS_TRIAL=1');`);
-
-                        const installSiteCode = await (await fetch('/assets/install-site.phpcode')).text();
-                        console.log('Executing install site code...');
-                        try {
-                            const installSiteExitCode = await php.run(installSiteCode);
-                            console.log(installSiteExitCode);
-                        } catch (e) {
-                            let message = `An error occured. ${e.name}: ${e.message}`;
-                            if (e.name === 'RangeError') {
-                                message += ' See https://github.com/mglaman/wasm-drupal/issues/28';
-                            }
-
-                            postMessage({
-                                action: 'status',
-                                type: 'error',
-                                params,
-                                message,
-                            });
-                            return;
-                        }
-                    }
-
-                    postMessage({
-                        action: 'status',
-                        params,
-                        message: 'Logging you in',
-                    });
-                    const autoLoginCode = await (await fetch('/assets/login-admin.phpcode')).text();
-                    await php.run(autoLoginCode);
-                    await php.unlink(`/config/${flavor}-install-params.json`);
-                }
-
-                postMessage({
-                    action: 'status',
-                    params,
-                    message: 'Cleaning up files'
-                })
-                await php.unlink('/config/flavor.txt')
-                await php.unlink('/persist/artifact.zip')
-
-                postMessage({
-                    action: `finished`,
-                    params,
-                    message: 'Finishing'
-                })
-            }
-        })
-    }
-    else if (action === 'remove') {
-        const { flavor } = params;
-        await self.navigator.locks.request('remove', () => {
-            const openDb = indexedDB.open("/persist", 21);
-            openDb.onsuccess = () => {
-                const db = openDb.result;
-                const transaction = db.transaction(["FILE_DATA"], "readwrite");
-                const objectStore = transaction.objectStore("FILE_DATA");
-                // IDBKeyRange.bound trick found at https://stackoverflow.com/a/76714057/1949744
-                const objectStoreRequest = objectStore.delete(IDBKeyRange.bound(`/persist/${flavor}`, `/persist/${flavor}/\uffff`));
-
-                objectStoreRequest.onsuccess = () => {
-                    db.close();
-                    postMessage({
-                        action: 'reload'
-                    })
-                };
-            };
-        })
-    }
-    else if (action === 'stop') {
-        self.close()
-    }
-    else if (action === 'export') {
-        const { flavor } = params;
-        await self.navigator.locks.request('export', async () => {
-            postMessage({
-                action: `started`,
-                params,
-                message: 'Preparing to export'
-            })
-            await php.writeFile('/config/flavor.txt', flavor)
-
-            console.log('fetching export code')
-            const exportPhpCode = fetch('/assets/export.phpcode');
-            await php.binary;
-
-            console.log('running export code')
-            const exportPhpExitCode = await php.run(await (await exportPhpCode).text())
-            console.log(exportPhpExitCode)
-
-            await php.unlink('/config/flavor.txt')
-            postMessage({
-                action: `status`,
-                params,
-                message: 'Preparing download'
-            })
-
-            const exportContents = await php.readFile('/persist/export.zip')
-            const blob = new Blob([exportContents], { type: 'application/zip' })
-
-            postMessage({
-                action: `export_finished`,
-                params: {
-                    ...params,
-                    export: blob
-                },
-                message: 'Download ready'
-            })
-            setTimeout(() => php.unlink('/persist/export.zip'), 0)
-
-        })
-    }
-    else if (action === 'check_existing') {
-        console.log('Checking for existing session')
-        const { flavor } = params;
-        const check = await php.analyzePath(`/persist/${flavor}`)
-        postMessage({
-            action: `check_existing_finished`,
-            params: {
-                exists: check.exists,
-                ...params
-            }
-        })
-    }
-}
diff --git a/trial/public/local.html b/trial/public/local.html
deleted file mode 100644
index 8f2346fedfc9f6ed7585d8829f52a97691d7c018..0000000000000000000000000000000000000000
--- a/trial/public/local.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html>
-<html lang="en" class="h-dvh">
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <title>Try Drupal CMS</title>
-    <link href="styles.css" rel="stylesheet">
-</head>
-<body class="bg-drupal-blue bg-gradient-33-turn from-drupal-purple to-drupal-blue h-dvh flex flex-col justify-center">
-<div class="flex flex-col justify-center w-full max-w-screen-sm mx-auto border border-transparent rounded-lg bg-white py-8 px-4 shadow-lg">
-  <div>
-    <h1 class="font-black mb-8">
-      <span class="text-4xl">Drupal</span>
-      <span class="text-3xl opacity-75">CMS</span>
-    </h1>
-  </div>
-  <trial-manager artifact="assets/trial.zip"></trial-manager>
-</div>
-<script src="main.mjs" type="module"></script>
-</body>
-</html>
diff --git a/trial/public/main.mjs b/trial/public/main.mjs
deleted file mode 100644
index e07b1f1d0288d5bb1cfd76917df620e2da698c4f..0000000000000000000000000000000000000000
--- a/trial/public/main.mjs
+++ /dev/null
@@ -1,8 +0,0 @@
-import { registerWorker } from './utils.mjs'
-import { defineTrialManagerElement } from "./trial-manager.mjs";
-
-defineTrialManagerElement()
-registerWorker(
-  `${window.location.origin}/service-worker.mjs`,
-  `${window.location.origin}/service-worker.js`
-)
diff --git a/trial/public/non-ui.html b/trial/public/non-ui.html
deleted file mode 100644
index 606ef8b1600d29cb59aef67abbab653219486d6f..0000000000000000000000000000000000000000
--- a/trial/public/non-ui.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html>
-<html lang="en" class="h-dvh">
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <title>Try Drupal CMS</title>
-    <link href="styles.css" rel="stylesheet">
-</head>
-<body class="bg-drupal-blue bg-gradient-33-turn from-drupal-purple to-drupal-blue h-dvh flex flex-col justify-center">
-<div class="flex flex-col justify-center w-full max-w-screen-sm mx-auto border border-transparent rounded-lg bg-white py-8 px-4 shadow-lg">
-    <div>
-        <h1 class="font-black mb-8">
-            <span class="text-4xl">Drupal</span>
-            <span class="text-3xl opacity-75">CMS</span>
-        </h1>
-    </div>
-    <trial-manager install-type="automated"></trial-manager>
-</div>
-<script src="main.mjs" type="module"></script>
-</body>
-</html>
diff --git a/trial/public/service-worker.mjs b/trial/public/service-worker.mjs
deleted file mode 100644
index 2342547110523901320e641ce85e75d9861940c3..0000000000000000000000000000000000000000
--- a/trial/public/service-worker.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-import { PhpCgiWorker } from "./PhpCgiWorker.mjs";
-import {setUpWorker} from "./drupal-cgi-worker.mjs";
-
-setUpWorker(self, PhpCgiWorker, '/cgi/', '/persist/www')
diff --git a/trial/public/trial-manager.mjs b/trial/public/trial-manager.mjs
deleted file mode 100644
index deeb625e181da4ba97adfb274c8146df4d3d248a..0000000000000000000000000000000000000000
--- a/trial/public/trial-manager.mjs
+++ /dev/null
@@ -1,265 +0,0 @@
-import {getBroadcastChannel} from "./utils.mjs";
-
-export default class TrialManager extends HTMLElement {
-    static observedAttributes = ['mode', 'message'];
-    constructor() {
-        super()
-        this.worker = new Worker('/install-worker.mjs', {
-            type: "module"
-        });
-        this.worker.onmessage = this.onMessage.bind(this)
-
-        this.channel = getBroadcastChannel()
-        this.channel.addEventListener('message', ({ data }) => {
-            const { action } = data;
-            if (action === 'service_worker_ready') {
-                this.sendWorkerAction('check_existing', {
-                    flavor: this.flavor
-                })
-            }
-        })
-
-        this.spinner = this.initializingEl()
-        this.actions = this.actionsEl()
-        this.progress = this.progressEl()
-    }
-
-    render() {
-        const mode = this.mode;
-        if (!mode) {
-            this.replaceChildren(this.spinner)
-        } else if (mode === 'new_session') {
-            this.replaceChildren(this.progress)
-        } else if (mode === 'existing_session') {
-            this.replaceChildren(this.actions)
-        }
-    }
-
-    get mode() {
-        return this.getAttribute('mode')
-    }
-
-    set mode(mode) {
-        this.setAttribute('mode', mode)
-    }
-
-    get flavor() {
-        return 'cms'
-    }
-
-    get artifact() {
-        // Allow manually overriding the artifact used.
-        if (this.hasAttribute('artifact')) {
-            return this.getAttribute('artifact')
-        }
-
-        const artifactName = this._isMobile() ? 'trial-installed.zip' : 'trial.zip';
-        return `https://git.drupalcode.org/api/v4/projects/157093/jobs/artifacts/0.x/raw/${artifactName}?job=build+trial+artifact`
-    }
-
-    set artifact(artifact) {
-        this.setAttribute('artifact', artifact)
-    }
-
-    get message() {
-        return this.getAttribute('message') || '';
-    }
-
-    set message(message) {
-        this.setAttribute('message', message)
-    }
-
-    get installType() {
-        if (!this.hasAttribute('install-type')) {
-            return !this._isMobile() ? 'interactive' : 'preinstalled'
-        }
-        return this.getAttribute('install-type')
-    }
-
-    connectedCallback() {
-        this.render()
-    }
-
-    disconnectedCallback() {
-        this.worker.terminate();
-    }
-
-    sendWorkerAction(action, params) {
-        this.worker.postMessage({action, params})
-    }
-
-    onMessage({ data }) {
-        const { action, message, type } = data;
-
-        if (type === 'error') {
-            this.worker.postMessage({ action: 'stop' })
-        }
-
-        if (type === 'set_cookie') {
-            this.channel.postMessage({
-                action: 'set_cookie',
-                params: data.params
-            })
-        }
-
-        if (action === 'started') {
-            this.setAttribute('mode', 'new_session');
-            this.setAttribute('message', 'Starting')
-        }
-        else if (action === 'status') {
-            this.setAttribute('message', message)
-        }
-        else if (action === 'finished') {
-            this.setAttribute('message', 'Refreshing data')
-            this.channel.postMessage({
-                action: 'refresh'
-            })
-
-            this.setAttribute('message', 'Redirecting to your site')
-            window.location = `/cgi/${this.flavor}`
-        }
-        else if (action === 'reload') {
-            this.channel.postMessage({
-                action: 'refresh'
-            })
-            window.location.reload();
-        }
-        else if (action === 'export_finished') {
-            this.setAttribute('message', message)
-            const link = document.createElement('a');
-            link.href = URL.createObjectURL(data.params.export);
-            link.download = 'drupal.zip'
-            link.click();
-            URL.revokeObjectURL(link.href);
-            this.setAttribute('mode', 'existing_session');
-        }
-        else if (action === 'check_existing_finished') {
-            if (data.params.exists) {
-                this.setAttribute('mode', 'existing_session');
-            } else {
-                this.worker.postMessage({
-                    action: 'start',
-                    params: {
-                        flavor: this.flavor,
-                        artifact: this.artifact,
-                        installParameters: {
-                            // @see install-site.phpcode
-                            installType: this.installType,
-                            siteName: 'Try Drupal CMS',
-                            langcode: 'en',
-                        }
-                    }
-                })
-            }
-        }
-        else {
-            console.log(data)
-        }
-    }
-
-    attributeChangedCallback(name, oldValue, newValue) {
-        if (name === 'mode') {
-            this.render()
-            this.setAttribute('message', '')
-        }
-        else if (name === 'message') {
-            this.progress.innerText = newValue
-        }
-    }
-
-    initializingEl() {
-        const el = document.createElement('div');
-        el.classList.add('flex', 'justify-center')
-        el.innerHTML = `<svg class="animate-spin h-16 w-16 text-drupal-blue" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
-        <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
-        <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
-    </svg>`
-        return el;
-    }
-    actionsEl() {
-        const buttonWrapper = document.createElement('div');
-        buttonWrapper.classList.add('isolate', 'inline-flex', 'space-x-2');
-
-        const buttonClasses = [
-          'bg-white',
-          'relative',
-          'inline-flex',
-          'items-center',
-          'px-4',
-          'py-1',
-          'font-semibold',
-          'text-drupal-darkBlue',
-          'border-2',
-          'border-drupal-darkBlue',
-          'rounded-md',
-          'hover:border-drupal-blue',
-          'hover:text-drupal-blue'
-        ];
-        const resumeButton = document.createElement('button');
-        resumeButton.classList.add(...buttonClasses)
-        resumeButton.id = 'resume';
-        resumeButton.innerText = 'Resume'
-        resumeButton.addEventListener('click', () => {
-            this.sendWorkerAction('start', {
-                flavor: this.flavor,
-                artifact: this.artifact
-            })
-        })
-
-        const newButton = document.createElement('button');
-        newButton.classList.add(...buttonClasses)
-        newButton.id = 'new'
-        newButton.innerText = 'New'
-        newButton.addEventListener('click', () => {
-            if (window.confirm("Your site's data will be completely removed, do you want to continue?")) {
-                this.removeAttribute('mode');
-                this.sendWorkerAction('remove', {
-                    flavor: this.flavor
-                })
-            }
-        })
-
-        const exportButton = document.createElement('button')
-        exportButton.classList.add(...buttonClasses, 'group')
-        exportButton.id = 'export'
-        exportButton.innerHTML = `
-<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5 text-drupal-darkBlue group-hover:text-drupal-blue fill-current" viewBox="0 0 256 256"><path d="M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z"></path></svg>
-<span class="pl-1.5">Download</span>
-`
-        exportButton.addEventListener('click', () => {
-            this.removeAttribute('mode');
-            this.sendWorkerAction('export', {
-                flavor: this.flavor
-            })
-        })
-
-        buttonWrapper.appendChild(resumeButton)
-        buttonWrapper.appendChild(newButton)
-        buttonWrapper.appendChild(exportButton)
-
-        const container = document.createElement('div');
-        container.classList.add('text-center')
-        const message = document.createElement('p');
-        message.classList.add('mb-4', 'text-lg')
-        message.innerText = 'You already have a site, what would you like to do?'
-        container.appendChild(message)
-        container.appendChild(buttonWrapper)
-
-        return container
-    }
-
-    progressEl() {
-        const progress = document.createElement('div')
-        progress.classList.add('rounded-md', 'p-4', 'bg-white', 'w-96', 'text-center', 'w-full')
-        progress.innerText = this.message
-        return progress
-    }
-
-    _isMobile() {
-        return (navigator.maxTouchPoints || 'ontouchstart' in document.documentElement)
-    }
-}
-
-export function defineTrialManagerElement() {
-    customElements.get('trial-manager') || customElements.define('trial-manager', TrialManager)
-}
diff --git a/trial/public/utils.mjs b/trial/public/utils.mjs
deleted file mode 100644
index c3061d211cc4e29c6cfae10ba4ccc974810eba2b..0000000000000000000000000000000000000000
--- a/trial/public/utils.mjs
+++ /dev/null
@@ -1,25 +0,0 @@
-export function getBroadcastChannel() {
-    return new BroadcastChannel('drupal-cgi-worker');
-}
-
-export function registerWorker(moduleUrl, bundledUrl) {
-    function registrationReady() {
-        getBroadcastChannel().postMessage({
-            action: 'service_worker_ready',
-        })
-    }
-    const serviceWorker = navigator.serviceWorker;
-    serviceWorker.register(moduleUrl, {
-        type: "module"
-    })
-        .then(registrationReady)
-        .catch(() => {
-            console.log('Browser did not support ES modules in service worker, trying bundled service worker')
-            serviceWorker.register(bundledUrl)
-                .then(registrationReady)
-                .catch(error => {
-                    alert("There was an error loading the service worker. Check known compatibility issues and your browser's developer console.")
-                    console.error(error)
-                });
-        });
-}
diff --git a/trial/src/styles.css b/trial/src/styles.css
deleted file mode 100644
index f59e9244a0efe02ea8baaa672322e76ca933fec4..0000000000000000000000000000000000000000
--- a/trial/src/styles.css
+++ /dev/null
@@ -1,143 +0,0 @@
-/* cyrillic-ext */
-@font-face {
-  font-family: 'Inter';
-  font-style: italic;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-italic-cyrillic-ext.woff2') format('woff2');
-  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
-}
-
-/* cyrillic */
-@font-face {
-  font-family: 'Inter';
-  font-style: italic;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-italic-cyrillic.woff2') format('woff2');
-  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
-}
-
-/* greek-ext */
-@font-face {
-  font-family: 'Inter';
-  font-style: italic;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-italic-greek-ext.woff2') format('woff2');
-  unicode-range: U+1F00-1FFF;
-}
-
-/* greek */
-@font-face {
-  font-family: 'Inter';
-  font-style: italic;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-italic-greek.woff2') format('woff2');
-  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
-}
-
-/* vietnamese */
-@font-face {
-  font-family: 'Inter';
-  font-style: italic;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-italic-vietnamese.woff2') format('woff2');
-  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
-}
-
-/* latin-ext */
-@font-face {
-  font-family: 'Inter';
-  font-style: italic;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-italic-latin-ext.woff2') format('woff2');
-  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-
-/* latin */
-@font-face {
-  font-family: 'Inter';
-  font-style: italic;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-italic-latin.woff2') format('woff2');
-  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-
-/* cyrillic-ext */
-@font-face {
-  font-family: 'Inter';
-  font-style: normal;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-cryllic-ext.woff2') format('woff2');
-  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
-}
-
-/* cyrillic */
-@font-face {
-  font-family: 'Inter';
-  font-style: normal;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-cyrillic.woff2') format('woff2');
-  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
-}
-
-/* greek-ext */
-@font-face {
-  font-family: 'Inter';
-  font-style: normal;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-greek-ext.woff2') format('woff2');
-  unicode-range: U+1F00-1FFF;
-}
-
-/* greek */
-@font-face {
-  font-family: 'Inter';
-  font-style: normal;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-greek.woff2') format('woff2');
-  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
-}
-
-/* vietnamese */
-@font-face {
-  font-family: 'Inter';
-  font-style: normal;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-vietnamese.woff2') format('woff2');
-  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
-}
-
-/* latin-ext */
-@font-face {
-  font-family: 'Inter';
-  font-style: normal;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-latin-ext.woff2') format('woff2');
-  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-
-/* latin */
-@font-face {
-  font-family: 'Inter';
-  font-style: normal;
-  font-weight: 100 900;
-  font-display: block;
-  src: url('fonts/inter-latin.woff2') format('woff2');
-  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
diff --git a/trial/tailwind.config.js b/trial/tailwind.config.js
deleted file mode 100644
index bb3668ae110ff9bd13bb059714d9c380109fe148..0000000000000000000000000000000000000000
--- a/trial/tailwind.config.js
+++ /dev/null
@@ -1,35 +0,0 @@
-const defaultTheme = require('tailwindcss/defaultTheme')
-
-// Colors from https://drupal.widencollective.com/portals/gfvztttq/BrandPortal
-/** @type {import('tailwindcss').Config} */
-module.exports = {
-  content: ["./public/**/*.{html,js,mjs}"],
-  theme: {
-    extend: {
-      fontFamily: {
-        'sans': ['Inter', ...defaultTheme.fontFamily.sans],
-      },
-      colors: {
-        drupal: {
-          blue: "#009CDE",
-          darkBlue: "#006AA9",
-          navy: "#12285F",
-          lightBlue: "#CCEDF9",
-          purple: "#CCBAF4",
-          yellow: "#FFC423",
-          red: "#F46351",
-          green: "#397618",
-          white: "#FFFFFF",
-          black: "#000000"
-        }
-      },
-      backgroundImage: {
-        'gradient-33-turn': 'linear-gradient(0.33turn, var(--tw-gradient-stops))'
-      },
-    },
-  },
-  plugins: [
-    require('@tailwindcss/typography'),
-  ],
-}
-
diff --git a/trial/tests/cgi-install.test.js b/trial/tests/cgi-install.test.js
deleted file mode 100644
index 690796720ae355f42a658e55a21bfd94b778efd9..0000000000000000000000000000000000000000
--- a/trial/tests/cgi-install.test.js
+++ /dev/null
@@ -1,97 +0,0 @@
-import {describe, it, expect, afterEach, beforeEach} from 'vitest'
-import fs from "node:fs";
-import {
-  createPhp,
-  runPhpCode,
-  assertOutput,
-  rootPath,
-  setupFixturePaths,
-  cleanupFixturePaths,
-  writeFlavorTxt,
-  copyArtifactFixture,
-  createCgiPhp,
-  doRequest,
-  writeInstallParams,
-  copyExistingBuildFixture, assertSitesDefaultDirectoryPermissions
-} from './utils'
-
-async function testInstall(php, stdOut, stdErr,persistFixturePath, configFixturePath, siteName) {
-  expect(fs.existsSync(`${persistFixturePath}/drupal`)).toBe(true)
-
-  await runPhpCode(php, rootPath + '/public/assets/install-site.phpcode')
-  const lastMessage = stdOut.pop().trim();
-  expect(lastMessage).toEqual('{"message":"Performing install task (14 \\/ 14)","type":"install"}')
-  assertOutput(stdErr, '')
-  stdOut.length = 0;
-
-  await runPhpCode(php, rootPath + '/public/assets/login-admin.phpcode')
-  const loginOutput = JSON.parse(stdOut.join('').trim());
-  expect(loginOutput).toHaveProperty('type')
-  expect(loginOutput.type).toStrictEqual('set_cookie')
-  expect(loginOutput).toHaveProperty('params')
-  expect(loginOutput.params).toHaveProperty('name')
-  expect(loginOutput.params).toHaveProperty('id')
-  assertOutput(stdErr, '')
-  stdOut.length = 0;
-
-  assertSitesDefaultDirectoryPermissions(persistFixturePath)
-
-  const [cgiOut, cgiErr, phpCgi] = createCgiPhp({ configFixturePath, persistFixturePath });
-  phpCgi.cookies.set(loginOutput.params.name, loginOutput.params.id)
-
-  const [, text] = await doRequest(phpCgi, '/cgi/drupal')
-  assertOutput(cgiOut, 'GET /cgi/drupal 200')
-  assertOutput(cgiErr, '')
-
-  // Verify custom site title.
-  expect(text).toContain(`<title>Home | ${siteName}</title>`)
-  // Verify CSS/JS aggregation turned off
-  expect(text).toContain('cgi/drupal/core/themes/olivero/css')
-  expect(text).toContain('cgi/drupal/core/themes/olivero/js')
-  // Verify default content on homepage
-  expect(text).toContain('Starshot: a journey beyond the horizon')
-  // Verify user is logged in.
-  expect(text).toContain('/cgi/drupal/user/logout')
-
-  // Test OutgoingHttpInterceptor doesn't crash when fetching PSAs.
-  const [, configText] = await doRequest(phpCgi, '/cgi/drupal/admin/config');
-  expect(configText).not.toContain('Request URI not mocked: https://updates.drupal.org/psa.json')
-}
-
-describe('install-site.phpcode', {timeout: 600000}, () => {
-  beforeEach(setupFixturePaths)
-  afterEach(cleanupFixturePaths)
-
-  it('installs the site from the artifact', async ({ configFixturePath, persistFixturePath }) => {
-    writeFlavorTxt(configFixturePath, 'drupal')
-    writeInstallParams(configFixturePath, {
-      langcode: 'en',
-      installType: 'automated',
-      siteName: 'Drupal CMS Test',
-      host: globalThis.location.host,
-    })
-    copyArtifactFixture(persistFixturePath, 'trial.zip')
-
-    const [stdOut, stdErr, php] = await createPhp({ configFixturePath, persistFixturePath })
-
-    await runPhpCode(php, rootPath + '/public/assets/init.phpcode')
-    expect(stdOut.pop().trim()).toStrictEqual('{"message":"Unpacking files 100%","type":"unarchive"}')
-    assertOutput(stdErr, '')
-    stdOut.length = 0;
-
-    await testInstall(php, stdOut, stdErr, persistFixturePath, configFixturePath, 'Drupal CMS Test')
-  })
-  it.skipIf(!fs.existsSync(`${rootPath}/build`))('install-site from source [debug job]', async ({ configFixturePath, persistFixturePath }) => {
-    writeFlavorTxt(configFixturePath, 'drupal')
-    writeInstallParams(configFixturePath, {
-      langcode: 'en',
-      installType: 'automated',
-      siteName: 'test install',
-      host: globalThis.location.host,
-    })
-    copyExistingBuildFixture(persistFixturePath)
-
-    const [stdOut, stdErr, php] = await createPhp({ configFixturePath, persistFixturePath })
-    await testInstall(php, stdOut, stdErr, persistFixturePath, configFixturePath, 'test install')
-  })
-})
diff --git a/trial/tests/cgi-interactive-install.test.js b/trial/tests/cgi-interactive-install.test.js
deleted file mode 100644
index a282dfd678d02952378d54b9ed91e1ea74ad7328..0000000000000000000000000000000000000000
--- a/trial/tests/cgi-interactive-install.test.js
+++ /dev/null
@@ -1,137 +0,0 @@
-import {describe, it, expect, afterEach, beforeEach} from 'vitest'
-import fs from "node:fs";
-import {
-  createPhp,
-  runPhpCode,
-  assertOutput,
-  rootPath,
-  setupFixturePaths,
-  cleanupFixturePaths,
-  writeFlavorTxt,
-  copyArtifactFixture,
-  createCgiPhp,
-  doRequest,
-  copyExistingBuildFixture, checkForMetaRefresh, assertLocationHeader, assertSitesDefaultDirectoryPermissions
-} from './utils'
-
-/**
- * Tests the interactive installation.
- *
- * Added as a separate function to support the default artifact test and debug from source test.
- *
- * @param configFixturePath
- * @param persistFixturePath
- * @returns {Promise<void>}
- */
-async function testInteractiveInstall(configFixturePath, persistFixturePath) {
-  let location;
-  const [cgiOut, cgiErr, phpCgi] = createCgiPhp({ configFixturePath, persistFixturePath });
-
-  // Visit the Drupal site to kick off installation, verify it redirects to `core/install.php`.
-  const [initResponse, initText] = await doRequest(phpCgi, '/cgi/drupal')
-  assertOutput(cgiOut, 'GET /cgi/drupal 302')
-  assertOutput(cgiErr, '')
-  assertLocationHeader(initResponse, '/cgi/drupal/core/install.php', '')
-  expect(initText).toContain('Redirecting to /cgi/drupal/core/install.php')
-
-  // Submit and skip the first form, which is recipe selection.
-  const [, , recipesFormDoc] = await doRequest(phpCgi, '/cgi/drupal/core/install.php')
-  expect(recipesFormDoc.title).toStrictEqual('What are your top goals? | Drupal CMS')
-  const [postRecipesRes, postRecipesText,] = await doRequest(
-    phpCgi,
-    '/cgi/drupal/core/install.php',
-    'POST',
-    {
-      form_build_id: recipesFormDoc.querySelector('input[name="form_build_id"]').value,
-      form_id: recipesFormDoc.querySelector('input[name="form_id"]').value,
-      op: 'Skip this step'
-    }
-  )
-  location = assertLocationHeader(
-    postRecipesRes,
-    '/cgi/drupal/core/install.php',
-    '?profile=drupal_cms_installer&langcode=en&recipes%5B0%5D=drupal_cms_starter'
-  )
-  expect(postRecipesText).toContain('Redirecting to http://localhost:3000/cgi/drupal/core/install.php')
-
-  // Submit the form which sets the site's name.
-  const [, siteNameFormText, siteNameFormDoc] = await doRequest(phpCgi, location.pathname + location.search)
-  expect(siteNameFormText).toContain('<title>Give your site a name | Drupal CMS</title>')
-  const [postSiteNameFormRes, postSiteNameText,] = await doRequest(
-    phpCgi,
-    location.pathname + location.search,
-    'POST',
-    {
-      site_name: 'Node test',
-      form_build_id: siteNameFormDoc.querySelector('input[name="form_build_id"]').value,
-      form_id: siteNameFormDoc.querySelector('input[name="form_id"]').value,
-      op: siteNameFormDoc.querySelector('input[name="op"]').value
-    }
-  )
-
-  location = assertLocationHeader(
-    postSiteNameFormRes,
-    '/cgi/drupal/core/install.php',
-    '?profile=drupal_cms_installer&langcode=en&recipes%5B0%5D=drupal_cms_starter&site_name=Node%20test'
-  )
-  expect(postSiteNameText).toContain('Redirecting to http://localhost:3000/cgi/drupal/core/install.php')
-
-  const [initiateBatchRes] = await doRequest(phpCgi, location.pathname + location.search)
-  location = assertLocationHeader(
-    initiateBatchRes,
-    '/cgi/drupal/core/install.php',
-    '?profile=drupal_cms_installer&langcode=en&recipes%5B0%5D=drupal_cms_starter&site_name=Node%20test&id=1&op=start'
-  )
-
-  // Follow the batch process which installs recipes.
-  const [metaRefreshRes, metaRefreshText, metaRefreshDoc] = await doRequest(phpCgi, location.pathname + location.search)
-  expect(metaRefreshDoc.title).toStrictEqual('Setting up your site | Drupal CMS')
-
-  const [checkedRes] = await checkForMetaRefresh(phpCgi, metaRefreshRes, metaRefreshText, metaRefreshDoc)
-
-  location = assertLocationHeader(
-    checkedRes,
-    '/cgi/drupal/core/install.php',
-    '?profile=drupal_cms_installer&langcode=en&recipes%5B0%5D=drupal_cms_starter&site_name=Node%20test'
-  )
-  const [finishedRes, , ] = await doRequest(phpCgi, location.pathname + location.search)
-  assertLocationHeader(
-    finishedRes,
-    '/cgi/drupal//admin/dashboard/welcome',
-    ''
-  )
-
-  // @todo visit directly, not sure why double `/`.
-  const [, text, doc] = await doRequest(phpCgi, '/cgi/drupal/admin/dashboard/welcome')
-  expect(doc.title).toStrictEqual('Dashboard | Node test')
-
-  // Verify CSS/JS aggregation turned off
-  expect(text).toContain('cgi/drupal/themes/contrib/gin/dist/css')
-  expect(text).toContain('cgi/drupal/themes/contrib/gin/dist/js')
-
-  assertSitesDefaultDirectoryPermissions(persistFixturePath)
-}
-
-describe('interactive install', { timeout: 900000 }, () => {
-  beforeEach(setupFixturePaths)
-  afterEach(cleanupFixturePaths)
-
-  it('interactively installs the site from the artifact', async ({ configFixturePath, persistFixturePath }) => {
-    writeFlavorTxt(configFixturePath, 'drupal')
-    copyArtifactFixture(persistFixturePath, 'trial.zip')
-
-    const [stdOut, stdErr, php] = await createPhp({ configFixturePath, persistFixturePath })
-    await runPhpCode(php, rootPath + '/public/assets/init.phpcode')
-    expect(stdOut.pop().trim()).toStrictEqual('{"message":"Unpacking files 100%","type":"unarchive"}')
-    assertOutput(stdErr, '')
-
-    await testInteractiveInstall(configFixturePath, persistFixturePath)
-  })
-
-  it.skipIf(!fs.existsSync(`${rootPath}/build`))('interactive install from source [debug job]', async ({ configFixturePath, persistFixturePath }) => {
-    copyExistingBuildFixture(persistFixturePath)
-    expect(fs.existsSync(`${persistFixturePath}/drupal`)).toBe(true)
-
-    await testInteractiveInstall(configFixturePath, persistFixturePath)
-  })
-})
diff --git a/trial/tests/fixtures/.gitignore b/trial/tests/fixtures/.gitignore
deleted file mode 100644
index 72e8ffc0db8aad71a934dd11e5968bd5109e54b4..0000000000000000000000000000000000000000
--- a/trial/tests/fixtures/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/trial/tests/trial-manager.test.js b/trial/tests/trial-manager.test.js
deleted file mode 100644
index 435b9405c9cf73b47befac3dec3fee7fa372f011..0000000000000000000000000000000000000000
--- a/trial/tests/trial-manager.test.js
+++ /dev/null
@@ -1,184 +0,0 @@
-import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest'
-import TrialManager, { defineTrialManagerElement } from "../public/trial-manager.mjs";
-
-function createMockWorker() {
-    const mock = {
-        postMessage:  vi.fn(),
-        terminate:  vi.fn()
-    }
-    vi.stubGlobal('Worker', vi.fn(() => mock))
-    return mock
-}
-
-function createTrialManager(artifact = 'drupal.zip') {
-    const sut = new TrialManager();
-    sut.artifact = artifact
-    return sut;
-}
-
-describe('TrialManager', () => {
-    beforeEach(() => {
-        defineTrialManagerElement()
-    })
-    afterEach(() => {
-        vi.unstubAllGlobals()
-        vi.restoreAllMocks()
-        document.body.replaceChildren()
-    })
-
-    it('custom element is defined', () => {
-        createMockWorker()
-        document.body.appendChild(createTrialManager());
-        expect(document.querySelector('trial-manager')).toBeTruthy();
-    });
-
-    it('changes state based on the mode', () => {
-        createMockWorker()
-        const sut = createTrialManager()
-        document.body.appendChild(sut);
-        expect(sut.getInnerHTML()).toContain('<svg')
-        sut.mode = 'new_session'
-        expect(sut.getInnerHTML()).not.toContain('<svg')
-        sut.message = 'foobar';
-        expect(sut.getInnerHTML()).toContain('foobar')
-        sut.mode = 'existing_session';
-        expect(sut.message).toBe('')
-        expect(sut.getInnerHTML()).not.toContain('foobar')
-        expect(sut.getInnerHTML()).toContain('Resume')
-        expect(sut.getInnerHTML()).toContain('New')
-        expect(sut.getInnerHTML()).toContain('Download')
-    })
-
-    it.each([
-        ['resume', 'start', { flavor: 'cms', artifact: 'baz.zip' }, 'started', 'new_session'],
-        ['export', 'export', { flavor: 'cms' }, 'started', 'new_session'],
-        ['new', 'remove', { flavor: 'cms' }, 'reload', null]
-    ])('button %s interacts with worker', (buttonId, buttonAction, expectedParams, workerAction, endMode) => {
-        vi.stubGlobal('confirm', vi.fn().mockImplementation(() => true))
-        const worker = createMockWorker()
-        worker.postMessage.mockImplementation(({ action, params }) => {
-            expect(['check_existing', buttonAction]).toContain(action)
-            if (action === 'check_existing') {
-                worker.onmessage({
-                    data: {
-                        action: `check_existing_finished`,
-                        params: {
-                            exists: true,
-                        }
-                    }
-                })
-            } else {
-                expect(action).toBe(buttonAction)
-                expect(params).toStrictEqual(expectedParams)
-                worker.onmessage({
-                    data: {
-                        action: workerAction,
-                    }
-                })
-            }
-        })
-
-        const sut = createTrialManager('baz.zip')
-        sut.mode = 'existing_session';
-        document.body.appendChild(sut);
-
-        const channel = new BroadcastChannel('drupal-cgi-worker');
-        channel.postMessage({action: 'service_worker_ready'})
-        vi.waitFor(() => {
-            expect(worker.postMessage).toHaveBeenCalledTimes(1)
-        })
-
-        document.getElementById(buttonId).click()
-        vi.waitFor(() => {
-            expect(worker.postMessage).toHaveBeenCalledTimes(2)
-        })
-        expect(sut.mode).toStrictEqual(endMode)
-    })
-
-    it('checks for existing docroot when service_worker_ready', () => {
-        const worker = createMockWorker()
-        worker.postMessage.mockImplementation(({ action, params }) => {
-            expect(action).toBe('check_existing')
-            expect(params).toStrictEqual({ flavor: 'cms' })
-        })
-
-        document.body.appendChild(createTrialManager());
-
-        const channel = new BroadcastChannel('drupal-cgi-worker');
-        channel.postMessage({action: 'service_worker_ready'})
-
-        vi.waitFor(() => {
-            expect(worker.postMessage).toHaveBeenCalledTimes(1)
-        })
-    })
-
-    it('starts new session if one does not exist', () => {
-        const worker = createMockWorker()
-        worker.postMessage.mockImplementation(({ action, params }) => {
-            expect(['check_existing', 'start']).toContain(action)
-            if (action === 'check_existing') {
-                worker.onmessage({
-                    data: {
-                        action: `check_existing_finished`,
-                        params: {
-                            exists: false,
-                        }
-                    }
-                })
-            }
-            else {
-                expect(params).toStrictEqual({
-                    artifact: 'drupal.zip',
-                    flavor: 'foo',
-                    installParameters: {
-                        langcode: 'en',
-                        profile: 'standard',
-                        recipes: [],
-                        siteName: 'Try Drupal',
-                        skip: false,
-                    }
-                })
-                worker.onmessage({
-                    data: {
-                        action: `finished`,
-                    }
-                })
-            }
-        })
-
-        document.body.appendChild(createTrialManager());
-
-        const channel = new BroadcastChannel('drupal-cgi-worker');
-        channel.postMessage({action: 'service_worker_ready'})
-
-        vi.waitFor(() => {
-            expect(worker.postMessage).toHaveBeenCalledTimes(2)
-            expect(window.location).toStrictEqual('/cgi/foo')
-        })
-    })
-
-    it('terminates worker on removal', () => {
-        const worker = createMockWorker()
-        const sut = document.body.appendChild(createTrialManager());
-        document.body.removeChild(sut)
-        expect(worker.terminate).toHaveBeenCalledTimes(1)
-    })
-
-    it('stops worker on error', () => {
-        const worker = createMockWorker()
-        worker.postMessage.mockImplementation(({ action }) => {
-            expect(action).toBe('stop')
-        })
-        const sut = createTrialManager();
-
-        worker.onmessage({
-            data: {
-                action: 'status',
-                type: 'error',
-                message: 'barbaz',
-            }
-        })
-        expect(worker.postMessage).toHaveBeenCalledTimes(1)
-        expect(sut.message).toStrictEqual('barbaz')
-    })
-})
diff --git a/trial/tests/utils.js b/trial/tests/utils.js
deleted file mode 100644
index d08fa5e1ae630e7cbc125e9fdfae272a5f0becef..0000000000000000000000000000000000000000
--- a/trial/tests/utils.js
+++ /dev/null
@@ -1,312 +0,0 @@
-import {dirname} from "node:path";
-import {PhpNode} from "php-wasm/PhpNode.mjs";
-import {PhpBase} from "php-wasm/PhpBase.mjs";
-import PhpBinary from "php-wasm/php-node.mjs";
-import {PhpCgiNode} from "php-cgi-wasm/PhpCgiNode.mjs";
-import fs from "node:fs";
-import {expect} from "vitest";
-import crypto from "node:crypto";
-import {Window} from "happy-dom";
-import querystring from "node:querystring";
-
-export const rootPath = dirname(import.meta.dirname);
-export const rootFixturePath = rootPath + '/tests/fixtures'
-
-const sharedLibs = [
-    {
-        name: `php${PhpNode.phpVersion}-zip.so`,
-        url: `${rootPath}/node_modules/php-wasm-libzip/php${PhpNode.phpVersion}-zip.so`,
-        ini: true
-    },
-    {
-        name: `libzip.so`,
-        url: `${rootPath}/node_modules/php-wasm-libzip/libzip.so`,
-        ini: false
-    },
-    {
-        name: `php${PhpNode.phpVersion}-zlib.so`,
-        url: `${rootPath}/node_modules/php-wasm-zlib/php${PhpNode.phpVersion}-zlib.so`,
-        ini: true
-    },
-    {
-        name: `libz.so`,
-        url: `${rootPath}/node_modules/php-wasm-zlib/libz.so`,
-        ini: false
-    },
-    {
-        name: `php${PhpNode.phpVersion}-dom.so`,
-        url: `${rootPath}/node_modules/php-wasm-dom/php${PhpNode.phpVersion}-dom.so`,
-        ini: true
-    },
-    {
-        name: `php${PhpNode.phpVersion}-simplexml.so`,
-        url: `${rootPath}/node_modules/php-wasm-simplexml/php${PhpNode.phpVersion}-simplexml.so`,
-        ini: true
-    },
-    {
-        name: `php${PhpNode.phpVersion}-xml.so`,
-        url: `${rootPath}/node_modules/php-wasm-xml/php${PhpNode.phpVersion}-xml.so`,
-        ini: true
-    },
-    {
-        name: `php${PhpNode.phpVersion}-gd.so`,
-        url: `${rootPath}/node_modules/php-wasm-gd/php${PhpNode.phpVersion}-gd.so`,
-        ini: true
-    },
-    {
-        name: `libfreetype.so`,
-        url: `${rootPath}/node_modules/php-wasm-gd/libfreetype.so`,
-        ini: false
-    },
-    {
-        name: `libjpeg.so`,
-        url: `${rootPath}/node_modules/php-wasm-gd/libjpeg.so`,
-        ini: false
-    },
-    {
-        name: `libpng.so`,
-        url: `${rootPath}/node_modules/php-wasm-gd/libpng.so`,
-        ini: false
-    },
-    {
-        name: `libwebp.so`,
-        url: `${rootPath}/node_modules/php-wasm-gd/libwebp.so`,
-        ini: false
-    },
-    {
-        name: `php${PhpNode.phpVersion}-pdo-sqlite.so`,
-        url: `${rootPath}/node_modules/php-wasm-sqlite/php${PhpNode.phpVersion}-pdo-sqlite.so`,
-        ini: true
-    },
-    {
-        name: `php${PhpNode.phpVersion}-sqlite.so`,
-        url: `${rootPath}/node_modules/php-wasm-sqlite/php${PhpNode.phpVersion}-sqlite.so`,
-        ini: true
-    },
-    {
-        name: `libsqlite3.so`,
-        url: `${rootPath}/node_modules/php-wasm-sqlite/libsqlite3.so`,
-        ini: false
-    },
-    {
-        name: `php${PhpNode.phpVersion}-iconv.so`,
-        url: `${rootPath}/node_modules/php-wasm-iconv/php${PhpNode.phpVersion}-iconv.so`,
-        ini: true
-    },
-    {
-        name: `libiconv.so`,
-        url: `${rootPath}/node_modules/php-wasm-iconv/libiconv.so`,
-        ini: false
-    },
-    {
-        name: `php${PhpNode.phpVersion}-mbstring.so`,
-        url: `${rootPath}/node_modules/php-wasm-mbstring/php${PhpNode.phpVersion}-mbstring.so`,
-        ini: true
-    },
-    {
-        name: `libonig.so`,
-        url: `${rootPath}/node_modules/php-wasm-mbstring/libonig.so`,
-        ini: false
-    },
-]
-
-// works around PhpNode and PhpCgiNode locate file issues.
-const locateFile = () => undefined;
-
-export async function createPhp({ configFixturePath, persistFixturePath }) {
-    const php = new PhpBase(PhpBinary, {
-        persist: [
-            {mountPath: '/persist', localPath: persistFixturePath},
-            {mountPath: '/config', localPath: configFixturePath},
-        ],
-        locateFile,
-        sharedLibs,
-    });
-    const stdOut = [], stdErr = [];
-    php.addEventListener('output', (event) => event.detail.forEach(line => void (stdOut.push(line))));
-    php.addEventListener('error',  (event) => event.detail.forEach(line => void (stdErr.push(line))));
-    await php.binary
-    await php.run(`<?php putenv('DRUPAL_CMS_TRIAL=1');`)
-    return [stdOut, stdErr, php]
-}
-
-export function createCgiPhp({ configFixturePath, persistFixturePath }) {
-    const stdOut = [], stdErr = [];
-
-    const php = new PhpCgiNode({
-        persist: [
-            {mountPath: '/persist', localPath: persistFixturePath},
-            {mountPath: '/config', localPath: configFixturePath},
-        ],
-        locateFile,
-        sharedLibs,
-        env: {
-            HTTP_USER_AGENT: 'node',
-            DRUPAL_CMS_TRIAL: '1'
-        },
-        docroot: '/persist/drupal/web',
-        vHosts: [
-            {
-                pathPrefix: '/cgi/drupal',
-                directory: '/persist/drupal/web',
-                entrypoint: 'index.php',
-            }
-        ],
-        /**
-         *
-         * @param {Request} request
-         * @param {Response} response
-         */
-        onRequest(request, response) {
-            const url = new URL(request.url);
-            stdOut.push(`${request.method} ${url.pathname}${url.search} ${response.status}`)
-        },
-        notFound(request) {
-            const url = new URL(request.url);
-            stdErr.push(`${request.method} ${url.pathname} 404`)
-            return new Response(`<body><h1>404</h1>${request.url} not found</body>`, {
-                status: 404,
-                headers: {"Content-Type": "text/html"},
-            });
-        }
-    })
-    php.cookies.set('big_pipe_nojs', '1')
-    return [stdOut, stdErr, php]
-}
-
-export async function runPhpCode(php, path) {
-    const initPhpCode = fs.readFileSync(path).toString()
-    await php.binary;
-    await php.run(initPhpCode);
-}
-
-export function assertOutput(std, expected) {
-    expect(std.join('').trim()).toStrictEqual(expected)
-}
-
-export function setupFixturePaths(context) {
-    const testRoot = rootFixturePath + '/' + crypto.randomBytes(5).toString('hex');
-    context.configFixturePath = testRoot + '/config'
-    context.persistFixturePath =  testRoot + '/persist'
-    context.testRoot = testRoot
-    fs.mkdirSync(context.configFixturePath, { recursive: true })
-    fs.mkdirSync(context.persistFixturePath, { recursive: true })
-}
-
-export function cleanupFixturePaths({ configFixturePath, persistFixturePath, testRoot }) {
-    if (fs.existsSync(`${configFixturePath}/flavor.txt`)) {
-        const flavorValue = fs.readFileSync(`${configFixturePath}/flavor.txt`).toString()
-        if (fs.existsSync(`${persistFixturePath}/${flavorValue}`)) {
-            fs.chmodSync(`${persistFixturePath}/${flavorValue}/web/sites/default`, 0o777)
-            fs.rmSync(`${persistFixturePath}/${flavorValue}`, { recursive: true, force: true })
-        }
-        fs.unlinkSync(`${configFixturePath}/flavor.txt`)
-    }
-    if (fs.existsSync(`${persistFixturePath}/artifact.zip`)) {
-        fs.unlinkSync(`${persistFixturePath}/artifact.zip`)
-    }
-    fs.rmSync(testRoot, { recursive: true, force: true })
-}
-
-export function writeFlavorTxt(configFixturePath) {
-    fs.writeFileSync(`${configFixturePath}/flavor.txt`, 'drupal')
-}
-
-export function writeInstallParams(configFixturePath, params) {
-    fs.writeFileSync(`${configFixturePath}/drupal-install-params.json`, JSON.stringify({
-        langcode: 'en',
-        skip: false,
-        siteName: 'test',
-        profile: 'standard',
-        recipes: [],
-        ...params
-    }))
-}
-
-export function copyArtifactFixture(persistFixturePath, name) {
-    fs.copyFileSync(
-        `${rootFixturePath}/${name}`,
-        `${persistFixturePath}/artifact.zip`
-    )
-}
-export function copyExistingBuildFixture(persistFixturePath) {
-    fs.cpSync(`${rootPath}/build`, `${persistFixturePath}/drupal`, {
-        recursive: true
-    })
-}
-
-export async function doRequest(phpCgi, url, method = 'GET', body = null) {
-    const request = {
-        connection: {
-            encrypted: false,
-        },
-        method,
-        url,
-        headers: {
-            host: globalThis.location.host
-        },
-    };
-    if (body) {
-        const buffer = new TextEncoder().encode(querystring.stringify(body));
-        request.body = new ReadableStream({
-            start(controller) {
-                controller.enqueue(buffer);
-                controller.close();
-            }
-        })
-    }
-    const response = await phpCgi.request(request)
-    const text = await response.text()
-    const document = (new Window()).document
-    document.write(text)
-    return [response, text, document]
-}
-
-export async function checkForMetaRefresh(phpCgi, response, text, document) {
-    if (response.status === 200) {
-        const meta = document.querySelector('meta[http-equiv="Refresh"]');
-        if (meta) {
-            const match = meta.content.match(/\d+;\s*URL=\'?(?<url>[^\']*)/i)
-            if (match) {
-                const url = match.groups.url
-                const [newRes, newText, newDocument] = await doRequest(phpCgi, url)
-                return await checkForMetaRefresh(phpCgi, newRes, newText, newDocument)
-            }
-        }
-    }
-    return [response, text, document]
-}
-
-/**
- * Verifies that the `sites/default` directory is writeable.
- *
- * @param {string} persistFixturePath
- */
-export function assertSitesDefaultDirectoryPermissions(persistFixturePath) {
-  const stat = fs.statSync(`${persistFixturePath}/drupal/web/sites/default`)
-  expect(stat.mode & 0o777).toStrictEqual(0o755)
-
-  const statSettings = fs.statSync(`${persistFixturePath}/drupal/web/sites/default/settings.php`)
-  expect(statSettings.mode & 0o777).toStrictEqual(0o644)
-}
-
-/**
- * Asserts the location header of a response.
- *
- * @param {Response} response
- * @param {string} pathname
- * @param {string} search
- */
-export function assertLocationHeader(response, pathname, search) {
-  expect(response.headers.has('location')).toBeTruthy()
-  let location;
-  try {
-    location = new URL(response.headers.get('location'), globalThis.location.toString())
-  } catch (e) {
-    console.error(e)
-    expect(response.headers.get('location')).toStrictEqual(pathname + search)
-  }
-  expect(location.pathname).toStrictEqual(pathname)
-  expect(location.search).toStrictEqual(search)
-  return location
-}
diff --git a/trial/vitest.config.mts b/trial/vitest.config.mts
deleted file mode 100644
index 7403489e7dac1c6a5afcaf879f062ce44b4cb8a2..0000000000000000000000000000000000000000
--- a/trial/vitest.config.mts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { defineConfig } from 'vitest/config'
-
-export default defineConfig({
-    test: {
-        environment: 'happy-dom',
-        coverage: {
-            provider: 'v8',
-            reporter: ['text'],
-            include: [
-                'public/drupal-cgi-worker.mjs',
-                'public/install-worker.mjs',
-                'public/service-worker.mjs',
-                'public/trial-manager.mjs'
-            ],
-        }
-    },
-})
diff --git a/trial/workers.webpack.js b/trial/workers.webpack.js
deleted file mode 100644
index 15d7ade302b0946114b8bdc8159691d7f278d4c9..0000000000000000000000000000000000000000
--- a/trial/workers.webpack.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Firefox does not support ES modules in service workers, so we have to use
- * Webpack to bundle the service worker.
- *
- * NOTE: See if we can have Webpack replace the `postinstall` hook.
- */
-const path = require("path");
-
-module.exports = {
-  mode: "production",
-  module: {
-    rules: [
-      {
-        test: /\.mjs$/,
-        exclude: /node_modules/,
-        use: { loader: "babel-loader" }
-      }
-    ]
-  },
-  entry: {
-    "service-worker": "./public/service-worker.mjs",
-  },
-  output: {
-    path: path.resolve(__dirname, "public"),
-    filename: "[name].js"
-  },
-  target: "webworker"
-};