diff --git a/.github/actions/build-dotnet-app/action.yml b/.github/actions/build-dotnet-app/action.yml index 7ce30bfe3..a1caeb0ff 100644 --- a/.github/actions/build-dotnet-app/action.yml +++ b/.github/actions/build-dotnet-app/action.yml @@ -14,7 +14,7 @@ runs: steps: - name: Setup .NET Core SDK ${{ inputs.dotnet_version }} - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: dotnet-version: ${{ inputs.dotnet_version }} - name: Install dependencies diff --git a/.github/actions/post-terraform-results/action.yml b/.github/actions/post-terraform-results/action.yml index 05c4059c6..05b14296a 100644 --- a/.github/actions/post-terraform-results/action.yml +++ b/.github/actions/post-terraform-results/action.yml @@ -41,7 +41,7 @@ runs: steps: - name: Update PR with Terraform results - uses: actions/github-script@v6 + uses: actions/github-script@v7 if: github.event_name == 'pull_request' env: PLAN: "terraform\n${{ inputs.plan_stdout }}" diff --git a/.github/actions/run-e2e-tests/action.yml b/.github/actions/run-e2e-tests/action.yml index 7d4538211..06f877765 100644 --- a/.github/actions/run-e2e-tests/action.yml +++ b/.github/actions/run-e2e-tests/action.yml @@ -33,14 +33,14 @@ runs: config: baseUrl=${{ inputs.url }} - name: Store screenshots on test failure - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: failure() with: name: cypress-screenshots path: ./tests/Dfe.PlanTech.Web.E2ETests/cypress/screenshots - name: Store videos - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: always() with: name: cypress-videos diff --git a/.github/scripts/clear-user-data-from-db.sql b/.github/scripts/clear-user-data-from-db.sql new file mode 100644 index 000000000..e8a574ba0 --- /dev/null +++ b/.github/scripts/clear-user-data-from-db.sql @@ -0,0 +1,11 @@ +BEGIN TRANSACTION; + + DELETE FROM [dbo].[response]; + DELETE FROM [dbo].[submission]; + DELETE FROM [dbo].[question]; + DELETE FROM [dbo].[answer]; + DELETE FROM [dbo].[signin]; + DELETE FROM [dbo].[user]; + DELETE FROM [dbo].[establishment]; + +COMMIT; diff --git a/.github/scripts/qa-data.py b/.github/scripts/qa-data.py new file mode 100644 index 000000000..1bf9e6c57 --- /dev/null +++ b/.github/scripts/qa-data.py @@ -0,0 +1,65 @@ +import os +import pyodbc +import json +import struct +from azure import identity + +def query_to_json(connection_string, sql_query): + + if os.getenv("ENV") != "dev": + credential = identity.DefaultAzureCredential(exclude_interactive_browser_credential=True) + token_bytes = credential.get_token("https://database.windows.net/.default").token.encode("UTF-16-LE") + token_struct = struct.pack(f'> $GITHUB_OUTPUT - echo "branch=$GIT_BRANCH" >> $GITHUB_OUTPUT - echo "release=${RELEASE}" >> $GITHUB_OUTPUT - echo "checked-out-sha=${CHECKED_OUT_SHA}" >> $GITHUB_OUTPUT - - create-tag: - name: Tag and release - needs: set-env - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v3 - with: - ref: ${{ github.ref }} - - - name: Create tag - run: | - git tag ${{ needs.set-env.outputs.release }} - git push origin ${{ needs.set-env.outputs.release }} - - - name: Create release - uses: "actions/github-script@v6" - with: - github-token: "${{ secrets.GITHUB_TOKEN }}" - script: | - try { - await github.rest.repos.createRelease({ - draft: ${{ needs.set-env.outputs.environment == 'staging' }}, - generate_release_notes: true, - name: "${{ needs.set-env.outputs.release }}", - owner: context.repo.owner, - prerelease: ${{ needs.set-env.outputs.environment == 'staging' }}, - repo: context.repo.repo, - tag_name: "${{ needs.set-env.outputs.release }}", - }); - } catch (error) { - core.setFailed(error.message); - } - - upgrade-database: - name: Upgrade ${{ needs.set-env.outputs.environment }} database - needs: set-env - runs-on: ubuntu-22.04 - environment: ${{ needs.set-env.outputs.environment }} - steps: - - uses: actions/checkout@v3 - with: - ref: ${{ github.ref }} - - - name: Azure CLI Login - uses: ./.github/actions/azure-login - with: - az_tenant_id: ${{ secrets.AZ_TENANT_ID }} - az_subscription_id: ${{ secrets.AZ_SUBSCRIPTION_ID }} - az_client_id: ${{ secrets.AZ_CLIENT_ID }} - az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }} - - - name: Build and run database upgrader - uses: ./.github/actions/build-and-run-database-upgrader - with: - dotnet_version: ${{ vars.DOTNET_VERSION }} - az_keyvault_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }}-kv - az_keyvault_database_connectionstring_name: ${{ secrets.AZ_KEYVAULT_DATABASE_CONNECTIONSTRING_NAME }} - az_sql_database_server_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} - az_resource_group_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} - environment: ${{ needs.set-env.outputs.environment }} - sql_analytics_username: ${{ secrets.ANALYTICS_USERNAME }} - sql_analytics_password: ${{ secrets.ANALYTICS_PASSWORD }} - - build-and-push-image: - name: Build and push to ACR - needs: [set-env, upgrade-database] - runs-on: ubuntu-22.04 - environment: ${{ needs.set-env.outputs.environment }} - steps: - - uses: actions/checkout@v3 - with: - ref: ${{ github.ref }} - - - name: Azure Container Registry login - uses: docker/login-action@v2 - with: - username: ${{ secrets.AZ_CLIENT_ID }} - password: ${{ secrets.AZ_CLIENT_SECRET }} - registry: ${{ secrets.AZ_ACR_URL }} - - - name: Build and push docker image - uses: docker/build-push-action@v3 - with: - context: ./ - file: ./src/Dfe.PlanTech.Web/Dockerfile - build-args: COMMIT_SHA=${{ needs.set-env.outputs.checked-out-sha }} - tags: | - ${{ secrets.AZ_ACR_URL }}/${{ env.DOCKER_IMAGE }}:${{ needs.set-env.outputs.branch }} - ${{ secrets.AZ_ACR_URL }}/${{ env.DOCKER_IMAGE }}:${{ needs.set-env.outputs.release }} - ${{ secrets.AZ_ACR_URL }}/${{ env.DOCKER_IMAGE }}:sha-${{ needs.set-env.outputs.checked-out-sha }} - ${{ secrets.AZ_ACR_URL }}/${{ env.DOCKER_IMAGE }}:latest - push: true - - deploy-image: - name: Deploy to ${{ needs.set-env.outputs.environment }} (${{ needs.set-env.outputs.release }}) - needs: [ build-and-push-image, set-env ] - runs-on: ubuntu-22.04 - environment: ${{ needs.set-env.outputs.environment }} - steps: - - uses: actions/checkout@v3 - with: - ref: ${{ github.ref }} - - - name: Azure CLI Login - uses: ./.github/actions/azure-login - with: - az_tenant_id: ${{ secrets.AZ_TENANT_ID }} - az_subscription_id: ${{ secrets.AZ_SUBSCRIPTION_ID }} - az_client_id: ${{ secrets.AZ_CLIENT_ID }} - az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }} - - - name: Update Azure Container Apps Revision - uses: azure/CLI@v1 - id: azure - with: - azcliversion: 2.45.0 - inlineScript: | - az config set extension.use_dynamic_install=yes_without_prompt - az containerapp update \ - --name ${{ secrets.AZ_ACA_NAME }} \ - --resource-group ${{ secrets.AZ_ACA_RESOURCE_GROUP }} \ - --image ${{ secrets.AZ_ACR_URL }}/${{ env.DOCKER_IMAGE }}:${{ needs.set-env.outputs.release }} \ - --output none - &> /dev/null \ No newline at end of file diff --git a/.github/workflows/build-azure-function.yml b/.github/workflows/build-azure-function.yml new file mode 100644 index 000000000..307ad2ad5 --- /dev/null +++ b/.github/workflows/build-azure-function.yml @@ -0,0 +1,45 @@ +name: Build .NET Azure Function App + +on: + workflow_call: + inputs: + artifact: + type: string + required: true + +concurrency: + group: ${{ github.workflow }}-build-azure-function + cancel-in-progress: true + +env: + DOTNET_VERSION: ${{ vars.DOTNET_VERSION }} + +jobs: + build-image: + runs-on: ubuntu-22.04 + name: Build .NET Azure Function App & Upload Zip Artifact + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + + - name: Set up .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + + - name: Install Dependencies + shell: bash + run: dotnet restore ./src/Dfe.PlanTech.AzureFunctions/Dfe_PlanTech_AzureFunctions.csproj + + - name: Build Azure Function App + shell: bash + run: dotnet publish ./src/Dfe.PlanTech.AzureFunctions/Dfe_PlanTech_AzureFunctions.csproj --configuration Release --no-restore --output ./build + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ inputs.artifact }} + path: ./build diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index fccbdb188..7ed971ee0 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -11,42 +11,38 @@ on: required: true concurrency: - group: ${{ github.workflow }}-${{ github.event.inputs.environment }} - cancel-in-progress: true + group: ${{ github.workflow }}-${{ github.event.inputs.environment }} + cancel-in-progress: true env: - DOCKER_IMAGE: plan-technology-for-your-school - GITHUB_CONTAINER_REGISTRY: ghcr.io - ORG_NAME: dfe-digital - NODE_VERSION: 18.x + DOCKER_IMAGE: plan-technology-for-your-school + GITHUB_CONTAINER_REGISTRY: ghcr.io + ORG_NAME: dfe-digital jobs: - - build-image: - - runs-on: ubuntu-22.04 - name: Build & Publish Image - - steps: - - - name: Checkout Repository - uses: actions/checkout@v3 - with: - ref: ${{ github.ref }} - - - name: GitHub Container Registry Login - uses: docker/login-action@v3 - with: - registry: ${{ env.GITHUB_CONTAINER_REGISTRY }} - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build Image & Publish To GCR - uses: docker/build-push-action@v4 - with: - context: ./ - file: ./src/Dfe.PlanTech.Web/Dockerfile - build-args: COMMIT_SHA=${{ inputs.checked-out-sha }} - tags: | - ${{ env.GITHUB_CONTAINER_REGISTRY }}/${{ env.ORG_NAME }}/${{ env.DOCKER_IMAGE }}:${{ inputs.branch }}-${{ inputs.checked-out-sha }} - push: true \ No newline at end of file + build-image: + runs-on: ubuntu-22.04 + name: Build & Publish Image + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + + - name: GitHub Container Registry Login + uses: docker/login-action@v3 + with: + registry: ${{ env.GITHUB_CONTAINER_REGISTRY }} + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build Image & Publish To GCR + uses: docker/build-push-action@v5 + with: + context: ./ + file: ./src/Dfe.PlanTech.Web/Dockerfile + build-args: COMMIT_SHA=${{ inputs.checked-out-sha }} + tags: | + ${{ env.GITHUB_CONTAINER_REGISTRY }}/${{ env.ORG_NAME }}/${{ env.DOCKER_IMAGE }}:${{ inputs.branch }}-${{ inputs.checked-out-sha }} + push: true diff --git a/.github/workflows/build-web-assets.yml b/.github/workflows/build-web-assets.yml index f8b8b76e6..89013599f 100644 --- a/.github/workflows/build-web-assets.yml +++ b/.github/workflows/build-web-assets.yml @@ -4,10 +4,10 @@ on: pull_request: branches: ["main", "development"] paths: - - 'src/Dfe.PlanTech.Web.Node/**' + - "src/Dfe.PlanTech.Web.Node/**" concurrency: - group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' + group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}" cancel-in-progress: true jobs: @@ -17,15 +17,15 @@ jobs: defaults: run: working-directory: ./src/Dfe.PlanTech.Web.Node/ - + steps: - name: Clone repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.head_ref }} - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: "latest" @@ -48,4 +48,3 @@ jobs: else echo "No changes to commit" fi - \ No newline at end of file diff --git a/.github/workflows/clear-user-data-from-db.yml b/.github/workflows/clear-user-data-from-db.yml new file mode 100644 index 000000000..795745dbd --- /dev/null +++ b/.github/workflows/clear-user-data-from-db.yml @@ -0,0 +1,80 @@ +name: Clear user data from DB + +on: + workflow_dispatch: + inputs: + environment: + description: "What environment to clear" + required: true + type: choice + options: + - development + - tst + - staging + +jobs: + clear-db: + if: ${{ inputs.environment != 'Production' }} + environment: ${{ inputs.environment }} + name: Clear user data from DB + runs-on: ubuntu-latest + env: + az_keyvault_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }}-kv + az_keyvault_database_connectionstring_name: ${{ secrets.AZ_KEYVAULT_DATABASE_CONNECTIONSTRING_NAME }} + az_sql_database_server_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} + az_resource_group_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} + SQL_IP_NAME: github-action-clear-user-data + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Log Environment + run: | + echo "Environment: ${{ inputs.environment }}" + + - name: Login with AZ + uses: ./.github/actions/azure-login + with: + az_tenant_id: ${{ secrets.AZ_TENANT_ID }} + az_subscription_id: ${{ secrets.AZ_SUBSCRIPTION_ID }} + az_client_id: ${{ secrets.AZ_CLIENT_ID }} + az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }} + + - name: Get workflow IP address + id: whats-my-ip + uses: ./.github/actions/whats-my-ip-address + + - name: Add Azure firewall rules + uses: ./.github/actions/azure-ip-whitelist + with: + ip_address: ${{ steps.whats-my-ip.outputs.ip }} + verb: "add" + az_keyvault_name: ${{ env.az_keyvault_name }} + az_ip_name: ${{ env.SQL_IP_NAME }} + az_resource_group: ${{ env.az_resource_group_name}} + az_sql_database_server_name: ${{ env.az_sql_database_server_name }} + + - name: Get connection string + id: get-connection-string + uses: ./.github/actions/azure-get-db-connectionstring + with: + az_keyvault_name: ${{ env.az_keyvault_name }} + az_keyvault_database_connectionstring_name: ${{ env.az_keyvault_database_connectionstring_name }} + + - name: Run clear DB SQL script + uses: azure/sql-action@v2.2 + with: + connection-string: ${{ steps.get-connection-string.outputs.connection_string }} + path: "./.github/scripts/clear-user-data-from-db.sql" + + - name: Remove Azure firewall rules + if: always() + uses: ./.github/actions/azure-ip-whitelist + with: + ip_address: ${{ steps.whats-my-ip.outputs.ip }} + verb: "remove" + az_keyvault_name: ${{ env.az_keyvault_name }} + az_ip_name: ${{ env.SQL_IP_NAME }} + az_resource_group: ${{ env.az_resource_group_name}} + az_sql_database_server_name: ${{ env.az_sql_database_server_name }} diff --git a/.github/workflows/code-pr-check.yml b/.github/workflows/code-pr-check.yml index 1ec10629b..82ec89cb3 100644 --- a/.github/workflows/code-pr-check.yml +++ b/.github/workflows/code-pr-check.yml @@ -1,37 +1,36 @@ -name: Code PR Check +name: Code PR Check on: push: branches: ["main", "development"] paths: - - 'src/**' - - 'tests/**' + - "src/**" + - "tests/**" pull_request: branches: ["main", "development"] paths: - - 'src/**' - - 'tests/**' - - '.github/workflows/code-pr-check.yml' + - "src/**" + - "tests/**" + - ".github/workflows/code-pr-check.yml" concurrency: - group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' + group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}" cancel-in-progress: true - + env: DOTNET_VERSION: ${{ vars.DOTNET_VERSION }} - -jobs: +jobs: get-src-dir-list: name: Get Directories for Linting runs-on: ubuntu-22.04 if: ${{ github.event_name == 'pull_request' }} outputs: directories: ${{ steps.list-dir.outputs.directories }} - + steps: - name: Checkout Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Get Directories id: list-dir @@ -54,12 +53,12 @@ jobs: pull-requests: write steps: - - name: Checkout Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up .NET - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 + if: env.directory_has_changes == 'true' with: dotnet-version: ${{ env.DOTNET_VERSION }} cache: false @@ -69,6 +68,7 @@ jobs: - name: Run Linter uses: wearerequired/lint-action@v2 + if: env.directory_has_changes == 'true' with: dotnet_format: true dotnet_format_dir: ./src/${{ matrix.workspace }} @@ -79,7 +79,7 @@ jobs: commit: true github_token: ${{ secrets.GITHUB_TOKEN }} - build-test-web-app: + build-test-web-app: name: Build and run unit tests runs-on: ubuntu-22.04 if: ${{ always() && ( github.event_name == 'pull_request' && needs.lint-code.result == 'success' ) || ( github.event_name == 'push' && needs.lint-code.result == 'skipped' ) }} @@ -87,10 +87,10 @@ jobs: steps: - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Cache SonarCloud packages - uses: actions/cache@v1 + uses: actions/cache@v4 with: path: ~\sonar\cache key: ${{ runner.os }}-sonar @@ -98,16 +98,16 @@ jobs: - name: Install dotnet coverage run: dotnet tool install --global dotnet-coverage --version 17.9.3 - + - name: Install SonarCloud scanners run: dotnet tool install --global dotnet-sonarscanner - name: Install latest JDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: - distribution: 'microsoft' - java-version: '17' - + distribution: "microsoft" + java-version: "17" + - name: Start SonarCloud scanner run: | dotnet-sonarscanner begin \ @@ -120,11 +120,11 @@ jobs: /d:sonar.issue.ignore.multicriteria=e1 \ /d:sonar.issue.ignore.multicriteria.e1.ruleKey=csharpsquid:S6602 \ /d:sonar.issue.ignore.multicriteria.e1.resourceKey=src/**/*.cs - - - name: Build web app + + - name: Build web app uses: ./.github/actions/build-dotnet-app with: - dotnet_version: ${{ env.DOTNET_VERSION }} + dotnet_version: ${{ env.DOTNET_VERSION }} solution_filename: plan-technology-for-your-school.sln - name: Run unit tests @@ -139,23 +139,23 @@ jobs: run: dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" - name: Archive code coverage results - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: code-coverage-report path: coverage.xml - build-database-upgrader: + build-database-upgrader: name: Build database upgrader runs-on: ubuntu-22.04 steps: - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - - name: Build database upgrader + - name: Build database upgrader uses: ./.github/actions/build-dotnet-app with: - dotnet_version: ${{ env.DOTNET_VERSION }} + dotnet_version: ${{ env.DOTNET_VERSION }} solution_filename: Dfe.PlanTech.DatabaseUpgrader.sln run-javascript-tests: @@ -163,23 +163,25 @@ jobs: name: Run javascript tests steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: "latest" - name: Install Dependencies + working-directory: ./tests/Dfe.PlanTech.Web.Node.UnitTests/ run: npm install - name: Run the tests + working-directory: ./tests/Dfe.PlanTech.Web.Node.UnitTests/ run: npm test - name: Test report uses: dorny/test-reporter@v1 - if: success() || failure() # run this step even if previous step failed + if: success() || failure() # run this step even if previous step failed with: - name: JEST Tests # Name of the check run which will be created - path: ./junit.xml # Path to test results - reporter: jest-junit # Format of test results \ No newline at end of file + name: JEST Tests # Name of the check run which will be created + path: ./tests/Dfe.PlanTech.Web.Node.UnitTests/junit.xml # Path to test results + reporter: jest-junit # Format of test results diff --git a/.github/workflows/create-tag-release.yml b/.github/workflows/create-tag-release.yml new file mode 100644 index 000000000..8c4e4cb20 --- /dev/null +++ b/.github/workflows/create-tag-release.yml @@ -0,0 +1,42 @@ +name: Create & Tag Release + +on: + workflow_call: + +jobs: + create-tag-release: + runs-on: ubuntu-22.04 + name: Tag & Create Release + permissions: + contents: write + issues: write + pull-requests: write + id-token: write + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + persist-credentials: false + + - name: Setup Node.JS + uses: actions/setup-node@v4 + with: + node-version: "lts/*" + + - name: Install Dependencies + run: | + npm i npx@10 + npm i @semantic-release/commit-analyzer@11 + npm i @semantic-release/release-notes-generator@12 + npm i @semantic-release/github@9 + npm i @semantic-release/exec@6 + + - name: Verify Integrity of Installed Dependencies + run: npm audit signatures + + - name: Create Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: npx semantic-release@23 diff --git a/.github/workflows/deploy-azure-function.yml b/.github/workflows/deploy-azure-function.yml new file mode 100644 index 000000000..e3227c2e5 --- /dev/null +++ b/.github/workflows/deploy-azure-function.yml @@ -0,0 +1,47 @@ +on: + workflow_call: + inputs: + environment: + type: string + required: true + artifact: + type: string + required: true + +concurrency: + group: ${{ github.workflow }}-deploy-${{ inputs.environment }}-azure-function + cancel-in-progress: true + +jobs: + deploy-image: + runs-on: ubuntu-22.04 + name: Deploy .NET Azure Function App + environment: ${{ inputs.environment }} + env: + AZURE_FUNCTIONAPP_NAME: "${{ secrets.AZ_ENVIRONMENT }}plantechcontentfulfunction" + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + + - name: Download Artifact + uses: actions/download-artifact@v4 + with: + name: ${{ inputs.artifact }} + path: ./build + + - name: Azure CLI Login + uses: ./.github/actions/azure-login + with: + az_tenant_id: ${{ secrets.AZ_TENANT_ID }} + az_subscription_id: ${{ secrets.AZ_SUBSCRIPTION_ID }} + az_client_id: ${{ secrets.AZ_CLIENT_ID }} + az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }} + + - name: Deploy Azure Function App + uses: Azure/functions-action@v1 + with: + app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }} + package: ./build diff --git a/.github/workflows/deploy-image.yml b/.github/workflows/deploy-image.yml index 0c786c761..63fb674ea 100644 --- a/.github/workflows/deploy-image.yml +++ b/.github/workflows/deploy-image.yml @@ -1,194 +1,139 @@ name: Deploy Image to Environment on: - workflow_call: - inputs: - environment: - type: string - required: true - branch: - type: string - required: true - checked-out-sha: - type: string - required: true + workflow_call: + inputs: + environment: + type: string + required: true + branch: + type: string + required: true + checked-out-sha: + type: string + required: true concurrency: - group: ${{ github.workflow }}-${{ github.event.inputs.environment }} - cancel-in-progress: true + group: ${{ github.workflow }}-${{ github.event.inputs.environment }} + cancel-in-progress: true env: - AZ_FRONTDOOR_URL: ${{ inputs.environment == 'staging' && secrets.AZ_FRONTDOOR_URL_STAGING || secrets.AZ_FRONTDOOR_URL }} - GCR_DOCKER_IMAGE: plan-technology-for-your-school - ACR_DOCKER_IMAGE: plan-tech-app - GITHUB_CONTAINER_REGISTRY: ghcr.io - ORG_NAME: dfe-digital + AZ_FRONTDOOR_URL: ${{ inputs.environment == 'staging' && secrets.AZ_FRONTDOOR_URL_STAGING || secrets.AZ_FRONTDOOR_URL }} + GCR_DOCKER_IMAGE: plan-technology-for-your-school + ACR_DOCKER_IMAGE: plan-tech-app + GITHUB_CONTAINER_REGISTRY: ghcr.io + ORG_NAME: dfe-digital jobs: + upgrade-database: + runs-on: ubuntu-22.04 + name: Update Database for ${{ inputs.environment }} + environment: ${{ inputs.environment }} - set-env: - - runs-on: ubuntu-22.04 - name: Set Environment (Deploy Image) - outputs: - release: ${{ steps.var.outputs.release }} - steps: - - id: var - run: | - RELEASE=${{ inputs.environment }}-`date +%Y-%m-%d`.${{ github.run_number }} - echo "release=${RELEASE}" >> $GITHUB_OUTPUT - - create-tag-release: - - runs-on: ubuntu-22.04 - name: Tag & Create Release - needs: set-env - - steps: - - uses: actions/checkout@v3 - with: - ref: ${{ github.ref }} - - - name: Create Tag - run: | - git tag ${{ needs.set-env.outputs.release }} - git push origin ${{ needs.set-env.outputs.release }} - - - name: Create Release - uses: "actions/github-script@v7" - with: - github-token: "${{ secrets.GITHUB_TOKEN }}" - script: | - try { - await github.rest.repos.createRelease({ - draft: ${{ inputs.environment == 'staging' }}, - generate_release_notes: true, - name: "${{ needs.set-env.outputs.release }}", - owner: context.repo.owner, - prerelease: ${{ inputs.environment == 'staging' }}, - repo: context.repo.repo, - tag_name: "${{ needs.set-env.outputs.release }}", - }); - } catch (error) { - core.setFailed(error.message); - } - - upgrade-database: - - runs-on: ubuntu-22.04 - name: Update Database for ${{ inputs.environment }} - environment: ${{ inputs.environment }} - needs: set-env - - steps: - - uses: actions/checkout@v3 - with: - ref: ${{ github.ref }} - - - name: Azure CLI Login - uses: ./.github/actions/azure-login - with: - az_tenant_id: ${{ secrets.AZ_TENANT_ID }} - az_subscription_id: ${{ secrets.AZ_SUBSCRIPTION_ID }} - az_client_id: ${{ secrets.AZ_CLIENT_ID }} - az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }} - - - name: Build & Run Database Upgrader - uses: ./.github/actions/build-and-run-database-upgrader - with: - dotnet_version: ${{ vars.DOTNET_VERSION }} - az_keyvault_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }}-kv - az_keyvault_database_connectionstring_name: ${{ secrets.AZ_KEYVAULT_DATABASE_CONNECTIONSTRING_NAME }} - az_sql_database_server_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} - az_resource_group_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} - environment: ${{ inputs.environment }} - sql_analytics_username: ${{ secrets.ANALYTICS_USERNAME }} - sql_analytics_password: ${{ secrets.ANALYTICS_PASSWORD }} - - pull-image-from-gcr-and-publish-to-acr: - - runs-on: ubuntu-22.04 - name: Pull Image From GitHub Container Registry and Publish to Azure Container Registry - environment: ${{ inputs.environment }} - needs: [set-env, upgrade-database] - - steps: - - - name: GitHub Container Registry Login - uses: docker/login-action@v3 - with: - registry: ${{ env.GITHUB_CONTAINER_REGISTRY }} - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Pull Image From GCR - run: docker pull ${{ env.GITHUB_CONTAINER_REGISTRY }}/${{ env.ORG_NAME }}/${{ env.GCR_DOCKER_IMAGE }}:${{ inputs.branch }}-${{ inputs.checked-out-sha }} - - - name: Azure Container Registry Login - uses: docker/login-action@v3 - with: - registry: ${{ secrets.AZ_ACR_URL }} - username: ${{ secrets.AZ_CLIENT_ID }} - password: ${{ secrets.AZ_CLIENT_SECRET }} - - - name: Push Image To ACR - run: | - docker tag ${{ env.GITHUB_CONTAINER_REGISTRY }}/${{ env.ORG_NAME }}/${{ env.GCR_DOCKER_IMAGE }}:${{ inputs.branch }}-${{ inputs.checked-out-sha }} ${{ secrets.AZ_ACR_URL }}/${{ env.ACR_DOCKER_IMAGE }}:${{ inputs.branch }}-${{ inputs.checked-out-sha }}-${{ inputs.environment }} - docker push ${{ secrets.AZ_ACR_URL }}/${{ env.ACR_DOCKER_IMAGE }}:${{ inputs.branch }}-${{ inputs.checked-out-sha }}-${{ inputs.environment }} - - deploy-image: - - runs-on: ubuntu-22.04 - name: Deploy Image To ${{ inputs.environment }} (${{ needs.set-env.outputs.release }}) - environment: ${{ inputs.environment }} - needs: [set-env, upgrade-database, pull-image-from-gcr-and-publish-to-acr] - - steps: - - - uses: actions/checkout@v3 - with: - ref: ${{ github.ref }} - - - name: Azure CLI Login - uses: ./.github/actions/azure-login - with: - az_tenant_id: ${{ secrets.AZ_TENANT_ID }} - az_subscription_id: ${{ secrets.AZ_SUBSCRIPTION_ID }} - az_client_id: ${{ secrets.AZ_CLIENT_ID }} - az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }} - - - name: Update Azure Container Apps Revision - uses: azure/CLI@v1 - id: azure - with: - azcliversion: 2.45.0 - inlineScript: | - az config set extension.use_dynamic_install=yes_without_prompt - az containerapp update \ - --name ${{ secrets.AZ_ACA_NAME }} \ - --resource-group ${{ secrets.AZ_ACA_RESOURCE_GROUP }} \ - --image ${{ secrets.AZ_ACR_URL }}/${{ env.ACR_DOCKER_IMAGE }}:${{ inputs.branch }}-${{ inputs.checked-out-sha }}-${{ inputs.environment }} \ - --output none - &> /dev/null - - run-e2e-testing: - - runs-on: ubuntu-22.04 - name: Clear Database & Run E2E Tests on ${{ inputs.environment }} - if: ${{ inputs.environment == 'tst' || inputs.environment == 'staging' }} - environment: ${{ inputs.environment }} - needs: [set-env, upgrade-database, pull-image-from-gcr-and-publish-to-acr, deploy-image] - env: - az_keyvault_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }}-kv - az_keyvault_database_connectionstring_name: ${{ secrets.AZ_KEYVAULT_DATABASE_CONNECTIONSTRING_NAME }} - az_sql_database_server_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} - az_resource_group_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} - SQL_IP_NAME: e2e-tests-clear-db - - steps: + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + + - name: Azure CLI Login + uses: ./.github/actions/azure-login + with: + az_tenant_id: ${{ secrets.AZ_TENANT_ID }} + az_subscription_id: ${{ secrets.AZ_SUBSCRIPTION_ID }} + az_client_id: ${{ secrets.AZ_CLIENT_ID }} + az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }} + + - name: Build & Run Database Upgrader + uses: ./.github/actions/build-and-run-database-upgrader + with: + dotnet_version: ${{ vars.DOTNET_VERSION }} + az_keyvault_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }}-kv + az_keyvault_database_connectionstring_name: ${{ secrets.AZ_KEYVAULT_DATABASE_CONNECTIONSTRING_NAME }} + az_sql_database_server_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} + az_resource_group_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} + environment: ${{ inputs.environment }} + sql_analytics_username: ${{ secrets.ANALYTICS_USERNAME }} + sql_analytics_password: ${{ secrets.ANALYTICS_PASSWORD }} + + pull-image-from-gcr-and-publish-to-acr: + runs-on: ubuntu-22.04 + name: Pull Image From GitHub Container Registry and Publish to Azure Container Registry + environment: ${{ inputs.environment }} + needs: upgrade-database + + steps: + - name: GitHub Container Registry Login + uses: docker/login-action@v3 + with: + registry: ${{ env.GITHUB_CONTAINER_REGISTRY }} + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Pull Image From GCR + run: docker pull ${{ env.GITHUB_CONTAINER_REGISTRY }}/${{ env.ORG_NAME }}/${{ env.GCR_DOCKER_IMAGE }}:${{ inputs.branch }}-${{ inputs.checked-out-sha }} + + - name: Azure Container Registry Login + uses: docker/login-action@v3 + with: + registry: ${{ secrets.AZ_ACR_URL }} + username: ${{ secrets.AZ_CLIENT_ID }} + password: ${{ secrets.AZ_CLIENT_SECRET }} + + - name: Push Image To ACR + run: | + docker tag ${{ env.GITHUB_CONTAINER_REGISTRY }}/${{ env.ORG_NAME }}/${{ env.GCR_DOCKER_IMAGE }}:${{ inputs.branch }}-${{ inputs.checked-out-sha }} ${{ secrets.AZ_ACR_URL }}/${{ env.ACR_DOCKER_IMAGE }}:${{ inputs.branch }}-${{ inputs.checked-out-sha }}-${{ inputs.environment }} + docker push ${{ secrets.AZ_ACR_URL }}/${{ env.ACR_DOCKER_IMAGE }}:${{ inputs.branch }}-${{ inputs.checked-out-sha }}-${{ inputs.environment }} + + deploy-image: + runs-on: ubuntu-22.04 + name: Deploy Image To ${{ inputs.environment }} + environment: ${{ inputs.environment }} + needs: [upgrade-database, pull-image-from-gcr-and-publish-to-acr] + + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + + - name: Azure CLI Login + uses: ./.github/actions/azure-login + with: + az_tenant_id: ${{ secrets.AZ_TENANT_ID }} + az_subscription_id: ${{ secrets.AZ_SUBSCRIPTION_ID }} + az_client_id: ${{ secrets.AZ_CLIENT_ID }} + az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }} + - name: Update Azure Container Apps Revision + uses: azure/CLI@v1 + id: azure + with: + azcliversion: 2.45.0 + inlineScript: | + az config set extension.use_dynamic_install=yes_without_prompt + az containerapp update \ + --name ${{ secrets.AZ_ACA_NAME }} \ + --resource-group ${{ secrets.AZ_ACA_RESOURCE_GROUP }} \ + --image ${{ secrets.AZ_ACR_URL }}/${{ env.ACR_DOCKER_IMAGE }}:${{ inputs.branch }}-${{ inputs.checked-out-sha }}-${{ inputs.environment }} \ + --output none + &> /dev/null + + run-e2e-testing: + runs-on: ubuntu-22.04 + name: Clear Database & Run E2E Tests on ${{ inputs.environment }} + if: ${{ inputs.environment == 'tst' || inputs.environment == 'staging' }} + environment: ${{ inputs.environment }} + needs: + [upgrade-database, pull-image-from-gcr-and-publish-to-acr, deploy-image] + env: + az_keyvault_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }}-kv + az_keyvault_database_connectionstring_name: ${{ secrets.AZ_KEYVAULT_DATABASE_CONNECTIONSTRING_NAME }} + az_sql_database_server_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} + az_resource_group_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} + SQL_IP_NAME: e2e-tests-clear-db + + steps: - name: Checkout Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Azure CLI Login uses: ./.github/actions/azure-login @@ -197,7 +142,7 @@ jobs: az_subscription_id: ${{ secrets.AZ_SUBSCRIPTION_ID }} az_client_id: ${{ secrets.AZ_CLIENT_ID }} az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }} - + - name: Get Workflow IP Address id: what-is-my-ip uses: ./.github/actions/whats-my-ip-address @@ -232,7 +177,7 @@ jobs: dsi_url: ${{ secrets.DSI_URL }} dsi_username: ${{ secrets.DSI_USERNAME }} dsi_password: ${{ secrets.DSI_PASSWORD }} - + - name: Remove Azure Firewall Rules if: always() uses: ./.github/actions/azure-ip-whitelist @@ -242,4 +187,4 @@ jobs: az_keyvault_name: ${{ env.az_keyvault_name }} az_ip_name: ${{ env.SQL_IP_NAME }} az_resource_group: ${{ env.az_resource_group_name}} - az_sql_database_server_name: ${{ env.az_sql_database_server_name }} \ No newline at end of file + az_sql_database_server_name: ${{ env.az_sql_database_server_name }} diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 7263f7814..be5998bfd 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -28,7 +28,7 @@ jobs: SQL_IP_NAME: e2e-tests-clear-db steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Login with AZ uses: ./.github/actions/azure-login @@ -88,7 +88,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Azure CLI Login uses: ./.github/actions/azure-login @@ -99,7 +99,7 @@ jobs: az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }} - name: Setup .NET - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: dotnet-version: ${{ env.DOTNET_VERSION }} diff --git a/.github/workflows/matrix-deploy-azure-function.yml b/.github/workflows/matrix-deploy-azure-function.yml new file mode 100644 index 000000000..8b21d19db --- /dev/null +++ b/.github/workflows/matrix-deploy-azure-function.yml @@ -0,0 +1,76 @@ +name: Multi-Stage Build & Deploy (Azure Function) + +on: + workflow_dispatch: + push: + branches: ["main", "development"] + paths: + - "src/Dfe.PlanTech.AzureFunctions/**" + - ".github/workflows/matrix-deploy-azure-function.yml" + - ".github/workflows/build-azure-function.yml" + - ".github/workflows/deploy-azure-function.yml" + +jobs: + set-env: + runs-on: ubuntu-22.04 + name: Set Environment (Matrix Deploy Azure Function) + outputs: + branch: ${{ steps.var.outputs.branch }} + artifact: ${{ steps.var.outputs.artifact }} + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + - id: var + run: | + GIT_BRANCH=${GITHUB_BASE_REF:-${GITHUB_REF#refs/heads/}} + ARTIFACT=Dfe-PlanTech-AzureFunction + echo "branch=$GIT_BRANCH" >> $GITHUB_OUTPUT + echo "artifact=$ARTIFACT" >> $GITHUB_OUTPUT + + build-azure-function: + needs: set-env + name: Build Azure Function + uses: ./.github/workflows/build-azure-function.yml + with: + artifact: ${{ needs.set-env.outputs.artifact }} + + deploy-azure-function-for-dev-test: + needs: [set-env, build-azure-function] + name: Deploy Azure Function + strategy: + fail-fast: true + max-parallel: 2 + matrix: + target: [Dev, Tst] + uses: ./.github/workflows/deploy-azure-function.yml + with: + environment: ${{ matrix.target }} + artifact: ${{ needs.set-env.outputs.artifact }} + secrets: inherit + + deploy-azure-function-for-staging: + needs: [set-env, build-azure-function, deploy-azure-function-for-dev-test] + name: Deploy Azure Function (Staging) + if: ${{ needs.set-env.outputs.branch == 'main' }} + uses: ./.github/workflows/deploy-azure-function.yml + with: + environment: Staging + artifact: ${{ needs.set-env.outputs.artifact }} + secrets: inherit + + deploy-azure-function-for-production: + needs: + [ + set-env, + build-azure-function, + deploy-azure-function-for-dev-test, + deploy-azure-function-for-staging, + ] + name: Deploy Azure Function (Production) + if: ${{ needs.set-env.outputs.branch == 'main' }} + uses: ./.github/workflows/deploy-azure-function.yml + with: + environment: Production + artifact: ${{ needs.set-env.outputs.artifact }} + secrets: inherit diff --git a/.github/workflows/matrix-deploy.yml b/.github/workflows/matrix-deploy.yml index abc92075e..aabc172d1 100644 --- a/.github/workflows/matrix-deploy.yml +++ b/.github/workflows/matrix-deploy.yml @@ -16,7 +16,7 @@ jobs: branch: ${{ steps.var.outputs.branch }} checked-out-sha: ${{ steps.var.outputs.checked-out-sha }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: ${{ github.ref }} @@ -36,17 +36,10 @@ jobs: branch: ${{ needs.set-env.outputs.branch }} checked-out-sha: ${{ needs.set-env.outputs.checked-out-sha }} - build-and-deploy-azure-function-for-dev-test: - needs: set-env - name: Build & Deploy Azure Function - strategy: - fail-fast: true - max-parallel: 1 - matrix: - target: [Dev, Tst] - uses: ./.github/workflows/build-and-deploy-azure-function.yml - with: - environment: ${{ matrix.target }} + create-and-tag-release: + needs: [set-env, create-and-publish-image] + name: Create & Tag Release + uses: ./.github/workflows/create-tag-release.yml secrets: inherit check-for-terraform-changes: @@ -57,7 +50,7 @@ jobs: run_terraform_deploy: ${{ steps.terraform_changes.outputs.run_terraform_deploy }} steps: - name: Checkout Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.ref }} fetch-depth: 2 @@ -108,16 +101,16 @@ jobs: checked-out-sha: ${{ needs.set-env.outputs.checked-out-sha }} secrets: inherit - build-and-deploy-azure-function-for-staging: + generate-subtopic-visualisations: needs: [set-env, deploy-to-dev-and-test] - name: Build & Deploy Azure Function + name: Run the visualisation workflow again staging content. if: ${{ needs.set-env.outputs.branch == 'main' }} strategy: - fail-fast: true max-parallel: 1 + fail-fast: true matrix: target: [Staging] - uses: ./.github/workflows/build-and-deploy-azure-function.yml + uses: ./.github/workflows/qa-viz.yml with: environment: ${{ matrix.target }} secrets: inherit @@ -152,20 +145,6 @@ jobs: checked-out-sha: ${{ needs.set-env.outputs.checked-out-sha }} secrets: inherit - build-and-deploy-azure-function-for-production: - needs: [set-env, deploy-to-dev-and-test, deploy-to-staging] - name: Build & Deploy Azure Function - if: ${{ needs.set-env.outputs.branch == 'main' }} - strategy: - fail-fast: true - max-parallel: 1 - matrix: - target: [Production] - uses: ./.github/workflows/build-and-deploy-azure-function.yml - with: - environment: ${{ matrix.target }} - secrets: inherit - plan-terraform-for-production: needs: [ diff --git a/.github/workflows/qa-viz.yml b/.github/workflows/qa-viz.yml new file mode 100644 index 000000000..5e6b039f5 --- /dev/null +++ b/.github/workflows/qa-viz.yml @@ -0,0 +1,104 @@ +name: QA Visualisation Workflow + + +on: + workflow_dispatch: + inputs: + environment: + description: Environment to run the visualisation for + required: true + options: ['Dev', 'Tst', 'Staging'] + workflow_call: + inputs: + environment: + type: string + required: true + +jobs: + generate_images: + runs-on: ubuntu-latest + env: + az_keyvault_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }}-kv + az_resource_group_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} + az_sql_database_server_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }} + SQL_IP_NAME: qa-viz + environment: ${{ inputs.environment || 'Staging' }} + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Login with AZ + uses: ./.github/actions/azure-login + with: + az_tenant_id: ${{ secrets.AZ_TENANT_ID }} + az_subscription_id: ${{ secrets.AZ_SUBSCRIPTION_ID }} + az_client_id: ${{ secrets.AZ_CLIENT_ID }} + az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }} + + - name: Get workflow IP address + id: whats-my-ip + uses: ./.github/actions/whats-my-ip-address + + - name: Add Azure firewall rules + uses: ./.github/actions/azure-ip-whitelist + with: + ip_address: ${{ steps.whats-my-ip.outputs.ip }} + verb: "add" + az_keyvault_name: ${{ env.az_keyvault_name }} + az_ip_name: ${{ env.SQL_IP_NAME }} + az_resource_group: ${{ env.az_resource_group_name}} + az_sql_database_server_name: ${{ env.az_sql_database_server_name }} + + - name: Install Graphviz + run: sudo apt-get install graphviz -y + + - name: Install Microsoft ODBC + run: sudo ACCEPT_EULA=Y apt-get install msodbcsql17 -y + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: 3.9 + + - name: Install pyodbc + run: pip install pyodbc + + - name: Install graphviz + run: pip install graphviz + + - name: Install azure identity + run: pip install azure-identity + + - name: Run data script + run: python ./.github/scripts/qa-data.py + env: + SQL_CONNECTION_STRING: "Driver={ODBC Driver 17 for SQL Server};Server=tcp:${{ env.az_sql_database_server_name }}.database.windows.net,1433;Database=${{ env.az_sql_database_server_name }}-sqldb;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30" + + - name: List data files + run: ls -l ./data + + - name: Remove Azure firewall rules + if: always() + uses: ./.github/actions/azure-ip-whitelist + with: + ip_address: ${{ steps.whats-my-ip.outputs.ip }} + verb: "remove" + az_keyvault_name: ${{ env.az_keyvault_name }} + az_ip_name: ${{ env.SQL_IP_NAME }} + az_resource_group: ${{ env.az_resource_group_name}} + az_sql_database_server_name: ${{ env.az_sql_database_server_name }} + + - name: Run Visaulisation Script + run: python ./.github/scripts/qa-visualisations.py + + - name: Upload image + id: artifact-upload-step + uses: actions/upload-artifact@v4 + with: + name: qa-visualisations + path: ./visualisations + + - name: Call Teams Webhook + run: | + curl -X POST -H 'Content-Type: application/json' -d '{"text": "New Visualisations Available for ${{ inputs.environment }} : https://github.com/DFE-Digital/plan-technology-for-your-school/actions/runs/${{ github.run_id }}/artifacts/${{ steps.artifact-upload-step.outputs.artifact-id }}"}' ${{ secrets.PLANTECH_TEAMS_WEBHOOK }} + diff --git a/.github/workflows/terraform-deploy.yml b/.github/workflows/terraform-deploy.yml index a7f8ca6cd..fb8d6fa02 100644 --- a/.github/workflows/terraform-deploy.yml +++ b/.github/workflows/terraform-deploy.yml @@ -5,14 +5,14 @@ on: inputs: environment: type: string - description: 'The environment to deploy to:' + description: "The environment to deploy to:" required: true workflow_call: inputs: environment: type: string required: true - + env: DOTNET_VERSION: ${{ vars.DOTNET_VERSION }} @@ -22,7 +22,7 @@ env: ARM_CLIENT_SECRET: ${{ secrets.AZ_CLIENT_SECRET }} AZ_KEYVAULT_NAME: ${{ secrets.AZ_ACA_RESOURCE_GROUP }}-kv - + TF_BACKEND_STORAGE_ACCOUNT_NAME: ${{ secrets.TF_BACKEND_STORAGE_ACCOUNT_NAME }} TF_BACKEND_CONTAINER_NAME: ${{ secrets.TF_BACKEND_CONTAINER_NAME }} TF_BACKEND_KEY: ${{ secrets.TF_BACKEND_KEY }} @@ -47,19 +47,19 @@ env: TF_WORKING_DIRECTORY: terraform/container-app jobs: - deploy-terraform: - name: Deploy Terraform + deploy-terraform: + name: Deploy Terraform runs-on: ubuntu-22.04 defaults: run: working-directory: ${{env.TF_WORKING_DIRECTORY}} - environment: ${{ github.event.inputs.environment }} + environment: ${{ github.event.inputs.environment }} steps: - name: Clone repo - uses: actions/checkout@v3 - + uses: actions/checkout@v4 + - name: Setup Terraform - uses: hashicorp/setup-terraform@v2 + uses: hashicorp/setup-terraform@v3 with: terraform_version: 1.6.2 @@ -95,15 +95,15 @@ jobs: -backend-config="storage_account_name=${{ env.TF_BACKEND_STORAGE_ACCOUNT_NAME }}" \ -backend-config="container_name=${{ env.TF_BACKEND_CONTAINER_NAME }}" \ -backend-config="key=${{ env.TF_BACKEND_KEY }}" - + - name: Apply Terraform changes id: apply run: terraform apply -auto-approve - + - name: Remove Runner to KV whitelist uses: azure/CLI@v1 if: always() with: azcliversion: 2.45.0 inlineScript: | - az keyvault network-rule remove --name ${{ env.AZ_KEYVAULT_NAME }} --ip-address ${{ steps.whats-my-ip.outputs.ip }} &> /dev/null \ No newline at end of file + az keyvault network-rule remove --name ${{ env.AZ_KEYVAULT_NAME }} --ip-address ${{ steps.whats-my-ip.outputs.ip }} &> /dev/null diff --git a/.github/workflows/terraform-dns.yml b/.github/workflows/terraform-dns.yml index 37dc9895a..88de7413e 100644 --- a/.github/workflows/terraform-dns.yml +++ b/.github/workflows/terraform-dns.yml @@ -5,22 +5,22 @@ on: inputs: environment: type: string - description: 'The environment to run terraform plan against:' + description: "The environment to run terraform plan against:" required: true workflow_call: inputs: environment: type: string required: true - -env: + +env: ARM_TENANT_ID: ${{ secrets.AZ_TENANT_ID }} ARM_SUBSCRIPTION_ID: ${{ secrets.AZ_SUBSCRIPTION_ID }} ARM_CLIENT_ID: ${{ secrets.AZ_CLIENT_ID }} ARM_CLIENT_SECRET: ${{ secrets.AZ_CLIENT_SECRET }} AZ_KEYVAULT_NAME: ${{ secrets.AZ_ACA_RESOURCE_GROUP }}-kv - + TF_BACKEND_STORAGE_ACCOUNT_NAME: ${{ secrets.TF_BACKEND_STORAGE_ACCOUNT_NAME }} TF_BACKEND_CONTAINER_NAME: ${{ secrets.TF_BACKEND_CONTAINER_NAME }} TF_BACKEND_KEY: "terraform-dns.tfstate" @@ -30,7 +30,7 @@ env: TF_VAR_environment: ${{ secrets.AZ_ENVIRONMENT }} TF_VAR_azure_location: ${{ vars.AZ_LOCATION }} TF_VAR_primary_fqdn: "plan-technology-for-your-school.education.gov.uk" - TF_VAR_subdomains: ["staging"] + TF_VAR_subdomains: "staging" TF_WORKING_DIRECTORY: terraform/dns-zone @@ -44,10 +44,10 @@ jobs: environment: ${{ inputs.environment }} steps: - name: Clone repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Terraform - uses: hashicorp/setup-terraform@v2 + uses: hashicorp/setup-terraform@v3 with: terraform_version: 1.6.2 @@ -94,4 +94,4 @@ jobs: with: azcliversion: 2.45.0 inlineScript: | - az keyvault network-rule remove --name ${{ env.AZ_KEYVAULT_NAME }} --ip-address ${{ steps.whats-my-ip.outputs.ip }} &> /dev/null \ No newline at end of file + az keyvault network-rule remove --name ${{ env.AZ_KEYVAULT_NAME }} --ip-address ${{ steps.whats-my-ip.outputs.ip }} &> /dev/null diff --git a/.github/workflows/terraform-plan.yml b/.github/workflows/terraform-plan.yml index b52fbc3fa..72f7ad627 100644 --- a/.github/workflows/terraform-plan.yml +++ b/.github/workflows/terraform-plan.yml @@ -5,14 +5,14 @@ on: inputs: environment: type: string - description: 'The environment to run terraform plan against:' + description: "The environment to run terraform plan against:" required: true workflow_call: inputs: environment: type: string required: true - + env: DOTNET_VERSION: ${{ vars.DOTNET_VERSION }} @@ -22,7 +22,7 @@ env: ARM_CLIENT_SECRET: ${{ secrets.AZ_CLIENT_SECRET }} AZ_KEYVAULT_NAME: ${{ secrets.AZ_ACA_RESOURCE_GROUP }}-kv - + TF_BACKEND_STORAGE_ACCOUNT_NAME: ${{ secrets.TF_BACKEND_STORAGE_ACCOUNT_NAME }} TF_BACKEND_CONTAINER_NAME: ${{ secrets.TF_BACKEND_CONTAINER_NAME }} TF_BACKEND_KEY: ${{ secrets.TF_BACKEND_KEY }} @@ -56,10 +56,10 @@ jobs: environment: ${{ inputs.environment }} steps: - name: Clone repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Terraform - uses: hashicorp/setup-terraform@v2 + uses: hashicorp/setup-terraform@v3 with: terraform_version: 1.6.2 @@ -106,4 +106,4 @@ jobs: with: azcliversion: 2.45.0 inlineScript: | - az keyvault network-rule remove --name ${{ env.AZ_KEYVAULT_NAME }} --ip-address ${{ steps.whats-my-ip.outputs.ip }} &> /dev/null \ No newline at end of file + az keyvault network-rule remove --name ${{ env.AZ_KEYVAULT_NAME }} --ip-address ${{ steps.whats-my-ip.outputs.ip }} &> /dev/null diff --git a/.github/workflows/terraform-pr-check.yml b/.github/workflows/terraform-pr-check.yml index e6698e88f..e56254a2c 100644 --- a/.github/workflows/terraform-pr-check.yml +++ b/.github/workflows/terraform-pr-check.yml @@ -2,18 +2,18 @@ name: Terraform PR Check on: pull_request: - paths: - - 'terraform/**' - - '.github/workflows/terraform-pr-check.yml' + paths: + - "terraform/**" + - ".github/workflows/terraform-pr-check.yml" push: - branches: [ "main" ] - paths: - - 'terraform/**' - + branches: ["main"] + paths: + - "terraform/**" + concurrency: - group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' + group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}" cancel-in-progress: true - + env: DOTNET_VERSION: ${{ vars.DOTNET_VERSION }} @@ -23,7 +23,7 @@ env: ARM_CLIENT_SECRET: ${{ secrets.AZ_CLIENT_SECRET }} AZ_KEYVAULT_NAME: ${{ secrets.AZ_ACA_RESOURCE_GROUP }}-kv - + TF_BACKEND_STORAGE_ACCOUNT_NAME: ${{ secrets.TF_BACKEND_STORAGE_ACCOUNT_NAME }} TF_BACKEND_CONTAINER_NAME: ${{ secrets.TF_BACKEND_CONTAINER_NAME }} TF_BACKEND_KEY: ${{ secrets.TF_BACKEND_KEY }} @@ -39,28 +39,28 @@ env: TF_VAR_az_sql_azuread_admin_username: ${{ secrets.AZ_SERVICE_PRINCIPAL }} TF_VAR_az_sql_admin_password: ${{secrets.AZ_SQL_ADMIN_PASSWORD}} TF_VAR_az_sql_azuread_admin_objectid: ${{ secrets.AZ_CLIENT_ID }} - TF_VAR_registry_server: "ghcr.io" - TF_VAR_registry_username: ${{ github.repository_owner }} + TF_VAR_registry_server: "ghcr.io" + TF_VAR_registry_username: ${{ github.repository_owner }} TF_VAR_registry_custom_image_url: "ghcr.io/dfe-digital/plan-technology-for-your-school:latest" TF_VAR_registry_password: ${{ secrets.GITHUB_TOKEN }} TF_WORKING_DIRECTORY: terraform/container-app jobs: - validate-terraform: - name: Validate Terraform + validate-terraform: + name: Validate Terraform runs-on: ubuntu-22.04 defaults: run: working-directory: ${{env.TF_WORKING_DIRECTORY}} steps: - name: Clone repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.ref }} - + - name: Setup Terraform - uses: hashicorp/setup-terraform@v2 + uses: hashicorp/setup-terraform@v3 with: terraform_version: 1.6.2 @@ -87,7 +87,7 @@ jobs: azcliversion: 2.45.0 inlineScript: | az keyvault network-rule add --name ${{ env.AZ_KEYVAULT_NAME }} --ip-address ${{ steps.whats-my-ip.outputs.ip }} &> /dev/null - + - name: Terraform init id: init run: | @@ -101,14 +101,14 @@ jobs: id: validate run: terraform validate -no-color -compact-warnings - - name: Terraform plan + - name: Terraform plan id: plan run: terraform plan -no-color - name: Terraform fmt id: fmt run: terraform fmt -check -diff - + - name: Validate Terraform docs uses: terraform-docs/gh-actions@v1.0.0 with: @@ -118,7 +118,7 @@ jobs: output-method: inject git-push: "true" - - name: Update PR with Terraform results + - name: Update PR with Terraform results uses: ./.github/actions/post-terraform-results if: github.event_name == 'pull_request' with: @@ -133,7 +133,7 @@ jobs: github_event_name: ${{ github.event_name }} tf_working_directory: ${{ env.TF_WORKING_DIRECTORY }} github_workflow: ${{ github.workflow }} - + - name: Remove Runner to KV whitelist uses: azure/CLI@v1 if: always() @@ -141,7 +141,7 @@ jobs: azcliversion: 2.45.0 inlineScript: | az keyvault network-rule remove --name ${{ env.AZ_KEYVAULT_NAME }} --ip-address ${{ steps.whats-my-ip.outputs.ip }} &> /dev/null - + terraform-lint: name: Terraform Lint runs-on: ubuntu-22.04 @@ -150,10 +150,10 @@ jobs: working-directory: ${{ env.TF_WORKING_DIRECTORY }} steps: - name: Clone repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup TFLint - uses: terraform-linters/setup-tflint@v3 + uses: terraform-linters/setup-tflint@v4 with: tflint_version: v0.44.1 @@ -165,9 +165,9 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Clone repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: tfsec uses: aquasecurity/tfsec-pr-commenter-action@v1.2.0 with: - github_token: ${{ github.token }} \ No newline at end of file + github_token: ${{ github.token }} diff --git a/.github/workflows/validate-scripts.yml b/.github/workflows/validate-scripts.yml index 0a7fef0b7..36d288c0e 100644 --- a/.github/workflows/validate-scripts.yml +++ b/.github/workflows/validate-scripts.yml @@ -1,86 +1,81 @@ name: Validate SQL Scripts on: - workflow_dispatch: - push: - branches: ["main", "development"] - paths: - - 'src/Dfe.PlanTech.DatabaseUpgrader/**' - - '.github/scripts/**' - - '.github/workflows/validate-scripts.yml' - pull_request: - branches: ["main", "development"] - paths: - - 'src/Dfe.PlanTech.DatabaseUpgrader/**' - - '.github/scripts/**' - - '.github/workflows/validate-scripts.yml' + workflow_dispatch: + push: + branches: ["main", "development"] + paths: + - "src/Dfe.PlanTech.DatabaseUpgrader/**" + - ".github/scripts/**" + - ".github/workflows/validate-scripts.yml" + pull_request: + branches: ["main", "development"] + paths: + - "src/Dfe.PlanTech.DatabaseUpgrader/**" + - ".github/scripts/**" + - ".github/workflows/validate-scripts.yml" concurrency: - group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' - cancel-in-progress: true + group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}" + cancel-in-progress: true jobs: - - validate-sql-scripts: - - name: Validate SQL Scripts - runs-on: ubuntu-22.04 - env: - FAKE_USERNAME: "sa" # NB. This is OK to be plaintext as it's a made-up credential to give the locally hosted DB a "user" - FAKE_PASSWORD: "LWgqx62jIO2sRek8" # NB. See Above - - steps: - - - name: Checkout Repository - uses: actions/checkout@v3 - - - name: Build Database Upgrader - uses: ./.github/actions/build-dotnet-app - with: - dotnet_version: ${{ vars.DOTNET_VERSION }} - solution_filename: Dfe.PlanTech.DatabaseUpgrader.sln - - - name: Get DB Connection String - id: connection-string - run: | - CONNECTION_STRING="Server=tcp:localhost,1433;Initial Catalog=master;Persist Security Info=False;User ID=${{ env.FAKE_USERNAME }};Password=${{ env.FAKE_PASSWORD }};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=True;Connection Timeout=30;" - echo "CONNECTION_STRING=$CONNECTION_STRING" >> $GITHUB_OUTPUT - - - name: Pull Azure SQL Edge Docker Image - shell: bash - run: docker pull mcr.microsoft.com/azure-sql-edge:latest - - - name: Start Azure SQL Edge Instance - shell: bash - run: docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=${{ env.FAKE_PASSWORD }}' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge - - - name: Wait for Docker Image to Startup - shell: bash - run: sleep 16s - - - name: Run Database Upgrader - shell: bash - run: dotnet ./build/Dfe.PlanTech.DatabaseUpgrader.dll -c "${{ steps.connection-string.outputs.CONNECTION_STRING }}" - - quality-check: - - name: Run SQL Code Quality Check - runs-on: ubuntu-22.04 - if: ${{ github.event_name == 'pull_request' }} - - steps: - - - name: Checkout Repository - uses: actions/checkout@v3 - - - name: Run SQLCheck - uses: yokawasa/action-sqlcheck@v1.5.0 - with: - post-comment: true - token: ${{ secrets.GITHUB_TOKEN }} - postfixes: | - sql - directories: | - ./src/Dfe.PlanTech.DatabaseUpgrader/Scripts - ./src/Dfe.PlanTech.DatabaseUpgrader/EnvironmentSpecificScripts - ./.github/scripts \ No newline at end of file + validate-sql-scripts: + name: Validate SQL Scripts + runs-on: ubuntu-22.04 + env: + FAKE_USERNAME: "sa" # NB. This is OK to be plaintext as it's a made-up credential to give the locally hosted DB a "user" + FAKE_PASSWORD: "LWgqx62jIO2sRek8" # NB. See Above + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Build Database Upgrader + uses: ./.github/actions/build-dotnet-app + with: + dotnet_version: ${{ vars.DOTNET_VERSION }} + solution_filename: Dfe.PlanTech.DatabaseUpgrader.sln + + - name: Get DB Connection String + id: connection-string + run: | + CONNECTION_STRING="Server=tcp:localhost,1433;Initial Catalog=master;Persist Security Info=False;User ID=${{ env.FAKE_USERNAME }};Password=${{ env.FAKE_PASSWORD }};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=True;Connection Timeout=30;" + echo "CONNECTION_STRING=$CONNECTION_STRING" >> $GITHUB_OUTPUT + + - name: Pull Azure SQL Edge Docker Image + shell: bash + run: docker pull mcr.microsoft.com/azure-sql-edge:latest + + - name: Start Azure SQL Edge Instance + shell: bash + run: docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=${{ env.FAKE_PASSWORD }}' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge + + - name: Wait for Docker Image to Startup + shell: bash + run: sleep 16s + + - name: Run Database Upgrader + shell: bash + run: dotnet ./build/Dfe.PlanTech.DatabaseUpgrader.dll -c "${{ steps.connection-string.outputs.CONNECTION_STRING }}" + + quality-check: + name: Run SQL Code Quality Check + runs-on: ubuntu-22.04 + if: ${{ github.event_name == 'pull_request' }} + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Run SQLCheck + uses: yokawasa/action-sqlcheck@v1.5.0 + with: + post-comment: true + token: ${{ secrets.GITHUB_TOKEN }} + postfixes: | + sql + directories: | + ./src/Dfe.PlanTech.DatabaseUpgrader/Scripts + ./src/Dfe.PlanTech.DatabaseUpgrader/EnvironmentSpecificScripts + ./.github/scripts diff --git a/.releaserc.json b/.releaserc.json new file mode 100644 index 000000000..ebcaff0d5 --- /dev/null +++ b/.releaserc.json @@ -0,0 +1,16 @@ +{ + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + [ + "@semantic-release/github", + { + "successComment": false + } + ] + ], + "branches": [ + { "name": "main" }, + { "name": "development", "prerelease": true } + ] +} diff --git a/contentful/export-processor/.gitignore b/contentful/export-processor/.gitignore new file mode 100644 index 000000000..d76903322 --- /dev/null +++ b/contentful/export-processor/.gitignore @@ -0,0 +1,2 @@ +output/*.json +*.json \ No newline at end of file diff --git a/contentful/export-processor/README.md b/contentful/export-processor/README.md new file mode 100644 index 000000000..d494a8d98 --- /dev/null +++ b/contentful/export-processor/README.md @@ -0,0 +1,5 @@ +# Contentful Export Processing + +Classes/functions/etc to process exported Contentful entries for various purposes. + +[Test Suite Generator](./user-journey/README.md) diff --git a/contentful/user-journey-info-scripts/answer.mjs b/contentful/export-processor/content-types/answer.js similarity index 100% rename from contentful/user-journey-info-scripts/answer.mjs rename to contentful/export-processor/content-types/answer.js diff --git a/contentful/export-processor/content-types/content-type.js b/contentful/export-processor/content-types/content-type.js new file mode 100644 index 000000000..04b44b4bd --- /dev/null +++ b/contentful/export-processor/content-types/content-type.js @@ -0,0 +1,36 @@ +class ContentType { + id; + fields; + + constructor({ sys, fields }) { + this.id = sys.id; + this.fields = {}; + + for (const field of fields) { + this.fields[field.id] = field; + } + } + + getReferencedTypesForField(field) { + const matching = this.fields[field]; + + if (!matching) throw `Couldn't find ${field} in ${this.fields}`; + + if (matching.type !== "Array" && matching.type !== "Link") return; + + const validations = + matching.type == "Array" + ? matching.items.validations + : matching.validations; + + if (!validations) return false; + + const linkContentType = validations + .filter((validation) => validation.linkContentType) + .map((validation) => validation.linkContentType)[0]; + + return linkContentType.length == 0 ? undefined : linkContentType; + } +} + +export default ContentType; diff --git a/contentful/export-processor/content-types/content-types.js b/contentful/export-processor/content-types/content-types.js new file mode 100644 index 000000000..63aa67cf8 --- /dev/null +++ b/contentful/export-processor/content-types/content-types.js @@ -0,0 +1,11 @@ +import { Answer } from "./answer"; +import ContentType from "./content-type"; +import { Question } from "./question"; +import { Recommendation } from "./recommendation"; +import { Section } from "./section"; + +const exportObj = { + ContentTypes: [Answer, ContentType, Question, Recommendation, Section], +}; + +export default exportObj; diff --git a/contentful/user-journey-info-scripts/question.mjs b/contentful/export-processor/content-types/question.js similarity index 74% rename from contentful/user-journey-info-scripts/question.mjs rename to contentful/export-processor/content-types/question.js index 5ae097642..49ed6437f 100644 --- a/contentful/user-journey-info-scripts/question.mjs +++ b/contentful/export-processor/content-types/question.js @@ -1,14 +1,16 @@ -import { Answer } from "./answer.mjs"; +import { Answer } from "./answer.js"; export class Question { answers; text; + helpText; slug; id; constructor({ fields, sys }) { this.answers = fields.answers.map((answer) => new Answer(answer)); this.text = fields.text; + this.helpText = fields.helpText; this.slug = fields.slug; this.id = sys.id; } diff --git a/contentful/user-journey-info-scripts/recommendation.mjs b/contentful/export-processor/content-types/recommendation.js similarity index 78% rename from contentful/user-journey-info-scripts/recommendation.mjs rename to contentful/export-processor/content-types/recommendation.js index e0d2c200a..366d40b40 100644 --- a/contentful/user-journey-info-scripts/recommendation.mjs +++ b/contentful/export-processor/content-types/recommendation.js @@ -11,6 +11,11 @@ export class Recommendation { this.displayName = fields.displayName; this.id = sys.id; this.page = fields.page; + + if (!fields.page?.fields?.slug) { + console.error(this); + return; + } this.slug = fields.page?.fields.slug; } } diff --git a/contentful/user-journey-info-scripts/section.mjs b/contentful/export-processor/content-types/section.js similarity index 97% rename from contentful/user-journey-info-scripts/section.mjs rename to contentful/export-processor/content-types/section.js index 5e78eeb4e..b813d66e1 100644 --- a/contentful/user-journey-info-scripts/section.mjs +++ b/contentful/export-processor/content-types/section.js @@ -1,12 +1,13 @@ -import fs from "fs"; -import { Recommendation } from "./recommendation.mjs"; -import { Question } from "./question.mjs"; -import { UserJourney } from "./user-journey.mjs"; +import { Recommendation } from "./recommendation"; +import { Question } from "./question"; +import { UserJourney } from "../user-journey/user-journey"; export class Section { recommendations; questions; name; + interstitialPage; + id; paths; @@ -18,6 +19,7 @@ export class Section { (recommendation) => new Recommendation(recommendation) ); + this.interstitialPage = fields.interstitialPage; this.questions = fields.questions.map((question) => new Question(question)); this.id = sys.id; this.name = fields.name; diff --git a/contentful/user-journey-info-scripts/data-mapper.mjs b/contentful/export-processor/data-mapper.js similarity index 57% rename from contentful/user-journey-info-scripts/data-mapper.mjs rename to contentful/export-processor/data-mapper.js index df2ab42f7..59a5a5a47 100644 --- a/contentful/user-journey-info-scripts/data-mapper.mjs +++ b/contentful/export-processor/data-mapper.js @@ -1,54 +1,58 @@ -import { Section } from "./section.mjs"; -import fs from "fs"; +import { Section } from "./content-types/section"; +import ContentType from "./content-types/content-type"; /** * DataMapper class for mapping and combining data from a file */ export default class DataMapper { // Maps for different content types - answers = new Map(); - pages = new Map(); - questions = new Map(); - recommendations = new Map(); - sections = new Map(); - - // Map of content type to corresponding Map - contentTypeMappings = { - answer: this.answers, - page: this.pages, - question: this.questions, - recommendationPage: this.recommendations, - section: this.sections, - }; + contents = new Map(); + contentTypes = new Map(); + + _alreadyMappedSections; /** * Get the mapped sections * @returns {IterableIterator
} Iterator for mapped sections */ get mappedSections() { - return this.sectionsToClasses(this.sections); + if (!this._alreadyMappedSections) + this._alreadyMappedSections = Array.from( + this.sectionsToClasses(this.contents["section"]) + ); + + return this._alreadyMappedSections; + } + + get pages() { + return this.contents["page"]; } /** * Constructor for DataMapper * @param {string} filePath - Path to the file to map data from */ - constructor(filePath) { - this.mapData(filePath); + constructor({ entries, contentTypes }) { + this.mapData(entries, contentTypes); } /** * Map data from the provided file * @param {string} filePath - Path to the file to map data from */ - mapData(filePath) { - const fileContents = fs.readFileSync(filePath, "utf-8"); - const jsonObject = JSON.parse(fileContents); - - this.mapEntries(jsonObject.entries); + mapData(entries, contentTypes) { + this.mapContentTypes(contentTypes); + this.mapEntries(entries); this.combineEntries(); } + mapContentTypes(contentTypes) { + for (const contentType of contentTypes) { + const mapped = new ContentType(contentType); + this.contentTypes.set(mapped.id, mapped); + } + } + /** * Map entries from the provided data * @param {Array} entries - Array of entries to map @@ -68,15 +72,26 @@ export default class DataMapper { const contentType = entry.sys.contentType.sys.id; // Get the set for the content type - const setForContentType = this.contentTypeMappings[contentType]; - if (!setForContentType) return; - + const setForContentType = this.getContentTypeSet(contentType); // Add the entry to the set const id = entry.sys.id; + this.stripLocalisationFromAllFields(entry); + setForContentType.set(id, entry); } + getContentTypeSet(contentType) { + let setForContentType = this.contents[contentType]; + + if (!setForContentType) { + setForContentType = new Map(); + this.contents[contentType] = setForContentType; + } + + return setForContentType; + } + /** * Strip localisation from all fields of an entry * @param {object} entry - Entry to strip localisation from @@ -95,6 +110,10 @@ export default class DataMapper { * @returns {IterableIterator
} Iterator for mapped sections */ *sectionsToClasses(sections) { + if (!sections || sections.length == 0) { + return; + } + for (const [id, section] of sections) { yield new Section(section); } @@ -140,30 +159,61 @@ export default class DataMapper { * Combine entries for all tracked content types (i.e. answers, pages, questions, recommendations, sections) */ combineEntries() { - for (const [id, recommendation] of this.recommendations) { - recommendation.fields.page = this.pages.get( - recommendation.fields.page.sys.id - ); + for (const [contentTypeId, contents] of Object.entries(this.contents)) { + const contentType = this.contentTypes.get(contentTypeId); + + for (const [id, entry] of contents) { + this.mapRelationshipsForEntry(entry, contentType); + } } + } - for (const [id, question] of this.questions) { - question.fields.answers = this.copyRelationships( - question.fields.answers, - this.answers - ); + mapRelationshipsForEntry(entry, contentType) { + Object.entries(entry.fields).forEach(([key, value]) => { + const referencedTypesForField = + contentType.getReferencedTypesForField(key); + + if (!referencedTypesForField) return; + + if (Array.isArray(value)) { + entry.fields[key] = value.map((item) => + this.getMatchingContentForReference(referencedTypesForField, item) + ); + } else { + entry.fields[key] = this.getMatchingContentForReference( + referencedTypesForField, + value + ); + } + }); + } + + getContentForFieldId(referencedTypesForField, id) { + const matchingItem = referencedTypesForField + .map((type) => { + const matchingContents = this.contents[type]; + const matchingContent = matchingContents.get(id); + + return matchingContent; + }) + .find((matching) => matching != null); + + if (!matchingItem) { + console.error(`Error finding ${id} for ${referencedTypesForField}`); } - for (const [id, section] of this.sections) { - section.fields.questions = this.copyRelationships( - section.fields.questions, - this.questions - ); + return matchingItem; + } - section.fields.recommendations = this.copyRelationships( - section.fields.recommendations, - this.recommendations - ); + getMatchingContentForReference(referencedTypesForField, reference) { + const referenceId = reference["sys"]?.["id"]; + + if (!referenceId) { + console.log("no reference", reference); + return; } + + return this.getContentForFieldId(referencedTypesForField, referenceId); } /** diff --git a/contentful/export-processor/index.js b/contentful/export-processor/index.js new file mode 100644 index 000000000..240cfa02b --- /dev/null +++ b/contentful/export-processor/index.js @@ -0,0 +1,6 @@ +import DataMapper from "./data-mapper"; +import ContentTypes from "./content-types/content-types"; + +const exportObj = { DataMapper, ...ContentTypes }; + +export default exportObj; diff --git a/contentful/user-journey-info-scripts/README.md b/contentful/export-processor/user-journey/README.md similarity index 100% rename from contentful/user-journey-info-scripts/README.md rename to contentful/export-processor/user-journey/README.md diff --git a/contentful/user-journey-info-scripts/question-answer.mjs b/contentful/export-processor/user-journey/question-answer.js similarity index 100% rename from contentful/user-journey-info-scripts/question-answer.mjs rename to contentful/export-processor/user-journey/question-answer.js diff --git a/contentful/user-journey-info-scripts/test-suit-generator.mjs b/contentful/export-processor/user-journey/test-suite-generator.js similarity index 81% rename from contentful/user-journey-info-scripts/test-suit-generator.mjs rename to contentful/export-processor/user-journey/test-suite-generator.js index a9297e2c1..69aca4734 100644 --- a/contentful/user-journey-info-scripts/test-suit-generator.mjs +++ b/contentful/export-processor/user-journey/test-suite-generator.js @@ -1,9 +1,12 @@ import fs from "fs"; -import DataMapper from "./data-mapper.mjs"; +import DataMapper from "../data-mapper"; +import fs from "fs"; const { file, writeAllPossiblePaths } = getArguments(); -const dataMapper = new DataMapper(file); +const contentfulData = fs.readFileSync(file, "utf8"); +const parsed = JSON.parse(contentfulData); +const dataMapper = new DataMapper(parsed); for (const section of dataMapper.mappedSections) { const output = dataMapper.convertToMinimalSectionInfo( diff --git a/contentful/user-journey-info-scripts/user-journey.mjs b/contentful/export-processor/user-journey/user-journey.js similarity index 100% rename from contentful/user-journey-info-scripts/user-journey.mjs rename to contentful/export-processor/user-journey/user-journey.js diff --git a/contentful/user-journey-info-scripts/.gitignore b/contentful/user-journey-info-scripts/.gitignore deleted file mode 100644 index 24cb060d9..000000000 --- a/contentful/user-journey-info-scripts/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.json -output/*.json \ No newline at end of file diff --git a/contentful/user-journey-info-scripts/functions.mjs b/contentful/user-journey-info-scripts/functions.mjs deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/GitHub-Workflows.md b/docs/GitHub-Workflows.md index 2e3d9b279..0e41750c3 100644 --- a/docs/GitHub-Workflows.md +++ b/docs/GitHub-Workflows.md @@ -1,5 +1,9 @@ # GitHub Workflows +- [PR Checks](#pr-checks) +- [Deployment pipelines](#deployment-pipelines) +- [Other workflows](#other-workflows) + ## PR Checks The following GitHub workflows are used during the PR process to validate the changes being merged into the `main` branch @@ -10,6 +14,17 @@ The following GitHub workflows are used during the PR process to validate the ch | terraform-pr-check | Validates the Terraform configuration | | e2e-tests | Runs E2E tests (using Cypress) | +### code-pr-check workflow + +* Builds the main solution file (`plan-technology-for-your-school.sln`), and runs all its unit tests +* Builds the database upgrader project +* Builds and runs the unit tests for the `Dfe.PlanTech.Web.Node` project + +### e2e-tests workflow + +* Clears out all submissions for a particular testing establishment reference, so that all tests are fresh +* Runs end-to-end tests using Cypress + ### terraform-pr-check workflow This workflow validates the following: @@ -22,32 +37,55 @@ This workflow validates the following: And will update the PR with the Plan results so reviews can easily see what changes will be applied to the infrastructure. -### code-pr-check workflow +## Deployment pipelines -* Builds the main solution file (`plan-technology-for-your-school.sln`), and runs all its unit tests -* Builds the database upgrader project -* Builds and runs the unit tests for the `Dfe.PlanTech.Web.Node` project - -### e2e-tests workflow +The following GitHub workflows are used when a PR is merged into the `main` branch -* Clears out all submissions for a particular testing establishment reference, so that all tests are fresh -* Runs end-to-end tests using Cypress +| Workflow | Description | +| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| matrix-deploy | Automatically runs when code is merged into main to kick off build and deploy job for dev and test environments (Can be manually triggered for Staging and Prod) | +| [create-tag-release](#create-tag-release) | Tag and create GitHub releases based on the commits/merges into `main` and `development` branches | +| build-and-deploy | Builds and deploys application for passed in environment | +| terraform-deploy | Deploys Terraform to Azure environments | -## Deployment pipelines +### create-tag-release -The following GitHub workflows are used when a PR is merged into the `main` branch +This workflow is called by the `Multi stage build & deploy` workflow, and is therefore triggered on commits/merges to the `development` and `main` branches. + +It uses [Semantic Release](https://github.com/semantic-release/semantic-release) to: -| Workflow | Description | -| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| matrix-deploy | Automatically runs when code is merged into main to kick off build and deploy job for dev and test environments (Can be manually triggered for Staging and Prod) | -| build-and-deploy | Builds and deploys application for passed in environment | -| terraform-deploy | Deploys Terraform to Azure environments | +1. Find out which commit(s) are have been added to the branch since the last tagged release +2. Look through those commits and, based on the commit title, figure out whether the release is a major, minor, or patch release +3. If necessary, i.e. there is a major/minor/patch release change, create the new release and tag it with the new appropriate version. + +The process uses [semantic versioning](https://semver.org/) for the release numbers, and expects [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) for the commit details. As a result, it will only process commits that have an expected conventional commit title (e.g. `feat: ` or `test:`). + +To ensure that the process works correctly as expected, you should ensure your commits follow the conventional commits specification. ## Other Workflows -| Name | Description | -| ---------------- | ---------------------------------------------------------------------------------------------------------------- | -| build-web-assets | Builds JS + CSS files (and bundles, minifies, etc. as necessary) on PR, then pushes changes to the source branch | +| Name | Description | +| --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| build-web-assets | Builds JS + CSS files (and bundles, minifies, etc. as necessary) on PR, then pushes changes to the source branch | +| [clear-user-data-from-db](#clear-user-data-from-db) | Clears all user data from a DB on a target environment | + +### clear-user-data-from-db + +This workflow runs an [SQL script](/.github/scripts/clear-user-data-from-db.sql) that clears all user-based data from the database. + +It can only be triggered manually from either the `Actions` tab, or using the GitHub CLI tool. It takes one input; the target `environment` i.e. dev/tst/staging. If `production` is used, it will not run. + +To execute the workflow manually using the GitHub CLI tool, you can execute the following command : + +```shell +gh workflow run 'Clear user data from DB' --ref development -f environment=development +``` +Which would run the workflow as it exists in the `development` branch, using `development` as the target environment. To execute against tst, you would do + +```shell +gh workflow run 'Clear user data from DB' --ref development -f environment=tst +``` +etc. ## Workflow Actions diff --git a/docs/diagrams/architecture.drawio b/docs/diagrams/architecture.drawio index ef95c5cbb..bf84f1470 100644 --- a/docs/diagrams/architecture.drawio +++ b/docs/diagrams/architecture.drawio @@ -1 +1,299 @@ -7L3X1qQ4ti76ND3GORerBt5c4gMIvAngpgc28BB44ukPSlOVrqqrV3d2rb3XSfP/gRBC0nTf1JRm/A3lukOa4rHUhixv/4ZA2fE3lP8bgiAoBV2/QMn5qQTG8Y8lz6nKPpbBvxU41Tv/VPjpwedaZfn8VcVlGNqlGr8uTIe+z9Plq7J4mob962rF0H791jF+5t8VOGncfl/6qLKl/FhKIeRv5be8epaf3wwT9Mc7Xfy58qeRzGWcDfsXRajwN5SbhmH5+Kk7uLwFs/d5Xj4+J/7O3V87NuX98mceyMcn5+FQCMFrB0cT2i7e47+Qj61scbt+GvCnzi7n5xmYhrXPctAI9DeU3ctqyZ0xTsHd/SL6VVYuXXtdwdfHompbbmiH6cOzqECAv1d5Fs/lhzZApe97/mkwWz4t+fFF0aeRSPnQ5ct0XlU+3SU+TeontoI/T/L+G41gFP1UWH5BIPIzY8WfGOP5a9u/zd314dP0/Xgqldfbx2yGSU+P0mrEaDQK/y+Y/Mdz+bwmc/zzw/+VrePkcwvQH04LTH4zL9j380LR6C8Q/oOZwX7WzJDEdzPDvNcpv4qY8ZoOor26wCbT9ekJPjn5tFUXg307e/E8fhTxojoAM33JeONQ9cuHjuPs33D+Konb6tlfBek1zfnFj2zVfZB1thj65ZOigZHfyvmqe17Da6vk+hmD/oFhp0M3rsvVF/Hq6t8/9Wz+Zd6eP2TkP+aMP83e3/E3if5CQF/8Qb4jK/EDZid+Gq/jP1FvZHkRrx9Yoo2TvDWHuVqqAZCyzQtQDOaxulT0/ZvbyzB+Qffp4zz8Wpv5VJ4MyzJ014356k3VX3Tkkd+u7h9e8aHLX/LJj9XWv0rtz0bxB0L6I91FID+Lnp/f9gMJ5a5ZiKv+kqAP0jpfv4R+q6ah78A8/EtU/0BfNk6b54fHPjNAP/TfyinxvW0RcfD3B1zyq8D/Hp90VZaB/n6vIr7llV9rfuIO9hPv8AgK/VT5h76W/x+ocZj6AYcgNP4L/LN4hPpdHnGs+/danI8vsxXP36vx/59F/h0sQnxjIvAfsAhG/EJTP+IS7Bf6Z1kG+Dsu+V1G+CvsefapM5ceEy+2/fvnzn2y6F/h1C+56RPD/TE7/jRik8i3eID+hfiO3tgPUN1PgwDo94T+pA6+VQRGMl+wKU6qtlrO/63aAId+qjbA8H+sDX5kMPCfxh8Y+o8hYp5dvvany2FayuE59HEr/FbKfs0dv9W5DwDrfeCJOl+W8xPZ43UZvgGW/xqIm4d1SvM/qPjZUQND+UNCTXkbL9X29bLCj2b906MmUIC/ERjHoF8w+GtQ8K0ru8TTM18+PfgN+X7tyX+fosiflvgLJ7aXVHyQnu9uyv0M+G/+/s7/DAORbwNAueIXg/j75z5/shK/t8rxF1kHHKa+Zgz0h9YB+4F1QH8WDPhdsHh1DIWBMGtDXy3X/HxL9LmMx4/U+Ui931PKv/pxfzzr32roT07it5z14W3M51LoCy4BiOFvKPPxEhHHy2NEuMpnDXuHVOk5MNcf3fFKwXtenxRwzSUco4HfSxGo4D7DShnregLD3CUTzOhRshaowNaOqOjXfUK5nn7KV6H5oQWGuH5m7vXDGEG7RHf9EFEuXVuBAg3KMKv5gnd95J/EloS4aarwel4aRqEHOotrDaIL7TmmmrbGFONHE6VHd4x5kJuLrKf50jOtTOcz0ywmSHYmvENMOBHepD+ZgEQFOD/mlpbId16FC00xj/viFXO0NumBthRNDtkDPXI9ry9Ks9N64UnxRZoBYJtP/9h1u37wML1Nl6JizfcFT8QNSNz1iFjB+1V478HnXgW31P7iBPYg3qtfHqso7hnVbfp+bgviXALAvghs4zViMzhiI326IHqyoC0ctChQG94T5lUJSA94NwvlSQ7eel0mH3+zObhHu2uWN41a9B7Cvw3ITKLAv26O803NwmK3hL56PBI2x8jF8V0cy+/bve71TC7wk3q/80tkRGRU47UiJGlINncgN9hrTbhVisZqpzMGsoNtFKc9xutTYXcmmvfE5mEtFsSlGk5OQICpSQnQn8pKXh+ZJLAdt9UYy0jCCNCcESsHygT5HKuE/8Bnt0xoddsqOm6HPKmcCoEEA7vuaBTUCpZvY8j8SONgS/RSZZRLnF+yIcTa5iVeh2BbZfWpcfauvcK6nRxQR9hoTiI0Gn+kGh3cb37JVjzjEPL7dpUMkPB8XO/oZ0GbZqnx2tVe1Kj1X8pI5Ai0uq2rj+kmCjOh+RHnqG14GvmJ57TSqa0Xk2P5GB1sqI0IzMsSj69b8Jp6LQM9ny7Kirq4E2HoRBY+iDcNpjbzTB5vgyqcfa/Kpb2libubLR5PUuQIWKdgdi31ikUg/pufHXGfjHkeSM5T/ZfYGfyilvrY3auud4xCM5ip9u95wooHAZMstXNVK07+Qr+vV3vTqV+6n3wYMGo0/ubwNodgbinNdPu6zCi7wdm0+Yk4rRsC3y2vyt5twq7TsByunG1RMbVgmfD2XM+L+Vncf5yu1OZK7KP2K/Rrv9myyUYgzRSZIkzsNKsyyppJrtWU833JrAtRNQphmjXX9Cz5GBF3V4P8qx3ZTNgCKJqAbLlsqpIXO7HQod0rH9USYUAU0YHsSXT4GXC+qMK5tltY3EHhs8/0rfEr2HzVL4l9SxZ0Z8tHTHRw57LiLDHLzGTpwl3aOyYlHVk53UmPWH8noVUO8DbTdn5U5l2bE+hU/XfKpkZcTx/kNzjWcc/xN1FFaFDoOJ7zzNWBwEQBVxu8hVMiVMFaqjmTfTpDKjlAsj1ByDYXSL3hIomrxRNPYX1EpL14GRzxps6sVPtGOturn+jF09djB0HvFHFRuGveRuC2cRFESFEDOY5vCpL2ewNMtjS8i4f3krFXY8DK6pCG37o9s4wO3j+DCXkAMdSERc2Pl3iXDWXS1aZkyVQ7jjPjHrmUnmjsTwY3RULhPHbEkQ6lroUDv1dJ/DTwxzCtyNPHq/LqPj3nSm+++i4qenRiYel5X5U8t7dX+E4rUaaWikYTAkt5CmIjhH5UK0HwQSkvG++6ptLgQWzyg82QXf2Ob8bR3N3HwxoOmXyblpNbQA1qjfI+gJJQZ46DjOw8IPEZbdggTUejioqgTPU1eNYPZXEg233E7pXOomHMoZbxQBqcSQrotbxvpGzFIim22a3aLXyHDnSXENlYH6Fxv+blzVgvCU+59Baomn5ICeZCJiDnKlvpzX25R2i8H6YnhxYfbq/lUmQWlO8qSqEGM5fcMKK8KTFjjsYDWcfCQ9pgWwciIY7TMCLwU6Ndm08PpcKx1jvYxJENNZI1+2Ac2HFXDT0267n03JpKxwJDntWVpjuGbIpP+dM1rLt1XtbsgNmgOuRLFi4gJV62LwaTIzy1dg3XWzgn5MWJE9KonHGhCNYKy1U16NxejXtqD0+tMqgbA6xMLbnIJOOOItJJzkfH6kPSgC2CDNUGvj2lRxzYwVjlb7h8I24hLpw5vRK3kU724l1xnuruOMsGiRf07ZWjI7FbcGTs63G3WF1WVvNxjeb9iKqRc5wo6h2SIYmz8CBd3JiCQezJCwFD6tKTX6nAJ0LYfiH1mPL61YqRWPeahzeajTj8RtxXvXq9YCZS91NcTAWRwmjTRCq4EWcv7vkSkBAmGlUXGbRVL564C2dS39XQ5s5+ebtO+M59gsZfBZG+iwI7AuEmn3JKHIx2vy0llNw5GBsvTcgmBpBhNK3Q1vQX8XWhAwsg4+XCO6xEcBISqCnMONOasxOrwJWaEmO0m53jcrSbdIrpbNxxPoRy1C/jUqx8ZN50uiYPyHEP+4no/D2zF3xorGxatHbHBjJgCPqRuXVYhvxCHsamY/cnvtazZSOG89BNxMPnkTzMkKikVXmiVvcooueSiHZfJo+IZ8u5E8Xi9qT5B3dXa/l0OyRaCvHpWRM/7jcz8JAeQbzkxAv6IcFzO8MSK0UmMiS3qfSH9U4vz/ygqCeRM14+TBnP9GWPwOY2ZuoyhzQRN29z5+Ryib1th2x4f3T163kM+kHmO1W+XPeBfzSf/AdfInAnPi1n5Z4HwnUpqWQS9FjimUgDQ4uSa8ntkjyWyC/Lm7/XpI/RsNFqNTEGOL/d3OueUyQoKqOzdRD3TXl0oPEuMPWoSN5VGaZyqs2P1X70kHNTQqkwQ0Ni1Ca9m9NjBCZ1hRFuRW/zbLTjhVhYJMCeKv4olYgi2Z7vbzpe2oE0PKS7PkscRdRSWLNaQmWved14STzXwiSBaRsEfsUX+hFL2TO8rs+ruzdLEkjSuzBk6d1JY0UNnLwryQoGH8wSf2tbsVOn2JiWo7wj5f01BWlmIypV3MjjGSBEBFF3LwYKSIjFE6LzMFEvVWfRqD9sOTTRdHd7kdEBVH0+1NXNWBYib+LZZ4YqlWH6Ygq/7vcnvRjxeqcaP6uzFtQ+nkfwSkTvkd0D792P83iiyBa8PG9Z3PPwsgNl1VviqMAoTIvssWU/l4/Zr013RwOzu/FeMy2sM5L1Mhnphmt3NYd9HR1gdFYQJTPn6kJGrPiY5dSMnN59dJyT5zo0QHZS6i3NHp36IKtto8hcZPHbhAGjZyyFJAsUcilnKEI9tHkY7/uckw9erYeoxzOZvn9kIwt2Q1K6IQhS+HiNn1BhE+aN7dd1tluj3J8mLNlxGJrjUt2HmnaP2xyQlIkI/EsMWLticXEZn5VSMOsYXsqYbZQ7y413ZUPyEKBOAn1j860+U/XpQ/UyiwypWK2VbNTA8uP9pnjAttiAmx+FtJskVhQoKBLktpljrdU0iSarUSj7uwMBgA20h+aLbbgjy1A7HLQ+2muowFJ/ROQP+6BXeML1UNUmJ4ykypW0ruB36tJLSDczrtVNine4H+egUoldsadMbsf7c04WFkCIdUlKenLk46U/DMQuJYQ+eIkm9rLJ6UqWKVhJhMUGPKM2DvHa+WSWWNP07py8UKE1Gjo75iY3dZ7eFuhLRhM7BOrt2HBDwJBSMz/YFzYPTuckjMq4vMwxEN4pn7wto1H8i8ZAV+JL5wEzpDRhfZeboI5hISZ6Q5qv32jadp1KypjuZhfA4dOmjLFWXzdjnCQHgGmYEOmXE+NxnBDHcYSLVeFUWEkxecG5U11dTLWt9DW/shtuqXjj0zmnTTe+nO/PxGd1IlD81gmc2inEQh1QqfKAaBbAuUq5Jj9TUXiHXvoBdsXTlmJ3vyxlD1YxOABCwgQqjEJEIPFFHlr7TLhcIF62pBJJpoNv7/flaj5VNeE/wvSipKDIkFo7I2MBTuOHFDjAGdadfQvIJ0R3+b0z13DwnMvwh68+bFFiAPC5LDfpXD3uvjpq4i5vBcMLU7WfO5yT1XV/fhGI0fTGYyE1/d6jVlNrowFAXRQVrKyjOn3pNKhTqkBfOi1W2q7FElcsa7rgkNi/FUkECFhMGmkiNzc9Z7H2MQATEl4wAuEuX2Zuy7xErNtVZgG1ATpxztiT6LqzRKjP1HF2oUG40FqCE9mkvU81j+oVZ9WnG+lwqPte5/B8c3IK0wx8Q+j5Iz6feYO/cp8SjUIyeWyT7PmDlr7e0FFycx/8cqkpWtE7nhiKOmarN+NG1lCYLtZLduZwUzWvz1II5+cStNUDUxoNaADgjvrWfHINsj7eAn7qk2VYFrVhz8I6NgCWGVYRupPxXk+BlFsV5+5loJ+z17hKPr9Hv8sfBKqZWKVP1JKbTyq6yYOFNc2Fv3y751ngtXNHEwOsFDodLuxKqGZ01sEZ4ijpjBm9zp82FKz8hWP6ik+XW9ZUXgI7/O2BvnSWD4PkgfVw59/b7rCegd0GXvyIB/bB53h8QigXSc/3JSQp8FsmtrecbCUyonXqyKyc3oKITJYa10zMA89I61mRnqSNZLA+88GGSQygkpelO44tztD50hKrQHX0GKWg4S2qizuZvjGj5ubJbb5K3f0WU9mNtD2xOdSYi/C5VonlUXgeSTrPXeutOonuO9YS9h2S2RFT7CYD1pZ168Zubgd0OefyAtOoRVmuv6RoQUK5BEucpN4NgThSS4OkZGyBVU+RXNkf7kozVVaWQt0cdiRdlBM1nhzSS+0aUa85VSXoAfcsQTmK3mpczIxXkqJVWwNHYnsctxfr20cxuBFqWvLhGLU4XY7u8fbGVPVN8gb0jZzLXtUF1E2kKcYfbyRkz6SM81CVXWaMbUs7u0dgLU08FqeLH9hcPUasruA4CKs2zaxXBs34I+q5mluFqS6cqsFa2JPLDBXkULC2ROKlyTSQaB9FomiMKa6Q8iZy6VmL9zhyMZ+xXzhvHns6LB3gnnpw7O4ec6IvBy93u5VaDbuOyR0cvvqzusplEg9QsNuG5Zhr6/OuPJz6iXXwwov6q1WQsRlspIqWCnsQ9GR10qbk2GAKly/vp6/yObfl6iuQqQVTJaIXTEQ5exETKZNa7RrqHWYuVwuG18d0q8oLYKAjPCpHxLZ0e0uOeIMiq/EoRLnqmsGS46J7ziQrJpqirK/X0Fx2pRHLaXE3OO8pjNSLqQ/iCW+1qnEnP4myDeUajGjUNBJFL616j6qa2YlgTnj5j0sxiopBcq/yMmRkh+qync94UXoADIa+peCUhzDq6r3V2o/tLD16gm5WoVruQxOXEKwmeOK5YSi0/QuOhsu86Cs5oTX3iCG6z7oOJdouykUpRaZsXC+HntsJZUBsbIo56Hx7S4ygr4U+kL0zE7V6X8aholD4AnepkBvhSwoIlAysldE8XTvr/FClsl0MYiJM6nV5ZEwSdowDFpaUwBYfN7sJLyk2Ov2MHuI1e8yp8fJ5d4Xj+v/2eXk3ahkB/9U3c31m9heFe/OHlUwfsv0SiqTrOXdcEsQeo75htPpqo4IOzbn+w9bV3sUD9fW/mvfr867pL5dkoA/LX47nG/alykJZBivBP3XBHPoFpr/4g361fo7C8A/Wz3H6FwL+DwZY8T+xn/A/EED7ndX13zZp/YsRto9Bqz8RSvgLImwI9Q1xP4YDf1qEDf8+avKfipf/YPPur/HynyaHCPpt1PoHYWvkB2Fr+Kft4v1e6H4nxnkfnmBH3CVK51Kl8/+I2GX8W2/Eq39//7V3f38MUwO2JPy6dfUfcMbFCZ/1yjy0YMbYeZmGJv+x/ItxV7WAiLe83XIQb/t04wfVf7jT88dRunKYqjfYf/h54n6eRYC+DqF+2GDzDzbc/iieiv0ktkR+ny8/x1Mv8PFxs8JvRdJv283/rwmwmg0IeaofA6ysVRxx+VMCrEzyW4BVx0ywYgvW1RRqWpMcLKG0WZ8LTJp5TJJZTEL7UrOQPl7k80VulmLy5cmkdHwNHwoKumGyLGRyveCRTUOqZa+ey8BkSxa1NNWX+sDEtN0MuaqvRseBeE5+gvgUOwzAY91fhuOswB/yt/wqEesFJqc83t/5FxFXkdaz+cME/W4wUblb0tVM1HwXTpS5HWbMi0YMo6bep2DiimQfAp6vO1A3zOapdCaq8AxdYJveyAIsbJnr1MNW93SsZevpE/Sjn7RjG3yG44Soju/PiN+jy7uDe29EksvfzN9RYCw3Jax6G5FeF7hdfVfLcr2dprdrgbUM3joQH9FosKa4Z2ORdtCIMK0+LCDkc+aIPsp1B7B95/ivdR8RIA3i9AZeUFL1wUSTz7N+k6Ovlo7vOJRzA7Urt8h5D7mnR/Egkv2mtnqwjlE6skl5kKeL58m2o0DbI+KjgiV/qVV/Q0soieepzn3iPpe0z8VTViRC8ljP14dFXrsDVAmDYm31ML7ck4twh4kgyZb4m2nGjwp/gfWzDL1elJZFn+ni6BLvlCWX1nig4+s9HXk8amxYO9uZ3SL45eY5CGFTEboUl/vxNnEZSqHqdR/3fKvKJCTb7j2P/WtPhhcRo5FvgKDIVqSpbmfIsdw9Or4VWomAwIfvN25eUQ6pIOujIzc7yp8ReRYva8BVGHq8T6eDJ36KfIEywtGd5T7JVne+idUde/Q5J75d5U5bOTwhOTZRXj/HsM9XQ5tn7fzg8MUCCz5eW8+63oVDRYq8mnZ0V+47t5DY2loJfAcrgcozh3armUank/FFnJ9+sCMgsFYhBH959NN5OWx2iUXJcEv6gGW8TcMNfWQyGYuGN+9PL9Hch/F8OPjalP3UXB7hSK8BBUdLxBdhLQMeqBNPTxHuXXT9u8FVUrtkhhUQJMDtgCqfdnnj22x9i43avh3ReDPPrUZx3MpQ7qHJZ0691FiBfYfJQBwOBswzlO52iu/iHpz56ypEQ90NSiQ2CQiQXMkVnFR8/IU+/fi2kRN/RMKhI2Ru+eWo62BxEblpa2vb9fW4+OzGB4G9CGEdFsRxbygEDWFTriTdQXzsgziwakZFsr7q4OiElOgWTtimxWR0U2hvLo0mlxuLQs3A0rz9rBEao5hxccE6oNjG5gP1nqgsszGlYnDCkVtN0s5zuYN+TBPpvAljh2v5HpSDThWIA780EOJKtdJ36/NeDJFLiZP5um0zoSEnCN32W1ZsMxmDnQ1eKpOrotMWHKDhrqSt+p5umIPlHknVZ3g5k3WAbz6omjyDSaAR622E6x273QiRZKYczgskJGvfNAtppZQDGg3Wl+ONHHkwu0SPxxMx4Snd81VcbHu4ZoRwFj4UDpuzEYDZH4UwK6lNnzGr2Glw9q/tBYcSRiWQM+JVh6vHVjzltw1P2OnkD8SSkIMnYXTBOKJEL/pqWd8cYGeCt3EjlsXUGkHHmYJlT75G+CVhbicSixsLXqeqPtur++1MLi0ZjL4n+xEOpluJIDcfWBs6iKdSJ88QxVvEBho8LgOb9bz4RcNvZQIR/BlpeHRZqVk5X4wt20DBuxuU+tzpEHCeCs4iFPXMigpUuB3iDAbYAXBo5aSlPO0IAzZpL7uGomKLSP+lp2azunQHNKX3ZJWIKgkzMezJ7trTh9iHJQqREV3++H03YeitVg/GtAxCXZ7Psmd42zOclWOXMbQ8kT3d7W2gRt1Shr2Quh9eLpVT7wpP5Y82c9PuuXnewfH++ZBv1JQOLk+8zadlRXBO4ur+QXcrAJYWh8Q8YO8xoDbkai4wO4idPE9YAMvSudF7ixdnNi2hvsim4Lnd2s1ouZGNaphj07ze3W4futko5n5I9aZsJ0zs0oBguL/TA65xTWd6gau82N5wPXk0rgJjHlfUuugOG6tN9anh0FiugmVOh4twpYFmMns/VuNt4US/U7Rvo+0lASbKYmlrhVNDeXctOueq9EEgwBpMugqLYh30FVKTdpGNU/pgZ66bCzvHqmid92rq4NsAkXKT0vNLuFmqyVkyP4waKc/km3nxq3izg5HF/D2DKmOu0BvLpy3e1VUuog/F7V93e3u4YaNSgYGv09zaRE8K7q31UmC17jPR8D7iAiuzS0mSOi85JZITtZ3oKqWiKQ/8SB9LFLAYWpZvxBpQmd1D2hfikCUqYhJR1XPpah29sE4a2KIvyWpiE8HWhBlCrAvIet9JUvZCKo7PzvOE1F2EwALbgBra8ddpHYusVaracfQAcXmFBPY/QOiAxg/ZyVwLV4ujIPE0HXPyGqLTWeyhx+ZNNCO9l9QkWjyOcsqnewtedEOYnZbLRMcelP5kT1yfWlFL3AOSLAjs+EL9wYf192yl46mHZdGxGWydiojEvhlqds3LedGCGTma6EwjoW7oGEhBJQT7cb8p8agmBV+8mZPpxg2Jgg3Zwj0Sa5mUaeo16G35rt0jwpD3IVN1iI5eJb+vcfUBdg92rzD4Jj2259qK9LwaDopm0EkaZALAEKXmWUSBFd90pY9ygAxXz/SKc2Gozh3HxBWBapridFhSkdGmAQu+jm0qyo1qnvnp6LgCzFTTuKcDIlaKfJubf/hkuTZx+1wmsA8HxArUNtRuxWC4hNzsqxhaWaef9qhpNUTAYTIvO67igQBjeDF4p4+lVYYUJZUeK2mijFKeuJodURC830azNNMTZ9GRVA7A3TX9cDeghzH2ZG9Rd9pnXizdVIYXaHPny5+szM1XfY7W6h48oCoAJaNO7k/OE1dqo1DvrQk9aCVtzvj+uF021VvGabo38QLH1D0TDHeu2sXB706MpgostdWYSIFMYepjb1TCenrtQnjDmmE2hMeQH04ibDwm5yrdK76p9d1/5xOAN8TgD3bfuq+nv5BvxcgeN2V5qNAt0zs/9ENB6Ec4SanK7X2gcQn9tTIF7b02Ujtvo6ACBbTaCmyJBVW94h6iVCBKZtyjD47dQrnUqcOBirTBz65esaUPSk9fw1XrckhoQDDLcAbzNupx+pYLsPEQoxGdnqWnD3srN91rUbkM3ovuFnyfol6NvUsW2y4WVYrnlS4PxIQjINxs9fvd8B4UPD2XOnvk9uudvyz4Ab+KF3Q1ixDNvfUCYKEGOIEjmH239r7fCgTGhIA4DjGSCPjCRkRDdTj3xDBPm1rFTpDQk5t4SlRoRTpFUd4RTd+TNqXmE/ATzGLzjjGLAe8+TkBCHZ04NnB5Qx/eJUQ8JN5gVD2KmxihXN+rE0vJ+eVY+hF9+VdVTZhHl1nClNSBohcVmluD0e66AkOonls5Go62C5+Kdc3ibDgXqoC81Alvi0aXZR4ZdwHMmXwxsKuv9mzTe45obqlikl5MlcxeEkmDoH2odkR5ijqIAXjcfb/7hXv7sIWsxUDksMUnznuQOp/5LN9dc8aK9crpIEy4OGZGsEnvdkwijeQLbVDzxOqXvHUGGi0utr8JgPW25KH39+5l3Pf6ZQ6ITOeLVGzUWo2FNU2KFAf6DVUQmh23cjYfH0IMg6e3VZAD2AH1FN8psXmsYb66QYgSIFjwEM6oa98+KmkTQoo7iEPaRmjQ9DFawX01ajnoX+qOvZ48jyJQXgFPkuH7C+gx700V2DfeuvH9muJY8voooF+m+VILoZRQ3aWY9X26jeBOBKM+O8yyk1lpUhA/Ek/0EathRyVLhkn8rc/NXJvs4PkSV0q+NQxNGmmArCOxhC2IN/G3VT6MINNqd75M9ivEFnR/c0HdkXIXX0JE7DF7klL0CC/Vc7Fc79aI6q+Q9BqBtho2YBgG6TDD0ILvcKAWwda397madW5bHzvntRws6FxwufhwOofHyN+DO+73mfeM9zUqzjevdgxwf6DRw1qCjptBFOJuQbGWbcUJ9ooG9qohgMzloVjACKSAhxneenDP3IgQqvnnAhvaadQW9DmwobXze/znAhtvrR4gnfsU2BA0qTqa/3Bgg0TpX7CvV7LwH5wuJtFfaOI/GMrAiL8icnFN7nQG18V/Qb9AFP25JAQt/oJSxOcC/vj0jo9X55dXZj5V1xyAJdkfngnPj2oJPjRI09in648vIBD80/Vv7YOL84uLb1v/J/niy8NJ5ibr5Sxuy31z7fvK7+OGf87u8Q9DLP+pQ0wIhH0dX0GRPxVf+a4hlKQvDv4tfvcty1O/0Mhva7ff9PN3jkkx0xSfX1T7tEj/u4PBvglefJ6P3+vzt/WxT4vFvwnWxx78WyNKMPZn4xlqDgbvf1iP/58Qy5jzdJ0+HBgVr679/UPH5v/Zp3QvBfrLlzEDiPiaLeHvNfF/NGsH8deo4V9VJP6lgvxD5fjPxS1/VfTXKy6qfaHn4V8ghPrv6Pl/kke+1LB/pIl/uoKlv+ZA5CsGRD9vKfhn1e3V7NcNQd+w6E8+eUp8H/0y16St5vKHDP0hkPU1E/75g9tTPlfvT/mWoB/qt2/Z79+ibT7L5r+eAwqgHRz7NGP/XX76XGUoijn/OXsd6O9o+h0x/2/e64B+ToT31+11+P6E/g+S/nyLE+z8Wc2f3/5Xg4T0cz/BjodfO/33T32s/qfudvh5TIZ/DTnQzxsSvoQcP8gIQ/yBZviXWIz6E1kgficp3j83Jf+0mkRg+quposnvxRH/ETojftJUkd9v/uLz7Q90Ivw/TCf+Sus/za7/9bU7iH/PrD8kwU9Lg/Z5u98XJHCW+AmSxP0vIsPnzD5/HRmQ7+HeNGRr+jGhyP8eSlB/MSE+LyX+Ret20C8Y/WsBcOcAtEX/ret2l4MIUV+t2yE0+n/Muh38V63bwfQv+Jf7579u8Hfcyn91gQ3+9J4/u8AGf5sQ+Zv6JIb8Uf1/eUHuj0j7R3joMxL+FwH1PwWkh6UEYF8E+4QvAP0blGbG8acnu/0GtP6aqOwfgdZ/AxL7IY3+RHLbv5JGXxHn718kY/3paYlhCv9aD3zvwv4oby36b7BPPyTU/7IlhO8CDvgv8B/vUf95Cwo/pMfv5/kWLxYFqpcfhh+sKfw/DwbsGuZ4/f/9XUmbm3xJy090/A+IXTenMdhQ/KHnfwf9/uniRXwjXT/I+vsj+Pc5sdu/nZw/yOX6V+DBfzIY8BuyQz4juY/IDsfJfxrZfRVDBrT7MoZMUL8GG35ibOEfokXie7T4V8Yg/gv9JlqAkcgv+Net/E684AdtfWNxYBL6tq1/E9r89qsTPkvj73Xtu/rIV/V/TjiX/D6c+3+URKLIVxJJEdh/XyJBc+jXAomR/4lg37/PfcP+MxKJfJsc+Ntv+viz4vhtQ9+tPPy7PD/4m/eg5B/269v6OPqVp/iTtlb8FZL329rI15yP/wO+/8OwxZdQ6MdhjO8l5PPo/2F+5D8pC/i/WxT+teOW36lZqVpua/KjcNgITkwOPwiI/bpL5QOt16W9fDbu16+pgv72xwHqfzpJ+a/HNX98IPPzqc/ueIKv6vplz5P2Yr75l2e1lGBkv0Phf2LxEv7G8BPwr4b/Swj7gyz1OP6TCIn9JUL62eB9DT//0NT9iwL6xxb5q/1SX0FaCPvGgv4jRfInDeifVQ/4n1UP9H/GVKLQt6byzyHXf9bC/dc3vjyB/fFa5bf1P/frp1o44nu0ya5Vm4ETXvnYDt+rvP9Td998Hui/HFWGfkFR9FNr/4P33vyueYOYD0G2+YskAmY15sB0fUfsf1cegX+UBeKnpRIwmA/Z0z+mEmAWCp/cn5NKgAL5aoUvc6P/9g+F6S04P2UqX2hwlrQCGfrIhQQn4ECmgeLL+tOH5ANE/y7o91LQwWCWt26jnpVJneBkPB0OGz3MBTgztoM2rQ/nUyUMlKznBlKRgXxsbN0b0KMsKOZpUtqHA216adILSDfQxR/SPLNo8THbLjjcpZ/jpk2NSc8TOD4c7SDX83bmZIStrxM26aQHbbzrbSiqjeaaopI28H4PMxXqlbd1B5LyIW+jep4mxXwcFEvBpiSvJi3Vay2AM3/kAE7gQGcFDvIlKE3jK2jFRPOXvn98xlgN5A2DBkLCpCdwvtiuX9dICtDf56aDg9PnEkervhBrcfUFNKVAujMulLHuWXwHCRbuDmqs5W5Uxmt+3yG6/2KaWegmsAigHfcpkcJvf9h3pKwfkk4wD+VuQxZTMV72IY0Wk0GOB4vg4Gh4520BE3ru2Pb0esg+HM9m/Vsdkz48PghTFhuM1axQa4TH8hQk5eG5c+M4tf+eu7Gfu/cSo792yVxtlr/73NxY7gbOmmfugon8ljxSo38gr9ZyuICjZN0Widgqc8IZ3n6UCLenoYBzgoQU1lOvEJlKcpPlVFeRgNmxDxdehWPl7T4eK2GQokprN0+oz9AbaYK67RBF1y/zqNOdKyExXt4giTshJt2YzFtapwYaheDEUFSQb6yy03NfpAwlDYEk4JRCvKQf7xxC8alz5Dd3ULq8eoDUChqj0XzMe2CqXWe5PhpCVRFJ3whB3MTBuFjr8czX9TZyzBOxcGbYcLx4+6/KJtAILlpl3wdFFsA2Hpa1Jsh9KntirHWR7MKjWZ+3OV0GxH490yexUba53zgFW/O+H4OcIIMHyNpwlvXdVuW3RbInYLuwhV4Zq28jOKx8a9KPcx88Vm8YGB3wBWadhjzuD9GFjbUZQ5/E9rFSjABD7cJ4Hja2Z22EN9Ttxb863XkgznRIPG6DXo7SuaS5Ik1RP0YwL4ulUJSQ6mnknWrQlUScs72XLEMJi4i9t2TFDqsqHzOWbUjsQqhhJ84DMNdYhWOVt74+S+PdBgMx38Ss30RoygqrEV35qhSH3WMWHrNFZAymK5CbOnPxBqfmNizxS3mVVy9bGuFtO0VNHCLGZyCldgafteSUau1akvR6P9Z7nZ/+Wm75zUcHNvAGncaspgM6Icdmheg4Zo22wGqk8mx4mVPy4fYhjypiujbj2qQnVHFeyZGV4PZrBWrtTTFqI7UROYTYA6rB5OCLn3teplMV2jzX5x2+hgi0167dmdczmqJKR6Xd1parlWjkeIEDmmwgJyyahXcmkbwFN3fmhIjXmROMjbz0raWtSy+xI58O1W1PbTUjdlNWPek0tv3wFtV5SJTXSRiMaTNBy007So8i4c5jBqfmdtXZIyViVSEr0v2mkpb6pl7VLLfy0qysuX1IPPpswgAhUkfCYVphY2FEPuRBlhMgvBBIGqA1t/iOQtLkYJA9FTIONKgYyl1hohakE+NzdwpxPDBO5QfuYvzSZjnnwa1axr+VyHwYtQPRewzIMypCvoMptJ/c7Iv0SgiSoJLgcGO8PSfxfLUNf0+7jF7Vt9M6MrMevLi8w/jxftxB+nQRyrv3nkvL2Zl5kfjdFgwhcmfbJw7S7L/UI7rv+7asT3MokmRIRVwBc82mlPGyd+6JHOvyQKeNJKYFkmKmbkmCxFJp2W9DjfWO+4xCLAonqZJAnkhbTg81S0DGZJ6ADIZ6bZtDZfl+KyGJuEVyccie/pQEGwCdhEV40MernjClNQM2dvLyIIgzA3Jm52pAP9FX4A8X5CbuPBXf2Nxx8Slp1BiOtKdK7GtA1EfcqjVxW2i6XSRLGd0pWuBHUQbOzIVM4CX+K4WehNIktCaly4cv4nB35Rh5EntyhEJmJBxUI3Mb6WSDWtQb34N9KvITexoYdYtKTJB6M6JBEmCt7WqLMBMm5qaGaDFOhjQSheKnlnE80R3V/t4K+8VgMuVmOk+YuyWz7Hp7+LUnsl4XWffhRch7czgLp2ZbyVb05oDDoSqeen5gzk+CeJKKLtUy81i4p79LEeLGIcd2enwjkc54pjgzWqfEwXEX+LZb82NDUA9KKiCHeNyXqXhzEdEYEOwhXQ6R1l1VyXEydJph/fzGrrk9K54/K7fOFJ94Wr5Y8BUA0iKJ3EgFl3HZJix48kS42Goaq9tdfNyDHs2iuXJq6oCQ7W1h/MHxY7Q+bsJlLh0qzO5SIdXIjsdwA7Ieu1BBUTpfmSszN0KjdijDM3HKd6yAJGK6SkMpEe7FSfghILDxKg1v4Fjdf6Rm7anhUt4eUPmo27RkotfMyjfvfpaQ1hFwZ8TLJJSrvZ/HpFUf3gXyyRS2bgDGy1jujY6lWwIl7xegN2J1324gcTUhTrr64Lwnxfrq+SRP3+FsnZKsIYkSXs5lK6Uc6QZDdieQp6xPIXZqPunZd/Tx8LEKnlZIXV+7Ny3PCByXrwViMSCVe92WmFs+AA2KQSmyIdkPLD4jXLNR/GFqRE/VRTVGYS8O9e0dXIoTcxOZf2e99oAl2raxC7TK62mVCnJmHNuSjreXIgOHJbplD+f23FCHFTssAwq/cXK+8RCQtSJ/r2ltaGYulmNzX9pZDJ/YNmOncToAB3rFTWvueASsgTDbUoeV0V1Y5cNdfMrqs0fLDOUd47K8ErEJgZsqzGzIXVpkYNCkabGeox7oEFMrLM6ENLyhkPbyqe4FHQteGJvd020zAjb1GIUh9ycndHZrkFiQG5j8WKy2hiwBnLhvx4yUj4ckGB7fQzcmzORbAlOI3c+GflkJ4azvAH5SgduY3M1yunffHzoiNH2fKbonUwDoN/rQl01Nkk0kJFnPW5heejCjsB++QYOTu+oIoKidSz0Cou68W5C3op7JyMDgQkDwRuDoCFf7ulYDu3+WPMbG53YSazMYN9hV0/loBS8VEU8HCYPHAUPAEQt2ewWFGmR2aWiPwq3iyRiO6KGnfMoopTa8cLcR5qEhec/yTrB5A6rlUvRdGuTrcSJ/HuiixDP9cAk34t/56w4RaT2vjw9Hn1/aY9Wf8oTCGda3HEJSFGcPL/3yVa6mIn3xsjuIVWPKiQVuQp+xP/E5g5+eu4utQNO9r3WspxtEAxiv2BqEsE2vdvpD8pl295EXjPqyTyJBGPMX5Moq/KY7hsm3t9NX5sgyzfQCenfUJqYdimir95aYGPsRXcXVgA3QDeStW2/GPfpXd3n//PAGaYLM5f2M2qh8txIVm5jVvuA0bO6eGy6ei7BiXzxYURskwqAwFHypiihQRVfFnoB1BDNG+NqCxMasWOhMi7TFOrdTbuJBO7+5nb5VhhAEwYUZylVR8foFAPFJAngz6V2vtlZFOcNOJaLqLzAWHlJXtqv5SAe1ZQT3kj3aj/dEO4GjoEhd9g5GdyjVxdZdF2iqIFnuaHYIFAoLeRATu58Jp/t4UM0K8K/ZBCSY9z4IxZwMHGUjIEEsoHK8nR2nEOEjfbWX8dprOcAUX4Jfr6R2yBylXutDHvonvb4BuOGgkj2h3u4qBRNal2cAagIN3xwf3h5PqNsK84GBmvf6ZkBGZYcPXx66iVPw+cl1r5avm1oX+rjlRSbx2CDT7gpQQpHcP08mHR/QZDxtLCy7Hu26osfSJhgAPmG7FWjG3LM4sjqtGy+2D0eGVgjxJvsGCEuhWy9ZnlWvxiTdVAEhV7KexCIVtWpYYtXNLpTdpc3OuebkVUL3tutt50G66kKlLrua517Iw2J2WOAU5/OMnUKxQkJw/bw10bNmbgNZ3+zer3nfQ5uiVzHyTW+5MYr+ixmvtuddKSlx4M8MedDvM3uzsAYZijite5VzFlcKm5+T1mo0zYXd3DZVnfn1vEPX4BsGjaBhqKO3mPUA2kf7wJSAN8GwTY5LTBXtnx0TuW1zeVzW6L6AzdNeNe2TEZL32wAS30BjbmmcHEzXG0+LgwUiflp5HnXGiIV8/xhUYluGqdH8sZTqDXp9qMe2eXoOwsbJ+Quzyahx0KdGLHqCQLvR4LV6zw+X1Q6fQRRI2SPgzFoNhTcBmtGtARyPyOU78P0brhI9gVP+FsC+OLadeJnNj2wNdhWDaJw6R1hKUwZqAfNoXrJrHYcwtilqHM2f8pSKZliW9qbbi81bhGQwVX1WLT2TRZess+E/hfe7Ypabx1jr2kFBStAW7HtpdJcRZVywngljazVVJRaIHQKeo2SYCjxfyrnRvLeKpg055OgNJH548j3HPtfDsjgmPf0b2q0KodMVrIHMHHevx42dtXjkBi+PoYPueKitG7lfCL0rlAdURRbMiaZ1i7pOe7otHs77yMQ4JnOjwpmIcn9bEHEZlJw1HOaZCDnNUEd2bhD85AHPXtBrN2bYrDvljisomWQrB80UTBoNvE+N/mJsbzHGZafmXYfAKocadK/wUPVndlYqNtKhejm3Iftgkb5vmLU0xbLmDs2l7em5Qw/MgVkJfJ+dODZieANbhFiLfXyY+kDJlFGzbwP6SpTAWaHjljmYtukC4D+BENppx4/BlWiEhuGaaY6CC22WTSrfGaYO23u3DMOTkciBCMj8dq7d4oBVI2DiCKMIrMQGCzV6KPjM9uHLjC6mQ3ClOc93qGJqZBI4ApwpARsUkJkoK4Con/fMeRxVNTQOt4DHElEzUFkjtU5AFsc6ixFB4JW/Vw1QupucsifCnBKdJvdUANOaMqJwnPgK2HTjVJh9AV+4qmYvV9JSGliTN3Jlldliy/y0+pDmDGtmoaNOtVe52yjf9hHH8GeCCTjyYVEJrCs9j02Kn0deT+dyD5aVmbYzz1dLyMODunxT6albut4ulNQWnKPHiT5a1XVffKQKmbMudntCm9i9+b1U+muAm2q3e+jtrokyjLhJiA0Ni+umKxW2692Lg5vKLp3gHm8g6bZdOdzglfFID3XWek54YXLCxAmcCeU87W24dx3tRdZGFtm35fnxzcRS+nEcgoQjMJ3IqLRNqZDneShddms4boSjapLR0dU7zpEgQgjmKVTqErxAjjkLfUXv+0qCwZN41FxYL4YBdaGMIFFuDFS65LPy/b56SLwpmcHnqHkzUMKZPaL5xNnFoEU9U06kDSLd8hjghF4Y3E2Q91tDLZHNhPhyvWcPCKr2OjNIzrmbe+QmRaUXz/OI7nnOvMlb3QPQiJ8Ub8NS63ptFFamusv91LDMICBFY054G2cZubcbfMi1P7+9y092kzH+MIeoCx/4arGUbq7PWnQ0w82M1rALXuNtPp0yNcTeiAQJXTS1ofCmdyYIfcsZHxcq9HOjx0XQJUEHLJspWo3fV/3OZ7OYCm8d4oIbgGkOKnJqxz+g9SMFiPZwRZSN1weppWfCipR2DYvZTOMh9q8GLGKI0r1R3+WlYD/w7h2CDHGb4sZ9mvS7IaKOjrdhpmt0vwYBcsewRoESvo/RCB86k7ryHxd+gPOe3/WaiHEIY9B379WhN1TDdqGN8ChO/vLfpUdvYkAa9H4MMK7oi9+ueOUmTyEh++1Km+NdXUmfZMY+HqT+AlrYciLwSUZ0v68SkJj2bd3wh8yKqhb6fUvLtxquqQ2fXDQfmvxWmDh3JB1l28dSIu3qIkzl0QPdouOrIJhQUXeTsZ4EBbtNgrqbQDsXouVZK2sSAlpUseN2KS2e1Fyv+NkkwE/a3gXwYSNI9uI+Pxu2r3OVeh/tTA9DZOwzai1iZ1aC56gETXiYC2yTOxK3DRGeQd9WMhakwzjf+yaS8GwJ7W0ekDo6Vf2uoxS+Rbk7U/549xI+bI/pgOd52DTBOCxEqfDDrQrjFjBBOy7HWZMTHCXAL0jvLsWYiQYdQWFu1ePFCw9sHULoOQXhEPS5lNhYm91JEBlkx3JQzLdstYH85H2OD/rTpWM5DZw+iIeD7dDLDS62PXCZi8VnR3TT0cwO+kkRJ3xm/hARsFNRyhHej+Z+Kk9MIdMzTg9T8Ksxxd639thnecj9N4I0POOEHdcgsjRWuS1Hhwbx4MtsxADRVL8MbY53mUtIpYllbnufUuWi0MrANntIDtpaiqUI+zhZ63apmNqFF+XDZM5SuTntYjeTI+98wyY7j2hty78cREZdzrVms8Rer9kxcZ0+PCAydQk4TbU9p0q2UJa88VEZCP7A9FTiwHILub0M3leFwRX0jfcqLXu/xwdXqy/Uwo0I01QHssUSaKOb97hjWpbY490GX2QpurdAGzE3Jw5ntaZdEMMOYaRGy9zwyePMxRc3pMX5RZgIbEdN8y7g1fs+PXiF70LVYuQWpE9C9dorEfM5cBL1Rsv1NSpBCIPcp+zFItE1ZqHymtQ9ywtDjbw3+gszvDfTzXU8a7ISrMOB7hVNMLPqDrWd9OHrflLg7vKBmmnPrN5tRUaHd1JDJQ1FdqsrO3bHPOels07RywGSuPPdfZ8CEsNztjIPg3zGWRibIJHjB0zFvIKqZ143YavtUj3a0OsvqOI4MK5hvG2pFq/ioNO9/zZuTXqC7FZ+3IMl5KcMXPwTqnJFM5TOfjWpXN5e9Nad9RBwZyVvN/HSmZGVDNnUxNqz5F5aX2aiE/RlguQdtFWCnIRcRRT4WNsW0Q/EKCio2y1NhgnU2/MaXBiq5rZr06FOZGodhfKk8uBtnW6w8ZSwvvUeH8PEC5UjeRrSkt6lUW0Sfo6RGn2jiaay3ZDuz8YpP8QTi6DEASiZ1fOde8KG6WZip+aestGoPdh+OESI35qhCZddf8UaEjwzWSa9TCY5U1PVpmDgE3y3kp4Y6DTdUoEzS3aRUlGPXLSEZscrcFojna20bo9D1nj05l62QA4KjanD4snMYb1v2Klbl5tSAtvI8sENhYll5x7S+R4B1dNJOiqpvCNvUXzVFzIP76r25CVpPpEhFuDYoLjLTLAGvwS4xtNsXGF1kFPZJspvyDmoohgV+hpMW6Yok5BmUdqOPHZqeZq8nZMonOhUeN81MfX9vqu4V31QSHQJCcDSRDuSaGQLJEuyeNjJsV9NyfJ2vFJj3zcHAtGo5XmUemly3qOTFMfWhZfH+umr4skdBYPqmr1RolAOYYWqXKYBiwfQbN4K235ogx1JqMZ5Xu5q1s68Ua3TyqUgrV31vKiYuFbkCfKdNomraPp0mlFNmUcrvaxhYZ2qgnLZYqKNgU2VCwoAZsPu/2vvynob1ZLwr7nSvHQEmPXRGLABY8xueBnZrMestsEGfv1wctuZeOnupK+TtEbTkVoJQQ6cWs6pqq++6nozU0rFmsqVOdPDdLeuwlDsu3EQCRJosOEzgW+rhwAbZQzc3+jE2Zy2MIkgwrjRIpxKMkC7krFxv6l3zCxH6hl1mNtlWanKsIfLGyrgutbv5J7vDWkChhg0sg3Zx55nGo3h+E0ho6uW5YXENgy2W3ZCpXAx7fEHEhvvcHkuSwe1TRO6x9rO13W/Dk1WgmWhsbsaqbi+9Ftz6SPbOKWkAJV2xmSfq7EL2FR32zXRUDkZNWBwg61qrWxTVDoxC7HTsWsGaQorJesqDeaemRIc2jlD2+EszPfFacmKciNOpuXi0HSGoCU6Sxm8Rgo9nLk6g+NJ7UmcqrOyLsx1tYodG5lSM25fS5U1A/vUBWniToFJLfN5w43JwsVbHkZpeRwKm2nLUCBODNEO4SJowONhqTWDA4FsmHjyT6KP4hYgGaPn7UOxYsW5dDyM6zAycdvvqUCZ7IuIgqVIoYPFMQPsk/jglZPSNuFGnYRAWAQet5exZMNELaJalBgweKSWgK/VlYMKIDVWC8tD7G6f5/W+AlyupFt0WDaD4Fu7RVYcs6qg9uIjbcJAVnt4+oCRTKChw/ZWJKzD7fa9UXC2BK9WPneMMhvZhuE+2ccExuz71J5l4ghG1vBV03BRh5VdscXbSff4kbq1MHXL42fSvZXth9zpzaR77aIv0cW2bNUz6d7kJFd75a2ke+9HuJH005lD5wXj9tWkTl+JcLvkdDr/5kMQbp+AMfujIKg09RWC/TFSEH1BBp4JFB+KFPxTulfoy1Fg1JXZvpmgELl0EyPi6oMehCO8etzRZ8AC6VuiEtiSGha3xIGfgAd8CP6PfhitzGAqIxS5ksqfjgfEbll6vks0arJbzPtEMe6BAYPy9F1KF8j3V3K/JFV6xb70qo2WF2gBewF2PhAAf6N0dyH51zD5Yxiu8ycseBo0Ea7Gv9cVONyBoT7gdHHVXPMC+X19siCf7jbCn68+niLsDb3wP+Bv+tH7v9+kXrqYz/ZE3a4MiqJP+Oh2bZiPmsg1urWZeRmDW36ad+o/glAMR/6O/r84zTfq//W56749VGsfFLH5fH74Rl4dz2Db+/O/v64atK/NaHjIMF9XT9nzEj3Ia78o569N7FpTsFv2kk85rY9uIfVcxN+6WGOQ1bc7yjS8Z/1On/r90tv33HskCZcHy/f1fz5emi+Uik8YSuA0iTAUidA4ctkrfI/7Dn8a5I1gFI3gFH1mn340V8X9OO2WW0zkbgVvDsK8Ffsf2rR0rz/3fbpxP95AnrDraAN9UKv9W4PGs3v/ZVzySY1J3+gn4hXhOTO65MzBR1cngLcHKpefcz3x9t1xyj84m65Ge8lcTNqNnKwyx9qtNifwDb89gRh1OZzGni1kXd/2pXwuRdmFoqK/UNILdb+rOL+nreck1Gttvbuaf6vNJ+Q07svya/nk0EufQpPM7/iUz5Th/RuJr5QhcbuPTfbhYIcQqZ2XAYjA87dBCE8m3e1g5E/ICbwz8riU108092dRP+T3/+sPj/PRW9mZ4eDJo3Kf38jpUe19MKYn4dfnN/hJPKwlJH83+HGnSMboj2nwOwkvs4KNfpmsFrA6P2+XkQUnQCY6bF1IMFftU3xZm0qTRLDelAWammnzEJgxrFW5agMO5VIKtTDbLMNidlpu1miU2Ysw2epNtZDVUIFVGmrSHL2TozZFfpTFoCFmz0jOMF1O0Togy91iqyNh5dj7NJqRVe/Tyk7eIYS6GSMLiPDa5MxirM1logno45zEC4lsD7baMPXS4XwV1aw5iNPj1EgPTGk2+wJCUOvDRpkSEMOs427TCvrG6CCIVV2BJcuswzaHyPLdNDlUW5eiZhB6bdnCev/XuYeNZhB67v9sOvGyJ7bKzLqZTcwl4ZJjY2e4zh/482ziEYSi2CrQ2O2Y9hywEvtUK472rlVw81AbZC9T2ctf76mq6EO9jjXLYaoUQv9lx1sfxR6hgiJDre0sxMb4vFSDaFQ6nAXkpjLKUQichDctp8JM1KJcMF+j5Om4A7bOe4DUsXA3t3ld9xamKMp+MD4RieVYWLxE1eH1a5ne912ax1U3JeiEz4RqB8ELsigvViVriropB3PPLFrdOZE7v6xMTSMCWJnVQJCAqpMLTpqC4T/BKOYybwnq0fX6LlmxwbTEpJOgn/pcAkKiosPnb+bCXgaBbq0UAriwm1Mg15zJG1RCoqLJGTu/lZUj4WqFxuzzkzEKGEYG645kQGrCkvVKBs4kcg8gYhd0AKuD0RzklevMBkVpmBVvFWHF9KG5gg5ql27zZW51/gjxxCxxTTYlNppqSMNaULtjXo9rMdttu+GeKOVavfZOeWlD6MGSnW2qvrW4FDRAta2I5UP9JBvzqUj02mHKcFv0GWokUPKG3tns+AjhYCPAIwUyqH/nsjveLfLF0h0iOWYqcUaAJ2rpJdONWacEa9Wu1UmyaR6YCnGwqnN1Ym6mBG0EGp/r8wyzlAo1pIyd1LKEraidSJiGHHtkECmMoytJhRLaMa56RSB5qWV53d+KVkiwE7HamASKEmhsAnDYtiY6Sm00UATVROTBm5i8KcZWouqWg5gUVNNo4iqTMhWdsCGGyyvuGeXk7LZVJQKtRinV7a1GPIQbSurWAiKoMdn5thjHElPzUgk1q/Hgu48JX/SLfUHsdC0bXs9KZmkm9AdBPIrrZLk0No6Y8vgBzqRzIMRrKs80XQ+o2UTEplKBs7Lgp+JWbHRBIabShM3bViPtieyZPT3OBk11FoMmKdJIAybZ2JUOtSI4oCD3Mn3eMgAYOkloEzpyKys1Gpps/ATFgioYe2Y31WmqoRMU3aemGo5384okmJ04kU4WSowJaUVC2E1DM88ooJ46VELr2ZMYNOGKm2JKSuAtb9oaJhaLI4crMUmSnm9OtESUtp7TAEWJsHzF69Z8zY6FWTodNN80yr3vbJyxBiSs3W+9iFz31HIzB1JbTD0irjYrBFcSEoJ1kFqSIOjPrpixZc+QbrbnIYL31OkS3meNIVG8N9EZ9yR4IlG5ex+z5LVEQYkpxb5HQ3+lHqO2WEj8IZ4DsJ4vY0Xv8bLJ91RgaH7KVIt04Rc7eT5z6TSMpEmXLPTlEWJfe7JAzQ4JkJ28mvoJRi8jDw96tegjgtA0Q8NL7aQRnKv6s7QzZQI+qxHjpTVcXYdHhulbZvhcPQ0DmeuSGcsVQoUuRGnmTybuDgMopvFIV2icsUHVjdS4KsLMI2bRky6TEpaNjIetO1GxE2wHJE+VaCpGbtGLI+JDm6b6CDHXw0+6RYANS24YKzLknXhcB90qwpJKLOMKEUxVyyMIkXc23a4YA8/L3HZZe4W7X6dOvWMdtMw2FsgqXcYqYb+OISTZhXjV9cgAQUT1hxM2b2DzxlhmvbpvkxYEsVfinlJzEFWlA83o1lllrQh16x5iCak5CcxTuTkKBl/xirI0fVRMu0MiZUbCqLvUrCykyAyIWzDzSiAmnZdioi7qUUuudZ9dKFWeKBPLOBXCROqCpEgHXedVPV0r2fSEqbw+OEVrAQKlhAvvW2IaS+iCk/K52dnswhBOcFMBM33JZF4QRbCJZBqg75s2yCPqVuzPwAdPnS3k+F3TBtsFV3ZK9x34wDp04LkfBnxARwj5xFym16h7yIfRE3KH3ue6ivo7wQgtYsSJshNAoEIPLGpssuMv4uD6o+l9fj8AfStO4pxq+uiU1w2r2zVL1KMG+b2Piufqdor6+e3MFXf61f2XJfpblsnLR7tGEfwgy/cb8eJd87otcZ15fxBuCMQ26wPk9v0Xt7GqW+LeT4vzX+v6z7zEQ4r7xNVMtX8Y859Lv1fZ24ekAO4nMt7AIPqqoPubOZRf7CbIlWWj5O1WMrqHokOvDeBhaa3RLXf1zbq8i0v8/uSn66JuFkb1T3Irl5Xb/d8LcWMxLxmY78Xa4RL235/mz3/i7hSMH8r41/kw/L6Ev1CAtzMC/5kAH0kG/8glPhc/L7eVO4exjyN/vy+AW1jY/0fNfpT0Cfxnk2bvjPz+KEzy/Yd/39S3hybqf2E11zvPl5vN+Tj5v+O3Rr/cGj57ibG3eiZYWX6uLCBj3x9W7w/xT+enEr4/37+/P93lRIpHCutsLtTTZdB/Hpr42rPc4/PF3i1K2IVSlvXr0y5EjillACMI/j8= \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/diagrams/published/architecture.png b/docs/diagrams/published/architecture.png index 2dec81e9e..3782206fa 100644 Binary files a/docs/diagrams/published/architecture.png and b/docs/diagrams/published/architecture.png differ diff --git a/src/Dfe.PlanTech.Application/Content/Queries/GetPageFromDbQuery.cs b/src/Dfe.PlanTech.Application/Content/Queries/GetPageFromDbQuery.cs index d73dd72ed..fa080876a 100644 --- a/src/Dfe.PlanTech.Application/Content/Queries/GetPageFromDbQuery.cs +++ b/src/Dfe.PlanTech.Application/Content/Queries/GetPageFromDbQuery.cs @@ -46,24 +46,55 @@ public GetPageFromDbQuery(ICmsDbContext db, ILogger logger, private async Task RetrievePageFromDatabase(string slug, CancellationToken cancellationToken) { - var page = await _db.GetPageBySlug(slug, cancellationToken); + var page = await GetPageFromDb(slug, cancellationToken); if (!IsValidPage(page, slug)) { - _logger.LogError("Retrieved page {slug} is invalid", slug); return null; } await LoadPageChildrenFromDatabase(page, cancellationToken); + _logger.LogTrace("Successfully retrieved {page} from DB", slug); + return page; } + private async Task GetPageFromDb(string slug, CancellationToken cancellationToken) + { + try + { + var page = await _db.GetPageBySlug(slug, cancellationToken); + + if (page == null) + { + return null; + } + + page.OrderContents(); + + return page; + } + catch (Exception ex) + { + _logger.LogError(ex, "Error fetching {page} from database", slug); + throw; + } + } + private async Task LoadPageChildrenFromDatabase(PageDbEntity? page, CancellationToken cancellationToken) { - foreach (var query in _getPageChildrenQueries) + try + { + foreach (var query in _getPageChildrenQueries) + { + await query.TryLoadChildren(page!, cancellationToken); + } + } + catch (Exception ex) { - await query.TryLoadChildren(page!, cancellationToken); + _logger.LogError(ex, "Error loading children from database for {page}", page!.Id); + throw; } } diff --git a/src/Dfe.PlanTech.Application/Content/Queries/GetPageQuery.cs b/src/Dfe.PlanTech.Application/Content/Queries/GetPageQuery.cs index a36b99cd3..ed5a69266 100644 --- a/src/Dfe.PlanTech.Application/Content/Queries/GetPageQuery.cs +++ b/src/Dfe.PlanTech.Application/Content/Queries/GetPageQuery.cs @@ -21,7 +21,8 @@ public GetPageQuery(GetPageFromContentfulQuery getPageFromContentfulQuery, GetPa /// Page matching slug public async Task GetPageBySlug(string slug, CancellationToken cancellationToken = default) { - var page = await _getPageFromDbQuery.GetPageBySlug(slug, cancellationToken) ?? await _getPageFromContentfulQuery.GetPageBySlug(slug, cancellationToken); + var page = await _getPageFromDbQuery.GetPageBySlug(slug, cancellationToken) ?? + await _getPageFromContentfulQuery.GetPageBySlug(slug, cancellationToken); return page; } diff --git a/src/Dfe.PlanTech.Application/Content/Queries/GetRichTextsQuery.cs b/src/Dfe.PlanTech.Application/Content/Queries/GetRichTextsQuery.cs index 8f2cf9a66..a44ae1086 100644 --- a/src/Dfe.PlanTech.Application/Content/Queries/GetRichTextsQuery.cs +++ b/src/Dfe.PlanTech.Application/Content/Queries/GetRichTextsQuery.cs @@ -1,20 +1,17 @@ using Dfe.PlanTech.Application.Persistence.Interfaces; using Dfe.PlanTech.Domain.Content.Interfaces; using Dfe.PlanTech.Domain.Content.Models; +using Dfe.PlanTech.Domain.Persistence.Models; using Microsoft.Extensions.Logging; +using System.Linq.Expressions; namespace Dfe.PlanTech.Application.Content.Queries; -public class GetRichTextsQuery : IGetPageChildrenQuery +public class GetRichTextsForPageQuery(ICmsDbContext db, ILogger logger, ContentfulOptions contentfulOptions) : IGetPageChildrenQuery { - private readonly ICmsDbContext _db; - private readonly ILogger _logger; - - public GetRichTextsQuery(ICmsDbContext db, ILogger logger) - { - _db = db; - _logger = logger; - } + private readonly ICmsDbContext _db = db; + private readonly ILogger _logger = logger; + private readonly ContentfulOptions _contentfulOptions = contentfulOptions; /// /// Load RichTextContents for the given page from database @@ -32,7 +29,9 @@ public async Task TryLoadChildren(PageDbEntity page, CancellationToken cancellat if (!hasTextBodyContents) return; - await _db.ToListAsync(_db.RichTextContentsByPageSlug(page.Slug), cancellationToken); + var richTextContentQuery = _db.RichTextContentWithSlugs.Where(PageMatchesSlugAndPublishedOrIsPreview(page)); + + await _db.ToListAsync(richTextContentQuery, cancellationToken); } catch (Exception ex) { @@ -40,4 +39,9 @@ public async Task TryLoadChildren(PageDbEntity page, CancellationToken cancellat throw; } } + + private Expression> PageMatchesSlugAndPublishedOrIsPreview(PageDbEntity page) + { + return content => content.Slug == page.Slug && (!_contentfulOptions.UsePreview || content.Published); + } } \ No newline at end of file diff --git a/src/Dfe.PlanTech.Application/Dfe.PlanTech.Application.csproj b/src/Dfe.PlanTech.Application/Dfe.PlanTech.Application.csproj index b746d3f75..a743029ad 100644 --- a/src/Dfe.PlanTech.Application/Dfe.PlanTech.Application.csproj +++ b/src/Dfe.PlanTech.Application/Dfe.PlanTech.Application.csproj @@ -7,9 +7,9 @@ - + - + diff --git a/src/Dfe.PlanTech.Application/Helpers/QueryServiceSetup.cs b/src/Dfe.PlanTech.Application/Helpers/QueryServiceSetup.cs index 8788d44d5..d4dbd76e9 100644 --- a/src/Dfe.PlanTech.Application/Helpers/QueryServiceSetup.cs +++ b/src/Dfe.PlanTech.Application/Helpers/QueryServiceSetup.cs @@ -29,7 +29,7 @@ public static IServiceCollection AddCQRSServices(this IServiceCollection service services.AddScoped(); services.AddScoped(); services.AddScoped(); - services.AddScoped(); + services.AddScoped(); return services; } diff --git a/src/Dfe.PlanTech.Application/Persistence/Interfaces/ICmsDbContext.cs b/src/Dfe.PlanTech.Application/Persistence/Interfaces/ICmsDbContext.cs index 92383df4a..d2e0c9db8 100644 --- a/src/Dfe.PlanTech.Application/Persistence/Interfaces/ICmsDbContext.cs +++ b/src/Dfe.PlanTech.Application/Persistence/Interfaces/ICmsDbContext.cs @@ -33,6 +33,7 @@ public interface ICmsDbContext public IQueryable RecommendationPages { get; } public IQueryable RichTextContents { get; } + public IQueryable RichTextContentWithSlugs { get; } public IQueryable RichTextDataDbEntity { get; } @@ -49,8 +50,6 @@ public interface ICmsDbContext public Task GetPageBySlug(string slug, CancellationToken cancellationToken = default); - public IQueryable RichTextContentsByPageSlug(string pageSlug); - public Task FirstOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default); public Task> ToListAsync(IQueryable queryable, CancellationToken cancellationToken = default); } \ No newline at end of file diff --git a/src/Dfe.PlanTech.Application/Submissions/Queries/GetSubmissionStatusesQuery.cs b/src/Dfe.PlanTech.Application/Submissions/Queries/GetSubmissionStatusesQuery.cs index 78da613e7..385a54d2d 100644 --- a/src/Dfe.PlanTech.Application/Submissions/Queries/GetSubmissionStatusesQuery.cs +++ b/src/Dfe.PlanTech.Application/Submissions/Queries/GetSubmissionStatusesQuery.cs @@ -19,13 +19,13 @@ public GetSubmissionStatusesQuery(IPlanTechDbContext db, IUser userHelper) } - public IList GetSectionSubmissionStatuses(IEnumerable sections) + public Task> GetSectionSubmissionStatuses(IEnumerable sections) { int establishmentId = _userHelper.GetEstablishmentId().Result; string sectionStringify = string.Join(',', sections.Select(x => x.Sys.Id)); - return _db.GetSectionStatuses(sectionStringify, establishmentId).ToList(); + return _db.ToListAsync(_db.GetSectionStatuses(sectionStringify, establishmentId)); } public async Task GetSectionSubmissionStatusAsync(int establishmentId, diff --git a/src/Dfe.PlanTech.AzureFunctions/Dfe_PlanTech_AzureFunctions.csproj b/src/Dfe.PlanTech.AzureFunctions/Dfe_PlanTech_AzureFunctions.csproj index f1682bb3a..d44525aba 100644 --- a/src/Dfe.PlanTech.AzureFunctions/Dfe_PlanTech_AzureFunctions.csproj +++ b/src/Dfe.PlanTech.AzureFunctions/Dfe_PlanTech_AzureFunctions.csproj @@ -7,16 +7,16 @@ enable - + - + - + - - - - + + + + diff --git a/src/Dfe.PlanTech.AzureFunctions/Functions/QueueReceiver.cs b/src/Dfe.PlanTech.AzureFunctions/Functions/QueueReceiver.cs index 205f5672b..cdfd843e4 100644 --- a/src/Dfe.PlanTech.AzureFunctions/Functions/QueueReceiver.cs +++ b/src/Dfe.PlanTech.AzureFunctions/Functions/QueueReceiver.cs @@ -62,7 +62,7 @@ private async Task ProcessMessage(ServiceBusReceivedMessage message, ServiceBusM { CmsEvent cmsEvent = GetCmsEvent(message.Subject); - if (ShouldDropMessage(cmsEvent)) + if (ShouldIgnoreMessage(cmsEvent)) { await messageActions.CompleteMessageAsync(message, cancellationToken); return; @@ -71,7 +71,7 @@ private async Task ProcessMessage(ServiceBusReceivedMessage message, ServiceBusM ContentComponentDbEntity mapped = MapMessageToEntity(message); ContentComponentDbEntity? existing = await TryGetExistingEntity(mapped, cancellationToken); - if (!IsNewAndValidComponent(mapped, existing)) + if (!IsValidComponent(mapped)) { await messageActions.CompleteMessageAsync(message, cancellationToken); return; @@ -92,56 +92,54 @@ private async Task ProcessMessage(ServiceBusReceivedMessage message, ServiceBusM } } - private bool ShouldDropMessage(CmsEvent cmsEvent) + private bool IsValidComponent(ContentComponentDbEntity mapped) { - if (cmsEvent == CmsEvent.CREATE) - { - Logger.LogInformation("Dropping received event {cmsEvent}", cmsEvent); - return true; - } - - if (ShouldIgnoreMessage(cmsEvent)) - { - Logger.LogInformation("Receieved {event} but UsePreview is {usePreview} - dropping message", cmsEvent, _contentfulOptions.UsePreview); - return true; - } - - return false; - } - - private bool IsNewAndValidComponent(ContentComponentDbEntity mapped, ContentComponentDbEntity? existing) - { - if (existing != null) return true; + string? nullProperties = string.Join(", ", AnyRequiredPropertyIsNull(mapped)); - if (AnyRequiredPropertyIsNull(mapped)) + if (!string.IsNullOrEmpty(nullProperties)) { - Logger.LogInformation("A required property of the component with ID {id} is null, so the message will be dropped!", mapped.Id); + Logger.LogInformation("Content Component with ID {id} is missing the following required properties: {nullProperties}", mapped.Id, nullProperties); return false; } return true; } - private bool AnyRequiredPropertyIsNull(ContentComponentDbEntity entity) - => _db.Model.FindEntityType(entity.GetType())! + private IEnumerable AnyRequiredPropertyIsNull(ContentComponentDbEntity entity) + => _db.Model.FindEntityType(entity.GetType())! .GetProperties() .Where(prop => !prop.IsNullable) .Select(prop => prop.PropertyInfo) .Where(prop => !prop!.CustomAttributes.Any(atr => atr.GetType() == typeof(DontCopyValueAttribute))) - .Where(prop => prop!.GetValue(entity) == null) - .Any(); + .Where(prop => prop!.GetValue(entity) == null); /// /// Checks if the message with the given CmsEvent should be ignored based on certain conditions. /// /// - /// If we are NOT using preview mode (i.e. we are ignoring drafts), and the event is just a save or autosave, - /// then return true. Otherwise return false. + /// If we recieve a create event, we return true. + /// If we are NOT using preview mode (i.e. we are ignoring drafts), and the event is just a save or autosave, then return true. + /// + /// Else, we return false. /// /// /// private bool ShouldIgnoreMessage(CmsEvent cmsEvent) - => (cmsEvent == CmsEvent.SAVE || cmsEvent == CmsEvent.AUTO_SAVE) && !_contentfulOptions.UsePreview; + { + if (cmsEvent == CmsEvent.CREATE) + { + Logger.LogInformation("Dropping received event {cmsEvent}", cmsEvent); + return true; + } + + if ((cmsEvent == CmsEvent.SAVE || cmsEvent == CmsEvent.AUTO_SAVE) && !_contentfulOptions.UsePreview) + { + Logger.LogInformation("Receieved {event} but UsePreview is {usePreview} - dropping message", cmsEvent, _contentfulOptions.UsePreview); + return true; + } + + return false; + } /// /// Retrieves the CmsEvent based on the provided subject. diff --git a/src/Dfe.PlanTech.AzureFunctions/Mappings/JsonToDbMapper.cs b/src/Dfe.PlanTech.AzureFunctions/Mappings/JsonToDbMapper.cs index f7ff77961..62fa9849f 100644 --- a/src/Dfe.PlanTech.AzureFunctions/Mappings/JsonToDbMapper.cs +++ b/src/Dfe.PlanTech.AzureFunctions/Mappings/JsonToDbMapper.cs @@ -33,7 +33,7 @@ public virtual TEntity ToEntity(CmsWebHookPayload payload) } var asJson = JsonSerializer.Serialize(values, JsonOptions); - var serialised = JsonSerializer.Deserialize(asJson, JsonOptions) ?? throw new NullReferenceException("Null returned"); + var serialised = JsonSerializer.Deserialize(asJson, JsonOptions) ?? throw new ArgumentNullException("Null returned"); return serialised; } diff --git a/src/Dfe.PlanTech.AzureFunctions/Mappings/JsonToEntityMappers.cs b/src/Dfe.PlanTech.AzureFunctions/Mappings/JsonToEntityMappers.cs index 55a5bca33..8c9835ef3 100644 --- a/src/Dfe.PlanTech.AzureFunctions/Mappings/JsonToEntityMappers.cs +++ b/src/Dfe.PlanTech.AzureFunctions/Mappings/JsonToEntityMappers.cs @@ -28,9 +28,9 @@ private JsonToDbMapper GetMapperForPayload(CmsWebHookPayload payload) { var contentType = payload.Sys.ContentType.Sys.Id; - return _mappers.FirstOrDefault(mapper => mapper.AcceptsContentType(contentType)) ?? throw new Exception($"Could not find mapper for {contentType}"); + return _mappers.FirstOrDefault(mapper => mapper.AcceptsContentType(contentType)) ?? throw new KeyNotFoundException($"Could not find mapper for {contentType}"); } private CmsWebHookPayload SerialiseToPayload(string requestBody) - => JsonSerializer.Deserialize(requestBody, _jsonSerialiserOptions) ?? throw new Exception($"Could not serialise body to {typeof(CmsWebHookPayload)}. Body was {requestBody}"); + => JsonSerializer.Deserialize(requestBody, _jsonSerialiserOptions) ?? throw new InvalidOperationException($"Could not serialise body to {typeof(CmsWebHookPayload)}. Body was {requestBody}"); } \ No newline at end of file diff --git a/src/Dfe.PlanTech.AzureFunctions/Mappings/PageMapper.cs b/src/Dfe.PlanTech.AzureFunctions/Mappings/PageMapper.cs index b092a06be..2f5d41df5 100644 --- a/src/Dfe.PlanTech.AzureFunctions/Mappings/PageMapper.cs +++ b/src/Dfe.PlanTech.AzureFunctions/Mappings/PageMapper.cs @@ -16,9 +16,15 @@ public PageMapper(CmsDbContext db, ILogger logger, JsonSerializerOpt _db = db; } + /// + /// Create joins for content, and before title content, and map the title ID to the correct expected name. + /// + /// + /// + /// public override Dictionary PerformAdditionalMapping(Dictionary values) { - var id = values["id"]?.ToString() ?? throw new Exception("Not found id"); + var id = values["id"]?.ToString() ?? throw new KeyNotFoundException("Not found id"); values = MoveValueToNewKey(values, "title", "titleId"); @@ -30,18 +36,27 @@ public PageMapper(CmsDbContext db, ILogger logger, JsonSerializerOpt private void UpdateContentIds(Dictionary values, string pageId, string currentKey) { + bool isBeforeTitleContent = currentKey == BeforeTitleContentKey; + if (values.TryGetValue(currentKey, out object? contents) && contents is object[] inners) { - foreach (var inner in inners) + for (var index = 0; index < inners.Length; index++) { - CreatePageContentEntity(inner, pageId, currentKey == BeforeTitleContentKey); + CreatePageContentEntity(inners[index], index, pageId, isBeforeTitleContent); } values.Remove(currentKey); } } - private void CreatePageContentEntity(object inner, string pageId, bool isBeforeTitleContent) + /// + /// Creates the necessary for the relationship + /// + /// The child content ID. + /// Order of the content for the page + /// + /// + private void CreatePageContentEntity(object inner, int order, string pageId, bool isBeforeTitleContent) { if (inner is not string contentId) { @@ -52,6 +67,7 @@ private void CreatePageContentEntity(object inner, string pageId, bool isBeforeT var pageContent = new PageContentDbEntity() { PageId = pageId, + Order = order }; if (isBeforeTitleContent) diff --git a/src/Dfe.PlanTech.AzureFunctions/Mappings/TextBodyMapper.cs b/src/Dfe.PlanTech.AzureFunctions/Mappings/TextBodyMapper.cs index 8778e20e7..40542d9b2 100644 --- a/src/Dfe.PlanTech.AzureFunctions/Mappings/TextBodyMapper.cs +++ b/src/Dfe.PlanTech.AzureFunctions/Mappings/TextBodyMapper.cs @@ -16,12 +16,12 @@ public TextBodyMapper(RichTextContentMapper richTextMapper, ILogger PerformAdditionalMapping(Dictionary values) { - var richText = (values["richText"] ?? throw new Exception($"No rich text value found")) as JsonNode; + var richText = (values["richText"] ?? throw new KeyNotFoundException($"No rich text value found")) as JsonNode; - var deserialised = richText.Deserialize(JsonOptions) ?? throw new Exception($"Could not map to {typeof(RichTextContent)}"); + var deserialised = richText.Deserialize(JsonOptions) ?? throw new InvalidOperationException($"Could not map to {typeof(RichTextContent)}"); values["richText"] = JsonNode.Parse(JsonSerializer.Serialize(_richTextMapper.MapToDbEntity(deserialised), JsonOptions)); return values; } -} \ No newline at end of file +} diff --git a/src/Dfe.PlanTech.DatabaseUpgrader/Dfe.PlanTech.DatabaseUpgrader.csproj b/src/Dfe.PlanTech.DatabaseUpgrader/Dfe.PlanTech.DatabaseUpgrader.csproj index 11207125d..53d8e64ca 100644 --- a/src/Dfe.PlanTech.DatabaseUpgrader/Dfe.PlanTech.DatabaseUpgrader.csproj +++ b/src/Dfe.PlanTech.DatabaseUpgrader/Dfe.PlanTech.DatabaseUpgrader.csproj @@ -12,8 +12,8 @@ - - + + diff --git a/src/Dfe.PlanTech.DatabaseUpgrader/Scripts/2024/20240209_1448_FixSelectAllRichTextContentForPageSlugFunction.sql b/src/Dfe.PlanTech.DatabaseUpgrader/Scripts/2024/20240209_1448_FixSelectAllRichTextContentForPageSlugFunction.sql new file mode 100644 index 000000000..53afb333d --- /dev/null +++ b/src/Dfe.PlanTech.DatabaseUpgrader/Scripts/2024/20240209_1448_FixSelectAllRichTextContentForPageSlugFunction.sql @@ -0,0 +1,39 @@ +ALTER FUNCTION [Contentful].[SelectAllRichTextContentForPageSlug] ( + @PageSlug NVARCHAR(MAX) +) +RETURNS @ReturnTable table(Id BIGINT, [Value] NVARCHAR(MAX), NodeType NVARCHAR(MAX), DataId BIGINT, ParentId BIGINT) +BEGIN + DECLARE @ContentComponentIds TABLE (Id NVARCHAR(MAX)) + DECLARE @RichTextIds TABLE (Id bigint) + + --Get content components for the page + INSERT INTO @ContentComponentIds + SELECT ISNULL(PC.BeforeContentComponentId, PC.ContentComponentId) AS ContentComponentId + FROM [Contentful].[PageContents] PC + LEFT JOIN [Contentful].[Pages] P ON PC.PageId = P.Id + WHERE P.Slug = @PageSlug + + --Get rich text ids for text bodies and warnings + INSERT INTO @RichTextIds + SELECT DISTINCT TB.RichTextId + FROM [Contentful].[TextBodies] AS TB + JOIN @ContentComponentIds AS CC ON TB.Id = CC.Id + UNION + SELECT DISTINCT TB.RichTextId + FROM [Contentful].[Warnings] AS W + LEFT JOIN [Contentful].[TextBodies] AS TB ON W.TextId = TB.ID + JOIN @ContentComponentIds AS CC ON W.Id = CC.Id + + --For each rich text id, execute the SelectAllRichTextContentForParentId function and add to the return table + DECLARE @idColumn BIGINT + + SELECT @idColumn = min(Id) FROM @RichTextIds + + WHILE @idColumn IS NOT NULL + BEGIN + INSERT INTO @ReturnTable SELECT [Id], [Value], [NodeType], [DataId], [ParentId] FROM [Contentful].[SelectAllRichTextContentForParentId](@idColumn) + SELECT @idColumn = min(Id) FROM @RichTextIds WHERE Id > @idColumn + END + + RETURN +END \ No newline at end of file diff --git a/src/Dfe.PlanTech.DatabaseUpgrader/Scripts/2024/20240209_1647_CreateRichTextContentWithPageSlugView.sql b/src/Dfe.PlanTech.DatabaseUpgrader/Scripts/2024/20240209_1647_CreateRichTextContentWithPageSlugView.sql new file mode 100644 index 000000000..9136501a6 --- /dev/null +++ b/src/Dfe.PlanTech.DatabaseUpgrader/Scripts/2024/20240209_1647_CreateRichTextContentWithPageSlugView.sql @@ -0,0 +1,77 @@ +CREATE +OR ALTER VIEW [Contentful].[RichTextContentsBySlug] AS ( + SELECT + [Slug], + [Id], + [Value], + [NodeType], + [DataId], + [ParentId], + [Published], + [Archived], + [Deleted] + FROM + ( + SELECT + [RichTextId], + [Slug], + [Archived], + [Deleted], + [Published] + FROM + ( + --- Get RichTextIds for all text bodies and warnings + SELECT + [RichTextId], + [Id] AS [ContentId] + FROM + [Contentful].[TextBodies] AS TB + UNION + SELECT + [RichTextId], + [TB].[Id] as [ContentId] + FROM + [Contentful].[Warnings] AS W + LEFT JOIN [Contentful].[TextBodies] AS TB ON [W].[TextId] = [TB].[Id] + ) AS RichTexts + LEFT JOIN --Get all contents for a page + ( + SELECT + MAX([Slug]) AS [Slug], + [ContentId] + FROM + ( + SELECT + ISNULL( + [BeforeContentComponentId], + [ContentComponentId] + ) AS [ContentId], + [P].[Slug] + FROM + [Contentful].[PageContents] PC + LEFT JOIN [Contentful].[Pages] P ON [PC].[PageId] = [P].[Id] + ) AS PC + GROUP BY + [PC].[ContentId] + ) AS Contents ON [Contents].[ContentId] = [RichTexts].[ContentId] + LEFT JOIN( + SELECT + [Id], + [Archived], + [Published], + [DELETED] + FROM + [Contentful].[ContentComponents] + ) AS CC ON [CC].[Id] = [RichTexts].[ContentId] + ) AS RichTextContents + OUTER APPLY ( + SELECT + [Id], + [Value], + [NodeType], + [DataId], + [ParentId] + FROM + [Contentful].[SelectAllRichTextContentForParentId]([RichTextContents].[RichTextId]) + ) AS RichTextContentsWithSlug +) \ No newline at end of file diff --git a/src/Dfe.PlanTech.DatabaseUpgrader/Scripts/2024/20240219_1407_FixWarningComponent.sql b/src/Dfe.PlanTech.DatabaseUpgrader/Scripts/2024/20240219_1407_FixWarningComponent.sql new file mode 100644 index 000000000..d1049d986 --- /dev/null +++ b/src/Dfe.PlanTech.DatabaseUpgrader/Scripts/2024/20240219_1407_FixWarningComponent.sql @@ -0,0 +1,71 @@ +CREATE +OR ALTER VIEW [Contentful].[RichTextContentsBySlug] AS ( + SELECT + [Slug], + [Id], + [Value], + [NodeType], + [DataId], + [ParentId], + [Published], + [Archived], + [Deleted] + FROM + ( + SELECT + [RichTextId], + [Slug], + [Archived], + [Deleted], + [Published] + FROM + ( + --- Get RichTextIds for all text bodies and warnings + SELECT + [RichTextId], + ISNULL([Warning].[Id], [TB].[Id]) AS ContentId + FROM + [Contentful].[TextBodies] AS TB + LEFT JOIN [Contentful].Warnings AS Warning ON [Warning].[TextId] = [TB].[Id] + ) AS RichTexts + LEFT JOIN --Get all contents for a page + ( + SELECT + MAX([Slug]) AS [Slug], + [ContentId] + FROM + ( + SELECT + ISNULL( + [BeforeContentComponentId], + [ContentComponentId] + ) AS [ContentId], + [P].[Slug] + FROM + [Contentful].[PageContents] PC + LEFT JOIN [Contentful].[Pages] P ON [PC].[PageId] = [P].[Id] + ) AS PC + GROUP BY + [PC].[ContentId] + ) AS Contents ON [Contents].[ContentId] = [RichTexts].[ContentId] + LEFT JOIN( + SELECT + [Id], + [Archived], + [Published], + [DELETED] + FROM + [Contentful].[ContentComponents] + ) AS CC ON [CC].[Id] = [RichTexts].[ContentId] + ) AS RichTextContents + OUTER APPLY ( + SELECT + [Id], + [Value], + [NodeType], + [DataId], + [ParentId] + FROM + [Contentful].[SelectAllRichTextContentForParentId]([RichTextContents].[RichTextId]) + ) AS RichTextContentsWithSlug +) \ No newline at end of file diff --git a/src/Dfe.PlanTech.DatabaseUpgrader/Scripts/2024/20240229_1115_AddOrderColumnToContentComponentTable.sql b/src/Dfe.PlanTech.DatabaseUpgrader/Scripts/2024/20240229_1115_AddOrderColumnToContentComponentTable.sql new file mode 100644 index 000000000..3c5d39ab2 --- /dev/null +++ b/src/Dfe.PlanTech.DatabaseUpgrader/Scripts/2024/20240229_1115_AddOrderColumnToContentComponentTable.sql @@ -0,0 +1,2 @@ +ALTER TABLE Contentful.PageContents +ADD [Order] int \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Content/Interfaces/IAccordion.cs b/src/Dfe.PlanTech.Domain/Content/Interfaces/IAccordion.cs new file mode 100644 index 000000000..fd9f56f5d --- /dev/null +++ b/src/Dfe.PlanTech.Domain/Content/Interfaces/IAccordion.cs @@ -0,0 +1,8 @@ +namespace Dfe.PlanTech.Domain.Content.Interfaces; + +public interface IAccordion +{ + public int Order { get; set; } + public string Title { get; set; } + public string Heading { get; set; } +} \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Content/Models/Accordion.cs b/src/Dfe.PlanTech.Domain/Content/Models/Accordion.cs new file mode 100644 index 000000000..dd1f9ae56 --- /dev/null +++ b/src/Dfe.PlanTech.Domain/Content/Models/Accordion.cs @@ -0,0 +1,11 @@ +using Dfe.PlanTech.Domain.Content.Interfaces; + +namespace Dfe.PlanTech.Domain.Content.Models; + +public class Accordion : IAccordion +{ + public int Order { get; set; } + public string Title { get; set; } + + public string Heading { get; set; } +} \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Content/Models/ContentComponentDbEntity.cs b/src/Dfe.PlanTech.Domain/Content/Models/ContentComponentDbEntity.cs index 894839f0b..31ce7f5ac 100644 --- a/src/Dfe.PlanTech.Domain/Content/Models/ContentComponentDbEntity.cs +++ b/src/Dfe.PlanTech.Domain/Content/Models/ContentComponentDbEntity.cs @@ -17,5 +17,16 @@ public abstract class ContentComponentDbEntity : IContentComponentDbEntity public List BeforeTitleContentPages { get; set; } = []; + /// + /// Joins for + /// + public List BeforeTitleContentPagesJoins { get; set; } = []; + public List ContentPages { get; set; } = []; + + /// + /// Joins for + /// + public List ContentPagesJoins { get; set; } = []; + } \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Content/Models/Page.cs b/src/Dfe.PlanTech.Domain/Content/Models/Page.cs index 55f5f5c8a..84df09075 100644 --- a/src/Dfe.PlanTech.Domain/Content/Models/Page.cs +++ b/src/Dfe.PlanTech.Domain/Content/Models/Page.cs @@ -20,11 +20,11 @@ public class Page : ContentComponent, IPageContent public string? SectionTitle { get; set; } - public List BeforeTitleContent { get; init; } = new(); + public List BeforeTitleContent { get; init; } = []; public Title? Title { get; init; } public string? OrganisationName { get; set; } - public List Content { get; init; } = new(); + public List Content { get; init; } = []; } diff --git a/src/Dfe.PlanTech.Domain/Content/Models/PageContentDbEntity.cs b/src/Dfe.PlanTech.Domain/Content/Models/PageContentDbEntity.cs index 331116911..4c42f7f78 100644 --- a/src/Dfe.PlanTech.Domain/Content/Models/PageContentDbEntity.cs +++ b/src/Dfe.PlanTech.Domain/Content/Models/PageContentDbEntity.cs @@ -17,4 +17,9 @@ public class PageContentDbEntity public string? BeforeContentComponentId { get; set; } public ContentComponentDbEntity? BeforeContentComponent { get; set; } + + /// + /// What order the component should be in in its respective section (e.g. before/after) + /// + public int Order { get; set; } } diff --git a/src/Dfe.PlanTech.Domain/Content/Models/PageDbEntity.cs b/src/Dfe.PlanTech.Domain/Content/Models/PageDbEntity.cs index 2b56666ad..3dd9d6fdf 100644 --- a/src/Dfe.PlanTech.Domain/Content/Models/PageDbEntity.cs +++ b/src/Dfe.PlanTech.Domain/Content/Models/PageDbEntity.cs @@ -1,3 +1,4 @@ +using System.ComponentModel.DataAnnotations.Schema; using Dfe.PlanTech.Domain.Content.Interfaces; using Dfe.PlanTech.Domain.Questionnaire.Models; @@ -19,16 +20,38 @@ public class PageDbEntity : ContentComponentDbEntity, IPage BeforeTitleContent { get; set; } = new(); + public List BeforeTitleContent { get; set; } = []; public TitleDbEntity? Title { get; set; } public string? TitleId { get; set; } - public List Content { get; set; } = new(); + public List Content { get; set; } = []; public RecommendationPageDbEntity? RecommendationPage { get; set; } public SectionDbEntity? Section { get; set; } + /// + /// Combined joins for and + /// + public List AllPageContents { get; set; } = []; + + public void OrderContents() + { + BeforeTitleContent = OrderContents(BeforeTitleContent, pageContent => pageContent.BeforeContentComponentId).ToList(); + Content = OrderContents(Content, pageContent => pageContent.ContentComponentId).ToList(); + } + + private IEnumerable OrderContents(List contents, Func idSelector) + => contents.Join(AllPageContents, + content => content.Id, + idSelector, + (content, pageContent) => new + { + content, + order = pageContent.Order + }) + .OrderBy(content => content.order) + .Select(content => content.content); } \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Content/Models/RichTextContentDbEntity.cs b/src/Dfe.PlanTech.Domain/Content/Models/RichTextContentDbEntity.cs index 202636224..c19016a22 100644 --- a/src/Dfe.PlanTech.Domain/Content/Models/RichTextContentDbEntity.cs +++ b/src/Dfe.PlanTech.Domain/Content/Models/RichTextContentDbEntity.cs @@ -3,7 +3,6 @@ using System.ComponentModel.DataAnnotations.Schema; namespace Dfe.PlanTech.Domain.Content.Models; - /// /// Content for a 'RichText' field in Contentful /// @@ -20,16 +19,17 @@ public class RichTextContentDbEntity : IRichTextContent Marks { get; set; } = new(); + public List Marks { get; set; } = []; /// /// Children /// - public List Content { get; set; } = new(); + public List Content { get; set; } = []; public RichTextContentDbEntity? Parent { get; set; } public long? ParentId { get; set; } public ComponentDropDownDbEntity? DropDown { get; set; } + } \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Content/Models/RichTextContentWithSlugDbEntity.cs b/src/Dfe.PlanTech.Domain/Content/Models/RichTextContentWithSlugDbEntity.cs new file mode 100644 index 000000000..19cb19829 --- /dev/null +++ b/src/Dfe.PlanTech.Domain/Content/Models/RichTextContentWithSlugDbEntity.cs @@ -0,0 +1,20 @@ +namespace Dfe.PlanTech.Domain.Content.Models; + + +/// +/// Represents a rich text content entity with the corresponding slug for the page that it is loaded on +/// +/// +/// Is loaded by a view +/// +public class RichTextContentWithSlugDbEntity : RichTextContentDbEntity +{ + //Loaded from page that the parent entity (e.g. TextBodyDbEntity) belongs to + public string Slug { get; set; } = null!; + + //Loaded from the parent entity + public bool Archived { get; set; } + public bool Deleted { get; set; } + public bool Published { get; set; } + +} diff --git a/src/Dfe.PlanTech.Domain/Content/Models/WarningComponentDbEntity.cs b/src/Dfe.PlanTech.Domain/Content/Models/WarningComponentDbEntity.cs index 3abc5c9d6..e6c972f7a 100644 --- a/src/Dfe.PlanTech.Domain/Content/Models/WarningComponentDbEntity.cs +++ b/src/Dfe.PlanTech.Domain/Content/Models/WarningComponentDbEntity.cs @@ -20,4 +20,9 @@ public RichTextContentDbEntity RichText [NotMapped] [DontCopyValue] public long RichTextId => Text.RichTextId; +} + +public class RichTextContentWithPageSlug +{ + } \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Interfaces/IGetSubmissionStatusesQuery.cs b/src/Dfe.PlanTech.Domain/Interfaces/IGetSubmissionStatusesQuery.cs index 5d5aa1c49..f3510a379 100644 --- a/src/Dfe.PlanTech.Domain/Interfaces/IGetSubmissionStatusesQuery.cs +++ b/src/Dfe.PlanTech.Domain/Interfaces/IGetSubmissionStatusesQuery.cs @@ -5,7 +5,7 @@ namespace Dfe.PlanTech.Domain.Interfaces; public interface IGetSubmissionStatusesQuery { - IList GetSectionSubmissionStatuses(IEnumerable sections); + Task> GetSectionSubmissionStatuses(IEnumerable sections); Task GetSectionSubmissionStatusAsync(int establishmentId, ISectionComponent section, diff --git a/src/Dfe.PlanTech.Domain/Questionnaire/Interfaces/IRecommendationChunk.cs b/src/Dfe.PlanTech.Domain/Questionnaire/Interfaces/IRecommendationChunk.cs new file mode 100644 index 000000000..cac3dbc51 --- /dev/null +++ b/src/Dfe.PlanTech.Domain/Questionnaire/Interfaces/IRecommendationChunk.cs @@ -0,0 +1,20 @@ +using Dfe.PlanTech.Domain.Content.Interfaces; + +namespace Dfe.PlanTech.Domain.Questionnaire.Interfaces; + +public interface IRecommendationChunk +{ + public string Title { get; } +} + +public interface IRecommendationChunk : IRecommendationChunk +where THeader : IHeader +where TContentComponent : IContentComponent +where TAnswer : IAnswer +{ + public THeader Header { get; } + + public List Content { get; } + + public List Answers { get; } +} \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Questionnaire/Interfaces/IRecommendationIntro.cs b/src/Dfe.PlanTech.Domain/Questionnaire/Interfaces/IRecommendationIntro.cs new file mode 100644 index 000000000..7bb2a1c63 --- /dev/null +++ b/src/Dfe.PlanTech.Domain/Questionnaire/Interfaces/IRecommendationIntro.cs @@ -0,0 +1,17 @@ +using Dfe.PlanTech.Domain.Content.Interfaces; + +namespace Dfe.PlanTech.Domain.Questionnaire.Interfaces; + +public interface IRecommendationIntro +{ + public string Maturity { get; } +} + +public interface IRecommendationIntro : IRecommendationIntro +where THeader : IHeader +where TContentComponent : IContentComponent +{ + public THeader Header { get; } + + public List Content { get; } +} \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Questionnaire/Interfaces/IRecommendationSection.cs b/src/Dfe.PlanTech.Domain/Questionnaire/Interfaces/IRecommendationSection.cs new file mode 100644 index 000000000..e0956b468 --- /dev/null +++ b/src/Dfe.PlanTech.Domain/Questionnaire/Interfaces/IRecommendationSection.cs @@ -0,0 +1,15 @@ +using Dfe.PlanTech.Domain.Content.Models; +using Dfe.PlanTech.Domain.Questionnaire.Models; + +namespace Dfe.PlanTech.Domain.Questionnaire.Interfaces; + +public interface IRecommendationSection { } + +public interface IRecommendationSection : IRecommendationSection +where TAnswer : IAnswer +where TRecommendationChunk : IRecommendationChunk +{ + public List Answers { get; } + + public List Chunks { get; } +} \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Questionnaire/Interfaces/ISubTopicRecommendation.cs b/src/Dfe.PlanTech.Domain/Questionnaire/Interfaces/ISubTopicRecommendation.cs new file mode 100644 index 000000000..e3a8e4db9 --- /dev/null +++ b/src/Dfe.PlanTech.Domain/Questionnaire/Interfaces/ISubTopicRecommendation.cs @@ -0,0 +1,17 @@ +using Dfe.PlanTech.Domain.Questionnaire.Models; + +namespace Dfe.PlanTech.Domain.Questionnaire.Interfaces; + +public interface ISubTopicRecommendation { } + +public interface ISubTopicRecommendation : ISubTopicRecommendation +where TRecommendationIntro : IRecommendationIntro +where TRecommendationSection : IRecommendationSection +where TSection : ISection +{ + public List Intros { get; } + + public TRecommendationSection Section { get; } + + public TSection Subtopic { get; } +} \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Questionnaire/Models/Category.cs b/src/Dfe.PlanTech.Domain/Questionnaire/Models/Category.cs index ed929b91d..994678373 100644 --- a/src/Dfe.PlanTech.Domain/Questionnaire/Models/Category.cs +++ b/src/Dfe.PlanTech.Domain/Questionnaire/Models/Category.cs @@ -8,7 +8,7 @@ public class Category : ContentComponent, ICategoryComponent { public Header Header { get; set; } = null!; public List
Sections { get; set; } = new(); - public IList SectionStatuses { get; set; } = new List(); + public IList SectionStatuses { get; set; } = []; public int Completed { get; set; } public bool RetrievalError { get; set; } } \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Questionnaire/Models/RecommendationChunk.cs b/src/Dfe.PlanTech.Domain/Questionnaire/Models/RecommendationChunk.cs new file mode 100644 index 000000000..ce7e4e41a --- /dev/null +++ b/src/Dfe.PlanTech.Domain/Questionnaire/Models/RecommendationChunk.cs @@ -0,0 +1,15 @@ +using Dfe.PlanTech.Domain.Content.Models; +using Dfe.PlanTech.Domain.Questionnaire.Interfaces; + +namespace Dfe.PlanTech.Domain.Questionnaire.Models; + +public class RecommendationChunk : ContentComponent, IRecommendationChunk +{ + public string Title { get; init; } = null!; + + public Header Header { get; init; } = null!; + + public List Content { get; init; } = []; + + public List Answers { get; init; } = []; +} diff --git a/src/Dfe.PlanTech.Domain/Questionnaire/Models/RecommendationIntro.cs b/src/Dfe.PlanTech.Domain/Questionnaire/Models/RecommendationIntro.cs new file mode 100644 index 000000000..ea7fbc9d0 --- /dev/null +++ b/src/Dfe.PlanTech.Domain/Questionnaire/Models/RecommendationIntro.cs @@ -0,0 +1,13 @@ +using Dfe.PlanTech.Domain.Content.Models; +using Dfe.PlanTech.Domain.Questionnaire.Interfaces; + +namespace Dfe.PlanTech.Domain.Questionnaire.Models; + +public class RecommendationIntro : ContentComponent, IRecommendationIntro +{ + public Header Header { get; init; } = null!; + + public string Maturity { get; init; } = null!; + + public List Content { get; init; } = []; +} \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Questionnaire/Models/RecommendationSection.cs b/src/Dfe.PlanTech.Domain/Questionnaire/Models/RecommendationSection.cs new file mode 100644 index 000000000..836dead21 --- /dev/null +++ b/src/Dfe.PlanTech.Domain/Questionnaire/Models/RecommendationSection.cs @@ -0,0 +1,11 @@ +using Dfe.PlanTech.Domain.Content.Models; +using Dfe.PlanTech.Domain.Questionnaire.Interfaces; + +namespace Dfe.PlanTech.Domain.Questionnaire.Models; + +public class RecommendationSection : ContentComponent, IRecommendationSection +{ + public List Answers { get; init; } = []; + + public List Chunks { get; init; } = []; +} \ No newline at end of file diff --git a/src/Dfe.PlanTech.Domain/Questionnaire/Models/SubTopicRecommendation.cs b/src/Dfe.PlanTech.Domain/Questionnaire/Models/SubTopicRecommendation.cs new file mode 100644 index 000000000..9aec58b60 --- /dev/null +++ b/src/Dfe.PlanTech.Domain/Questionnaire/Models/SubTopicRecommendation.cs @@ -0,0 +1,13 @@ +using Dfe.PlanTech.Domain.Content.Models; +using Dfe.PlanTech.Domain.Questionnaire.Interfaces; + +namespace Dfe.PlanTech.Domain.Questionnaire.Models; + +public class SubTopicRecommendation : ContentComponent, ISubTopicRecommendation +{ + public List Intros { get; init; } = []; + + public RecommendationSection Section { get; init; } = null!; + + public Section Subtopic { get; init; } = null!; +} \ No newline at end of file diff --git a/src/Dfe.PlanTech.Infrastructure.Contentful/Helpers/GetEntitiesException.cs b/src/Dfe.PlanTech.Infrastructure.Contentful/Helpers/GetEntitiesException.cs index 0dfd3812b..0f9f08f13 100644 --- a/src/Dfe.PlanTech.Infrastructure.Contentful/Helpers/GetEntitiesException.cs +++ b/src/Dfe.PlanTech.Infrastructure.Contentful/Helpers/GetEntitiesException.cs @@ -3,6 +3,10 @@ namespace Dfe.PlanTech.Infrastructure.Contentful.Helpers; [Serializable] -public class GetEntitiesException(string? message) : Exception(message), ISerializable +public class GetEntitiesException(string? message) : Exception(message) { + + protected GetEntitiesException(SerializationInfo info, StreamingContext context) : this(null) + { + } } \ No newline at end of file diff --git a/src/Dfe.PlanTech.Infrastructure.Contentful/Persistence/QueryBuilders.cs b/src/Dfe.PlanTech.Infrastructure.Contentful/Persistence/QueryBuilders.cs index d9f6fdcfa..b4b660fbd 100644 --- a/src/Dfe.PlanTech.Infrastructure.Contentful/Persistence/QueryBuilders.cs +++ b/src/Dfe.PlanTech.Infrastructure.Contentful/Persistence/QueryBuilders.cs @@ -96,7 +96,7 @@ public static List> QueryStringValues(this Query { var fieldInfo = queryBuilder.GetType().GetField(QueryBuilderStringValuesFieldName, BindingFlags.NonPublic | BindingFlags.Instance) ?? throw new MissingFieldException($"Couldn't find field {QueryBuilderStringValuesFieldName}"); - var value = fieldInfo.GetValue(queryBuilder) ?? throw new NullReferenceException($"{QueryBuilderStringValuesFieldName} is null in QueryBuilder"); + var value = fieldInfo.GetValue(queryBuilder) ?? throw new ArgumentNullException($"{QueryBuilderStringValuesFieldName} is null in QueryBuilder"); return value is List> list ? list : throw new InvalidCastException($"Expected {value} to be {typeof(List>)} but is actually {value!.GetType()}"); } diff --git a/src/Dfe.PlanTech.Infrastructure.Data/CmsDbContext.cs b/src/Dfe.PlanTech.Infrastructure.Data/CmsDbContext.cs index 5a30dcc4b..def379ab7 100644 --- a/src/Dfe.PlanTech.Infrastructure.Data/CmsDbContext.cs +++ b/src/Dfe.PlanTech.Infrastructure.Data/CmsDbContext.cs @@ -26,6 +26,7 @@ public class CmsDbContext : DbContext, ICmsDbContext public DbSet Categories { get; set; } public DbSet ComponentDropDowns { get; set; } + public DbSet ContentComponents { get; set; } public DbSet Headers { get; set; } @@ -42,6 +43,8 @@ public class CmsDbContext : DbContext, ICmsDbContext public DbSet RecommendationPages { get; set; } public DbSet RichTextContents { get; set; } + public DbSet RichTextContentWithSlugs { get; set; } + public DbSet RichTextDataDbEntity { get; set; } public DbSet RichTextMarkDbEntity { get; set; } @@ -67,6 +70,9 @@ public class CmsDbContext : DbContext, ICmsDbContext IQueryable ICmsDbContext.Questions => Questions; IQueryable ICmsDbContext.RecommendationPages => RecommendationPages; IQueryable ICmsDbContext.RichTextContents => RichTextContents; + IQueryable ICmsDbContext.RichTextContentWithSlugs => RichTextContentWithSlugs + .Include(rt => rt.Data) + .Include(rt => rt.Marks); IQueryable ICmsDbContext.RichTextDataDbEntity => RichTextDataDbEntity; IQueryable ICmsDbContext.RichTextMarkDbEntity => RichTextMarkDbEntity; IQueryable ICmsDbContext.Sections => Sections; @@ -132,11 +138,11 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) modelBuilder.Entity(entity => { entity.HasMany(page => page.BeforeTitleContent) - .WithMany(c => c.BeforeTitleContentPages) - .UsingEntity( - left => left.HasOne(pageContent => pageContent.BeforeContentComponent).WithMany().HasForeignKey("BeforeContentComponentId").OnDelete(DeleteBehavior.Restrict), - right => right.HasOne(pageContent => pageContent.Page).WithMany().HasForeignKey("PageId").OnDelete(DeleteBehavior.Restrict) - ); + .WithMany(c => c.BeforeTitleContentPages) + .UsingEntity( + left => left.HasOne(pageContent => pageContent.BeforeContentComponent).WithMany().HasForeignKey("BeforeContentComponentId").OnDelete(DeleteBehavior.Restrict), + right => right.HasOne(pageContent => pageContent.Page).WithMany().HasForeignKey("PageId").OnDelete(DeleteBehavior.Restrict) + ); entity.HasMany(page => page.Content) .WithMany(c => c.ContentPages) @@ -150,6 +156,15 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) entity.ToTable("Pages", Schema); }); + modelBuilder.Entity(entity => + { + entity.HasOne(pc => pc.BeforeContentComponent).WithMany(c => c.BeforeTitleContentPagesJoins); + + entity.HasOne(pc => pc.ContentComponent).WithMany(c => c.ContentPagesJoins); + + entity.HasOne(pc => pc.Page).WithMany(p => p.AllPageContents); + }); + modelBuilder.Entity().ToTable("Questions", Schema); modelBuilder.Entity(entity => @@ -161,11 +176,14 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) modelBuilder.Entity(entity => { - entity.ToTable("RichTextContents", Schema); - entity.Navigation(rt => rt.Marks).AutoInclude(); - entity.Navigation(rt => rt.Data).AutoInclude(); }); + modelBuilder.Entity(entity => + { + entity.ToView("RichTextContentsBySlug"); + }); + + modelBuilder.Entity(entity => { entity.HasOne(section => section.InterstitialPage) @@ -184,7 +202,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) modelBuilder.Entity(entity => { - entity.Navigation(tb => tb.RichText).AutoInclude(); }); modelBuilder.Entity(entity => @@ -210,17 +227,12 @@ private Expression> ShouldShowEntity() public Task GetPageBySlug(string slug, CancellationToken cancellationToken = default) => Pages.Include(page => page.BeforeTitleContent) - .Include(page => page.Content) - .Include(page => page.Title) - .AsSplitQuery() - .FirstOrDefaultAsync(page => page.Slug == slug, cancellationToken); - - public IQueryable RichTextContentsByPageSlug(string pageSlug) - => RichTextContents.FromSql($"SELECT * FROM [Contentful].[SelectAllRichTextContentForPageSlug]({pageSlug})"); + .Include(page => page.Content) + .Include(page => page.Title) + .AsSplitQuery() + .FirstOrDefaultAsync(page => page.Slug == slug, cancellationToken); - public Task> ToListAsync(IQueryable queryable, CancellationToken cancellationToken = default) -=> queryable.ToListAsync(cancellationToken: cancellationToken); + public Task> ToListAsync(IQueryable queryable, CancellationToken cancellationToken = default) => queryable.ToListAsync(cancellationToken: cancellationToken); - public Task FirstOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default) - => queryable.FirstOrDefaultAsync(cancellationToken); + public Task FirstOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default) => queryable.FirstOrDefaultAsync(cancellationToken); } \ No newline at end of file diff --git a/src/Dfe.PlanTech.Infrastructure.Data/Dfe.PlanTech.Infrastructure.Data.csproj b/src/Dfe.PlanTech.Infrastructure.Data/Dfe.PlanTech.Infrastructure.Data.csproj index d0a733309..609a0061f 100644 --- a/src/Dfe.PlanTech.Infrastructure.Data/Dfe.PlanTech.Infrastructure.Data.csproj +++ b/src/Dfe.PlanTech.Infrastructure.Data/Dfe.PlanTech.Infrastructure.Data.csproj @@ -8,11 +8,10 @@ - - - - + + + + diff --git a/src/Dfe.PlanTech.Infrastructure.SignIn/Dfe.PlanTech.Infrastructure.SignIn.csproj b/src/Dfe.PlanTech.Infrastructure.SignIn/Dfe.PlanTech.Infrastructure.SignIn.csproj index 9e646cb04..f02b9a1b8 100644 --- a/src/Dfe.PlanTech.Infrastructure.SignIn/Dfe.PlanTech.Infrastructure.SignIn.csproj +++ b/src/Dfe.PlanTech.Infrastructure.SignIn/Dfe.PlanTech.Infrastructure.SignIn.csproj @@ -7,8 +7,8 @@ - - + + diff --git a/src/Dfe.PlanTech.Web.Node/esbuild.config.js b/src/Dfe.PlanTech.Web.Node/esbuild.config.js index 3512e4744..a6e42b697 100644 --- a/src/Dfe.PlanTech.Web.Node/esbuild.config.js +++ b/src/Dfe.PlanTech.Web.Node/esbuild.config.js @@ -1,59 +1,102 @@ -import * as esbuild from 'esbuild'; -import { sassPlugin } from 'esbuild-sass-plugin'; -import { cpSync, readdirSync } from 'fs'; +import * as esbuild from "esbuild"; +import { sassPlugin } from "esbuild-sass-plugin"; +import { copyFileSync, cpSync, readdirSync } from "fs"; +import { parse } from "path"; -//Build JS +//Build main JS await esbuild.build({ - entryPoints: ['scripts/app.js'], + entryPoints: ["scripts/app.js"], bundle: true, minify: true, sourcemap: true, - target: ['chrome58', 'firefox57', 'safari11', 'edge16'], - outfile: 'out/js/app.js', -}) + outfile: "out/js/app.js", +}); + +//Build extra JS +const jsFilePaths = [ + "./node_modules/@govuk-prototype-kit/step-by-step/javascripts/step-by-step-navigation.js", + "./node_modules/@govuk-prototype-kit/step-by-step/javascripts/step-by-step-polyfills.js", +]; + +const jsEntryPoints = Object.fromEntries( + new Map(jsFilePaths.map((path) => [parse(path).name, path])) +); + +await esbuild.build({ + entryPoints: jsEntryPoints, + bundle: true, + minify: true, + sourcemap: true, + outdir: "out/js/", +}); -//Builds SASS await esbuild.build({ - entryPoints: ['styles/scss/application.scss'], + entryPoints: ["styles/scss/application.scss"], bundle: true, minify: true, sourcemap: true, - target: ['chrome58', 'firefox57', 'safari11', 'edge16'], - external: ['/assets/*'], - plugins: [sassPlugin({ - loader: { ".woff2": "file", ".png": "file" }, - })], - outfile: 'out/css/application.css' + target: ["chrome58", "firefox57", "safari11", "edge16"], + external: ["/assets/*"], + plugins: [ + sassPlugin({ + loader: { ".woff2": "file", ".png": "file" }, + }), + ], + outfile: "out/css/application.css", +}); + +await esbuild.build({ + entryPoints: ["styles/scss/step-by-step.scss"], + bundle: true, + minify: true, + sourcemap: true, + target: ["chrome58", "firefox57", "safari11", "edge16"], + external: ["/assets/*"], + plugins: [ + sassPlugin({ + loader: { ".woff2": "file", ".png": "file" }, + }), + ], + outfile: "out/css/step-by-step.css", }); //Copy assets //DFE const dfeDir = "./node_modules/dfe-frontend-alpha/packages/assets"; -readdirSync(dfeDir).forEach(file => { +readdirSync(dfeDir).forEach((file) => { if (file.indexOf(".png") == -1) { return; } - cpSync(dfeDir + "/" + file, "./out/assets/images/" + file, { overwrite: true }); + cpSync(dfeDir + "/" + file, "./out/assets/images/" + file, { + overwrite: true, + }); }); //GOVUK -const govukDir = "./node_modules/govuk-frontend/govuk/assets/"; +const govukDir = "./node_modules/govuk-frontend/dist/govuk/assets/"; const targetFolders = ["images", "fonts"]; const ignoreFiles = ["favicon.ico"]; for (const folder of targetFolders) { const path = govukDir + folder; - readdirSync(path).forEach(file => { - if (ignoreFiles.some(ignoreFile => ignoreFile == file)) { + readdirSync(path).forEach((file) => { + if (ignoreFiles.some((ignoreFile) => ignoreFile == file)) { return; } - cpSync(`${path}/${file}`, `./out/assets/${folder}/${file}`, { overwrite: true }); - }) + cpSync(`${path}/${file}`, `./out/assets/${folder}/${file}`, { + overwrite: true, + }); + }); } +copyFileSync( + "./node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js", + "./out/js/govuk-frontend.min.js" +); + //Copy to Dfe.PlanTech.Web const targetDir = "../Dfe.PlanTech.Web/wwwroot"; const folders = ["css", "assets", "js"]; @@ -63,4 +106,3 @@ for (const folder of folders) { cpSync(path, `${targetDir}/${folder}`, { recursive: true, overwrite: true }); } - diff --git a/src/Dfe.PlanTech.Web.Node/package-lock.json b/src/Dfe.PlanTech.Web.Node/package-lock.json index bdb68d335..3e41c0b19 100644 --- a/src/Dfe.PlanTech.Web.Node/package-lock.json +++ b/src/Dfe.PlanTech.Web.Node/package-lock.json @@ -9,11 +9,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dfe-frontend-alpha": "^0.1.8", + "@govuk-prototype-kit/step-by-step": "^2.2.2", + "dfe-frontend-alpha": "^1.0.1", "esbuild": "0.18.17", "esbuild-sass-plugin": "^2.10.0", "fs": "^0.0.1-security", - "govuk-frontend": "^4.7.0", + "govuk-frontend": "^5.1.0", "sass": "^1.64.1" } }, @@ -38,43 +39,44 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", - "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", + "json5": "^2.2.3", "semver": "^6.3.1" }, "engines": { @@ -86,11 +88,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dependencies": { - "@babel/types": "^7.22.5", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -111,45 +113,42 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", - "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", - "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz", - "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==", + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", + "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -162,9 +161,9 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", - "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", @@ -178,9 +177,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -193,20 +192,20 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -224,37 +223,37 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", - "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -283,13 +282,13 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", - "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.9" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -299,12 +298,12 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", - "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { @@ -348,62 +347,62 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", - "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dependencies": { "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -411,9 +410,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -422,9 +421,9 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", - "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -436,13 +435,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", - "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" + "@babel/plugin-transform-optional-chaining": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -451,27 +450,27 @@ "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "engines": { - "node": ">=4" + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -547,9 +546,9 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -561,9 +560,9 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -706,9 +705,9 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -720,13 +719,13 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz", - "integrity": "sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -737,13 +736,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dependencies": { - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" + "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -753,9 +752,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -767,9 +766,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", - "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -781,11 +780,11 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -796,11 +795,11 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", - "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -812,17 +811,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", - "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -834,12 +832,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" + "@babel/template": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -849,9 +847,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", - "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -863,11 +861,11 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -878,9 +876,9 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -892,9 +890,9 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", - "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -907,11 +905,11 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -922,9 +920,9 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", - "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -937,11 +935,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", - "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -951,12 +950,12 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -967,9 +966,9 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", - "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -982,9 +981,9 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -996,9 +995,9 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", - "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1011,9 +1010,9 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1025,11 +1024,11 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1040,11 +1039,11 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", - "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -1056,14 +1055,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", - "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1073,11 +1072,11 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1103,9 +1102,9 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1117,9 +1116,9 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", - "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1132,9 +1131,9 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", - "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1147,15 +1146,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", - "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" + "@babel/plugin-transform-parameters": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1165,12 +1164,12 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" + "@babel/helper-replace-supers": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1180,9 +1179,9 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", - "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1195,9 +1194,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz", - "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -1211,9 +1210,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", - "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1225,11 +1224,11 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1240,12 +1239,12 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", - "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -1257,9 +1256,9 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1271,12 +1270,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", - "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.1" + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" @@ -1286,9 +1285,9 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1300,9 +1299,9 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1314,9 +1313,9 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -1329,9 +1328,9 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1343,9 +1342,9 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1357,9 +1356,9 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1371,9 +1370,9 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", - "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1385,11 +1384,11 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1400,11 +1399,11 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1415,11 +1414,11 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1430,24 +1429,25 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", - "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.9.tgz", + "integrity": "sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1459,59 +1459,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.7", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.5", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.6", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.5", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.5", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.5", - "@babel/plugin-transform-for-of": "^7.22.5", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.5", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-modules-systemjs": "^7.22.5", - "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", - "@babel/plugin-transform-numeric-separator": "^7.22.5", - "@babel/plugin-transform-object-rest-spread": "^7.22.5", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.6", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.5", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.5", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.5", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.4", - "babel-plugin-polyfill-corejs3": "^0.8.2", - "babel-plugin-polyfill-regenerator": "^0.5.1", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -1523,13 +1522,11 @@ } }, "node_modules/@babel/preset-modules": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", - "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, @@ -1543,43 +1540,43 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", - "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -1587,12 +1584,12 @@ } }, "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1969,9 +1966,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dependencies": { "type-fest": "^0.20.2" }, @@ -1993,6 +1990,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@govuk-prototype-kit/step-by-step": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@govuk-prototype-kit/step-by-step/-/step-by-step-2.2.2.tgz", + "integrity": "sha512-roFCAexAFP+ip2dIUi7o4QKDLak6nKcTFnMoh9jBEpKjpO6rjoU+xkgY3w9nqTy9rRGBtvIb+LaeoEZ78sd2KA==" + }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -2187,17 +2189,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/core/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2229,17 +2220,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/@jest/core/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2248,26 +2228,6 @@ "node": ">=8" } }, - "node_modules/@jest/core/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/@jest/core/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2279,17 +2239,6 @@ "node": ">=8" } }, - "node_modules/@jest/core/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/@jest/environment": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", @@ -2515,17 +2464,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/transform/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/transform/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2557,16 +2495,10 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/@jest/transform/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/@jest/transform/node_modules/has-flag": { "version": "4.0.0", @@ -2576,26 +2508,6 @@ "node": ">=8" } }, - "node_modules/@jest/transform/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/@jest/transform/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/@jest/transform/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2607,17 +2519,6 @@ "node": ">=8" } }, - "node_modules/@jest/transform/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/@jest/types": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", @@ -2711,9 +2612,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "engines": { "node": ">=6.0.0" } @@ -2741,26 +2642,12 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "node_modules/@mirzazeyrek/node-resemble-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@mirzazeyrek/node-resemble-js/-/node-resemble-js-1.2.1.tgz", - "integrity": "sha512-+z1c7HpC5ysdSVVyUVz67hctVLl337VlRJP/MBwpvXHkKJdlnSUVrBhlRzxgal7xpm1uDE2JeUhWbQh6wPRC4w==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", "dependencies": { - "jpeg-js": "^0.4.2", - "pngjs": "^6.0.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@nodelib/fs.scandir": { @@ -2795,77 +2682,10 @@ "node": ">= 8" } }, - "node_modules/@puppeteer/browsers": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-0.5.0.tgz", - "integrity": "sha512-Uw6oB7VvmPRLE4iKsjuOh8zgDabhNX67dzo8U/BB0f9527qx+4eeUs+korU98OhG5C4ubg7ufBgVi63XYwS6TQ==", - "dependencies": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.1" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=14.1.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@puppeteer/browsers/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@puppeteer/browsers/node_modules/yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@puppeteer/browsers/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -2932,9 +2752,9 @@ } }, "node_modules/@types/babel__core": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", - "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -2944,114 +2764,117 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", - "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dependencies": { "@babel/types": "^7.20.7" } }, "node_modules/@types/eslint": { - "version": "8.44.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.1.tgz", - "integrity": "sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg==", + "version": "8.56.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.2.tgz", + "integrity": "sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "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==", "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/mdast": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", - "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", "dependencies": { "@types/unist": "^2" } }, "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==" }, "node_modules/@types/node": { - "version": "20.4.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.5.tgz", - "integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==" + "version": "20.11.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", + "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" }, "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, "node_modules/@types/prettier": { "version": "2.7.3", @@ -3059,36 +2882,27 @@ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==" }, "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" }, "node_modules/@types/unist": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", - "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==" + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" }, "node_modules/@types/yargs": { - "version": "15.0.15", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", - "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==", + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" - }, - "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "dependencies": { - "@types/node": "*" - } + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", @@ -3338,7 +3152,8 @@ "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead" }, "node_modules/accepts": { "version": "1.3.8", @@ -3399,18 +3214,6 @@ "node": ">= 6.0.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -3525,34 +3328,15 @@ } }, "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dependencies": { - "buffer-equal": "^1.0.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, "node_modules/aproba": { @@ -3560,11 +3344,6 @@ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" - }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -3579,19 +3358,12 @@ } }, "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha512-OQwDZUqYaQwyyhDJHThmzId8daf4/RFNLaeh3AevmSeZ5Y7ug4Ga/yKc6l6kTZOBW781rCj103ZuTh8GAsB3+Q==", "dependencies": { - "make-iterator": "^1.0.0" + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" }, "engines": { "node": ">=0.10.0" @@ -3605,17 +3377,6 @@ "node": ">=0.10.0" } }, - "node_modules/arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", - "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/arr-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", @@ -3632,67 +3393,10 @@ "node": ">=0.10.0" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", - "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dependencies": { - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha512-rlVfZW/1Ph2SNySXwR9QYkChp8EkOEiTMO5Vwx60usw04i4nWemkm9RXmQqgkQFaLHsqLuADvjp6IfgL9l2M8Q==", "engines": { "node": ">=0.10.0" } @@ -3743,25 +3447,25 @@ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", + "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" + "object.assign": "^4.1.4", + "util": "^0.10.4" } }, "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" }, "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", "dependencies": { - "inherits": "2.0.1" + "inherits": "2.0.3" } }, "node_modules/assign-symbols": { @@ -3785,20 +3489,6 @@ "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" }, - "node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/async-each": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", @@ -3808,18 +3498,8 @@ "type": "individual", "url": "https://paulmillr.com/funding/" } - ] - }, - "node_modules/async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", - "dependencies": { - "async-done": "^1.2.2" - }, - "engines": { - "node": ">= 0.10" - } + ], + "optional": true }, "node_modules/asynckit": { "version": "0.4.0", @@ -4019,12 +3699,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", - "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", + "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", + "@babel/helper-define-polyfill-provider": "^0.5.0", "semver": "^6.3.1" }, "peerDependencies": { @@ -4032,23 +3712,23 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", - "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", - "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2" + "@babel/helper-define-polyfill-provider": "^0.5.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -4091,117 +3771,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", - "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/backstopjs": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/backstopjs/-/backstopjs-6.2.2.tgz", - "integrity": "sha512-Uy+y7FR+4jjhg+lxO2Sx9ag7D08HII9p5bfTpLD6/t2wkSk38pTTFbb7eeRvhuUNoPAgEk4o1urYrtPq4G9jyg==", - "dependencies": { - "@mirzazeyrek/node-resemble-js": "^1.2.1", - "chalk": "^4.1.2", - "diverged": "^0.1.3", - "fs-extra": "^10.1.0", - "jump.js": "^1.0.2", - "junit-report-builder": "^3.0.0", - "lodash": "^4.17.21", - "minimist": "^1.2.6", - "object-hash": "3.0.0", - "opn": "^5.5.0", - "os": "^0.1.2", - "p-map": "^4.0.0", - "path": "^0.12.7", - "playwright": "^1.32.1", - "portfinder": "^1.0.32", - "puppeteer": "^19.7.0", - "super-simple-web-server": "^1.1.3", - "temp": "^0.9.4" - }, - "bin": { - "backstop": "cli/index.js" - } - }, - "node_modules/backstopjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/backstopjs/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/backstopjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/backstopjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/backstopjs/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/backstopjs/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/bail": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", @@ -4293,29 +3862,6 @@ "file-uri-to-path": "1.0.0" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/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==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -4337,147 +3883,24 @@ "safe-json-parse": "~1.0.1" } }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "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==", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "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.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/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==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/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==", - "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/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/body-parser/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==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/body-parser/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body/node_modules/bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha512-/x68VkHLeTl3/Ll8IvxdwzhrT+IyKc52e/oyHhA2RwqPqswSnjVbSddfPRwAsJtbilMAPSRWwAlpxdYsSWOTKQ==" - }, - "node_modules/body/node_modules/raw-body": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", - "integrity": "sha512-WmJJU2e9Y6M5UzTOkHaM7xJGAPQD8PNzx3bAd2+uhZAim6wDk6dAZxPVYLF67XhbR4hmKGh33Lpmh4XWrCH5Mg==", - "dependencies": { - "bytes": "1", - "string_decoder": "0.10" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/body/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - }, - "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==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/brorand": { @@ -4534,32 +3957,22 @@ } }, "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", + "elliptic": "^6.5.4", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/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==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" }, "engines": { - "node": ">= 6" + "node": ">= 4" } }, "node_modules/browserify-zlib": { @@ -4571,9 +3984,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "funding": [ { "type": "opencollective", @@ -4589,10 +4002,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -4610,26 +4023,13 @@ } }, "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, "node_modules/buffer-crc32": { @@ -4640,17 +4040,6 @@ "node": "*" } }, - "node_modules/buffer-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", - "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -4667,12 +4056,9 @@ "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" }, "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha512-/x68VkHLeTl3/Ll8IvxdwzhrT+IyKc52e/oyHhA2RwqPqswSnjVbSddfPRwAsJtbilMAPSRWwAlpxdYsSWOTKQ==" }, "node_modules/cacache": { "version": "12.0.4", @@ -4732,12 +4118,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "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" @@ -4776,9 +4168,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001517", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", - "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", + "version": "1.0.30001588", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz", + "integrity": "sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==", "funding": [ { "type": "opencollective", @@ -4887,59 +4279,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/chokidar/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/chokidar/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/chokidar/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", @@ -4953,17 +4292,6 @@ "node": ">=6.0" } }, - "node_modules/chromium-bidi": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.7.tgz", - "integrity": "sha512-6+mJuFXwTMU6I3vYLs6IL8A1DyQTPjCfIL971X0aMPVGRbGnNfl6i6Cl0NMbxi2bRYLGESt9T2ZIMRM5PAEcIQ==", - "dependencies": { - "mitt": "3.0.0" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -5016,66 +4344,16 @@ "node": ">=0.10.0" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/clean-css": { @@ -5089,14 +4367,6 @@ "node": ">= 4.0" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "engines": { - "node": ">=6" - } - }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -5149,6 +4419,33 @@ "readable-stream": "^2.3.5" } }, + "node_modules/cloneable-readable/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==", + "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/cloneable-readable/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==" + }, + "node_modules/cloneable-readable/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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -5158,32 +4455,11 @@ "node": ">= 0.12.0" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/collect-v8-coverage": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==" }, - "node_modules/collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", - "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -5247,9 +4523,12 @@ "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" }, "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/concat-map": { "version": "0.0.1", @@ -5270,6 +4549,33 @@ "typedarray": "^0.0.6" } }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/concurrently": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", @@ -5414,47 +4720,15 @@ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" }, - "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==", - "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==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/continuable-cache": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", "integrity": "sha512-TF30kpKhTH8AGCG3dut0rdd/19B7Z+qCnrMoBLpyQu/2drZdNrrpcjPEoJeSVsQM+8KmWG5O56oPDjSSUsuTyA==" }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "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==" + "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==" }, "node_modules/copy-concurrently": { "version": "1.0.5", @@ -5488,21 +4762,12 @@ "node": ">=0.10.0" } }, - "node_modules/copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", - "dependencies": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" - } - }, "node_modules/core-js-compat": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz", - "integrity": "sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", + "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", "dependencies": { - "browserslist": "^4.21.9" + "browserslist": "^4.22.3" }, "funding": { "type": "opencollective", @@ -5568,52 +4833,6 @@ "sha.js": "^2.4.8" } }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/cross-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/cross-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/cross-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -5685,15 +4904,6 @@ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz", "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==" }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -5722,14 +4932,6 @@ "url": "https://opencollective.com/date-fns" } }, - "node_modules/date-format": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.3.tgz", - "integrity": "sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -5803,30 +5005,28 @@ "node": ">=0.10.0" } }, - "node_modules/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "kind-of": "^5.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", - "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -5879,14 +5079,6 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -5895,24 +5087,17 @@ "node": ">=8" } }, - "node_modules/devtools-protocol": { - "version": "0.0.1107588", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1107588.tgz", - "integrity": "sha512-yIR+pG9x65Xko7bErCUSQaDLrO/P1p3JUzEk7JCU4DowPcGHkTGUGQapcfcLc4qj0UaALwZ+cr0riFgiqpixcg==" - }, "node_modules/dfe-frontend-alpha": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/dfe-frontend-alpha/-/dfe-frontend-alpha-0.1.8.tgz", - "integrity": "sha512-h7lT88a8Td23Tf85z6I0F6xDRS3meqXVWHIJU4V8OpzFyyOzhydVH/76mt4Y0KcPWZNhnzyfUuiwLyokKeglcg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dfe-frontend-alpha/-/dfe-frontend-alpha-1.0.1.tgz", + "integrity": "sha512-75Qzr1KAM/MAaj0MFzAyShXaRhCq13/wpbP3yXgOZ1yEiU1PPsaliWVyf1qPJ2BfLe3OJpA4fgLG4AIMq9N9kg==", "dependencies": { "@babel/core": "^7.12.10", "@babel/preset-env": "^7.12.11", "babel-loader": "^8.2.2", - "backstopjs": "^6.1.4", "concurrently": "^6.4.0", "eslint": "^7.32.0", "govuk-frontend": "^4.5.0", - "gulp": "^4.0.2", "gulp-clean": "^0.4.0", "gulp-clean-css": "^4.3.0", "gulp-connect": "^5.7.0", @@ -5936,15 +5121,15 @@ "webpack-stream": "^5.2.1" }, "engines": { - "node": "16.x" + "node": "18.x" } }, - "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "node_modules/dfe-frontend-alpha/node_modules/govuk-frontend": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/govuk-frontend/-/govuk-frontend-4.8.0.tgz", + "integrity": "sha512-NOmPJxL8IYq1HSNHYKx9XY2LLTxuwb+IFASiGQO4sgJ8K7AG66SlSeqARrcetevV8zOf+i1z+MbJJ2O7//OxAw==", "engines": { - "node": ">=0.3.1" + "node": ">= 4.2.0" } }, "node_modules/diff-sequences": { @@ -5981,25 +5166,6 @@ "node": ">=8" } }, - "node_modules/diverged": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/diverged/-/diverged-0.1.3.tgz", - "integrity": "sha512-W8BLyp4Eo+YW9uQ3F5c9BXDT9ITCARA2CFQVb+v57FWYfkr0XjwNOASZacDCq+syk1i/obZ4BZ3w1qtlRO6hQw==", - "dependencies": { - "diff": "^3.5.0", - "pixelmatch": "^4.0.2", - "pngjs": "^3.3.3", - "super-simple-web-server": "^1.0.0" - } - }, - "node_modules/diverged/node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -6057,6 +5223,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", "dependencies": { "webidl-conversions": "^5.0.0" }, @@ -6105,24 +5272,31 @@ "stream-shift": "^1.0.0" } }, - "node_modules/each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "node_modules/duplexify/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==", "dependencies": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/each-props/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==", + "node_modules/duplexify/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==" + }, + "node_modules/duplexify/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==", "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "safe-buffer": "~5.1.0" } }, "node_modules/ee-first": { @@ -6131,9 +5305,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.475", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.475.tgz", - "integrity": "sha512-mTye5u5P98kSJO2n7zYALhpJDmoSQejIGya0iR01GpoRady8eK3bw7YHHnjA1Rfi4ZSLdpuzlAC7Zw+1Zu7Z6A==" + "version": "1.4.676", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.676.tgz", + "integrity": "sha512-uHt4FB8SeYdhcOsj2ix/C39S7sPSNFJpzShjxGOm1KdF4MHyGqGi389+T5cErsodsijojXilYaHIKKqJfqh7uQ==" }, "node_modules/elliptic": { "version": "6.5.4", @@ -6250,54 +5424,29 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-module-lexer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==" - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "hasInstallScript": true, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "node": ">= 0.4" } }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" } }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } + "node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" }, "node_modules/esbuild": { "version": "0.18.17", @@ -6348,9 +5497,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { "node": ">=6" } @@ -6559,9 +5708,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dependencies": { "type-fest": "^0.20.2" }, @@ -6592,9 +5741,9 @@ } }, "node_modules/eslint/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -6859,83 +6008,41 @@ "node": ">=0.10.0" } }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dependencies": { - "kind-of": "^3.0.2" + "is-extendable": "^0.1.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dependencies": { - "is-buffer": "^1.1.5" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/expand-brackets/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dependencies": { - "kind-of": "^3.0.2" - }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "engines": { "node": ">=0.10.0" } }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/expect": { "version": "26.6.2", @@ -6983,196 +6090,18 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.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/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/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==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/express/node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "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/express/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==", - "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/express/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/express/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==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "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/express/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==" - }, - "node_modules/express/node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/express/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dependencies": { - "is-extendable": "^0.1.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { "node": ">=0.10.0" @@ -7207,37 +6136,23 @@ "node": ">=0.10.0" } }, - "node_modules/extract-zip": { + "node_modules/extglob/node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "node": ">=0.10.0" } }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/fancy-log": { @@ -7260,9 +6175,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -7274,59 +6189,6 @@ "node": ">=8.6.0" } }, - "node_modules/fast-glob/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/fast-glob/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/fast-glob/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/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", @@ -7346,9 +6208,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dependencies": { "reusify": "^1.0.4" } @@ -7372,18 +6234,11 @@ "bser": "2.1.1" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dependencies": { - "pend": "~1.2.0" - } - }, "node_modules/figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "deprecated": "This module is no longer supported." }, "node_modules/file-entry-cache": { "version": "6.0.1", @@ -7403,17 +6258,14 @@ "optional": true }, "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/finalhandler": { @@ -7488,70 +6340,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fined/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==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.0.tgz", + "integrity": "sha512-noqGuLw158+DuD9UPRKHpJ2hGxpFyDlYYrfM0mWt4XhT4n0lwzTLh70Tkdyy4kyTmyTT9Bv7bWAJqw7cgkEXDg==" }, "node_modules/flush-write-stream": { "version": "1.1.1", @@ -7562,10 +6367,37 @@ "readable-stream": "^2.3.6" } }, + "node_modules/flush-write-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "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/flush-write-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/flush-write-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "funding": [ { "type": "individual", @@ -7589,17 +6421,6 @@ "node": ">=0.10.0" } }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -7613,14 +6434,6 @@ "node": ">= 6" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -7654,41 +6467,38 @@ "readable-stream": "^2.0.0" } }, - "node_modules/fs": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", - "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/from2/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==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" + "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/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "node_modules/from2/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==" + }, + "node_modules/from2/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==", "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" + "safe-buffer": "~5.1.0" } }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + }, "node_modules/fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", @@ -7700,6 +6510,33 @@ "readable-stream": "1 || 2" } }, + "node_modules/fs-write-stream-atomic/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==", + "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/fs-write-stream-atomic/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==" + }, + "node_modules/fs-write-stream-atomic/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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -7719,9 +6556,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -7745,14 +6585,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7823,186 +6667,33 @@ "node": ">= 6" } }, - "node_modules/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", - "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-stream/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-stream/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.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==" }, - "node_modules/glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", - "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-watcher/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/glob-watcher/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/glob-watcher/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-watcher/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "global-prefix": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/global-prefix/node_modules/which": { @@ -8044,9 +6735,9 @@ } }, "node_modules/globby/node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "engines": { "node": ">= 4" } @@ -8081,10 +6772,21 @@ "node": ">=0.6.0" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/govuk-frontend": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/govuk-frontend/-/govuk-frontend-4.7.0.tgz", - "integrity": "sha512-0OsdCusF5qvLWwKziU8zqxiC0nq6WP0ZQuw51ymZ/1V0tO71oIKMlSLN2S9bm8RcEGSoidPt2A34gKxePrLjvg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/govuk-frontend/-/govuk-frontend-5.1.0.tgz", + "integrity": "sha512-Dc3J+uOI4i2VR3BVyfxbf6qVjTT4n4bBqbD0/Io6feP8pt/4IfKdP1vWimZf+BwMKKMXacw10hmdy5UcD6Cr8w==", "engines": { "node": ">= 4.2.0" } @@ -8100,23 +6802,6 @@ "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", "optional": true }, - "node_modules/gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/gulp-clean": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/gulp-clean/-/gulp-clean-0.4.0.tgz", @@ -8154,44 +6839,18 @@ "node": ">=0.10.0" } }, - "node_modules/gulp-clean-css/node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-clean-css/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-clean-css/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, + "node_modules/gulp-clean-css/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "engines": { "node": ">=0.10.0" } }, - "node_modules/gulp-clean-css/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==", - "dependencies": { - "isobject": "^3.0.1" - }, + "node_modules/gulp-clean-css/node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "engines": { "node": ">=0.10.0" } @@ -8229,221 +6888,6 @@ "rimraf": "bin.js" } }, - "node_modules/gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", - "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-cli/node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dependencies": { - "ansi-wrap": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/gulp-cli/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" - }, - "node_modules/gulp-cli/node_modules/yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", - "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" - } - }, - "node_modules/gulp-cli/node_modules/yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", - "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } - }, "node_modules/gulp-connect": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/gulp-connect/-/gulp-connect-5.7.0.tgz", @@ -8521,44 +6965,18 @@ "node": ">=0.10.0" } }, - "node_modules/gulp-sass/node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-sass/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-sass/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, + "node_modules/gulp-sass/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "engines": { "node": ">=0.10.0" } }, - "node_modules/gulp-sass/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==", - "dependencies": { - "isobject": "^3.0.1" - }, + "node_modules/gulp-sass/node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "engines": { "node": ">=0.10.0" } @@ -8602,40 +7020,6 @@ "vinyl-sourcemaps-apply": "^0.2.0" } }, - "node_modules/gulp-uglify/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-uglify/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-uglify/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==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/gulp-zip": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/gulp-zip/-/gulp-zip-4.2.0.tgz", @@ -8670,17 +7054,6 @@ "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -8701,20 +7074,20 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -8763,6 +7136,28 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/has-values/node_modules/kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -8787,19 +7182,6 @@ "node": ">=4" } }, - "node_modules/hash-base/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==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -8809,6 +7191,17 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/hasown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -8819,17 +7212,6 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -8965,19 +7347,6 @@ "readable-stream": "^3.1.1" } }, - "node_modules/htmlparser2/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==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -9330,59 +7699,15 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", - "engines": { - "node": ">=0.10.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==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/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==", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, "node_modules/is-alphabetical": { @@ -9457,33 +7782,25 @@ } }, "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/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==", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/is-decimal": { @@ -9496,24 +7813,15 @@ } }, "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/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==", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/is-docker": { @@ -9532,9 +7840,12 @@ } }, "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, "engines": { "node": ">=0.10.0" } @@ -9583,39 +7894,12 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, "node_modules/is-plain-obj": { @@ -9627,9 +7911,12 @@ } }, "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "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==", + "dependencies": { + "isobject": "^3.0.1" + }, "engines": { "node": ">=0.10.0" } @@ -9647,17 +7934,6 @@ "node": ">=6" } }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "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", @@ -9674,17 +7950,6 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -9696,19 +7961,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" - }, - "node_modules/is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -9748,9 +8000,9 @@ } }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "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==", "engines": { "node": ">=8" } @@ -9816,9 +8068,9 @@ } }, "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9859,9 +8111,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -9988,11 +8240,6 @@ "node": ">=8" } }, - "node_modules/jest-cli/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10004,11 +8251,6 @@ "node": ">=8" } }, - "node_modules/jest-cli/node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" - }, "node_modules/jest-cli/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -10105,20 +8347,9 @@ }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-config/node_modules/chalk": { @@ -10152,17 +8383,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/jest-config/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -10171,26 +8391,6 @@ "node": ">=8" } }, - "node_modules/jest-config/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jest-config/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10202,17 +8402,6 @@ "node": ">=8" } }, - "node_modules/jest-config/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/jest-diff": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", @@ -10448,71 +8637,6 @@ "fsevents": "^2.1.2" } }, - "node_modules/jest-haste-map/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-haste-map/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-haste-map/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-haste-map/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jest-haste-map/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/jest-haste-map/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/jest-jasmine2": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", @@ -10728,17 +8852,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -10770,17 +8883,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/jest-message-util/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -10789,26 +8891,6 @@ "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jest-message-util/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10820,17 +8902,6 @@ "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/jest-mock": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", @@ -11159,11 +9230,6 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -11175,11 +9241,6 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" - }, "node_modules/jest-runtime/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -11334,9 +9395,9 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -11393,17 +9454,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-util/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-util/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -11435,17 +9485,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/jest-util/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -11454,26 +9493,6 @@ "node": ">=8" } }, - "node_modules/jest-util/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jest-util/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/jest-util/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -11485,17 +9504,6 @@ "node": ">=8" } }, - "node_modules/jest-util/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/jest-validate": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", @@ -11701,22 +9709,17 @@ } }, "node_modules/joi": { - "version": "17.9.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz", - "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==", + "version": "17.12.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.1.tgz", + "integrity": "sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==", "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" } }, - "node_modules/jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -11780,9 +9783,9 @@ } }, "node_modules/jsdom/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "bin": { "acorn": "bin/acorn" }, @@ -11801,6 +9804,11 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -11832,45 +9840,18 @@ "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==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jump.js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jump.js/-/jump.js-1.0.2.tgz", - "integrity": "sha512-oUkJJ/Y4ATU5qjkXBntCZSKctbSyS3ewe2jrLaUu/cc9jsQiAn0fnTUxQnZz3mJdDdem1Q279zrD6h3n+Cgxtg==" - }, - "node_modules/junit-report-builder": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/junit-report-builder/-/junit-report-builder-3.0.1.tgz", - "integrity": "sha512-B8AZ2q24iGwPM3j/ZHc9nD0BY1rKhcnWCA1UvT8mhHfR8Vo/HTtg3ojMyo55BgctqQGZG7H8z0+g+mEUc32jgg==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dependencies": { - "date-format": "4.0.3", - "lodash": "^4.17.21", - "make-dir": "^3.1.0", - "xmlbuilder": "^15.1.1" - }, - "engines": { - "node": ">=8" + "json-buffer": "3.0.1" } }, - "node_modules/just-debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", - "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" - }, "node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { "node": ">=0.10.0" } @@ -11888,57 +9869,12 @@ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==" }, - "node_modules/last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", - "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/lazy-ass": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "engines": { - "node": "> 0.8" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", - "dependencies": { - "flush-write-stream": "^1.0.2" - }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", "engines": { - "node": ">= 0.10" + "node": "> 0.8" } }, "node_modules/leven": { @@ -11961,35 +9897,6 @@ "node": ">= 0.8.0" } }, - "node_modules/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/liftoff/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==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -12000,43 +9907,6 @@ "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==" }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -12227,25 +10097,6 @@ "make-error": "^1.2.0" } }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/make-iterator/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==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -12289,45 +10140,6 @@ "node": ">=0.10.0" } }, - "node_modules/matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", - "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -12389,14 +10201,6 @@ "url": "https://opencollective.com/unified" } }, - "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==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -12406,6 +10210,33 @@ "readable-stream": "^2.0.1" } }, + "node_modules/memory-fs/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==", + "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/memory-fs/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==" + }, + "node_modules/memory-fs/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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/meow": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", @@ -12468,9 +10299,9 @@ } }, "node_modules/meow/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -12497,11 +10328,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, - "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==" - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -12515,14 +10341,6 @@ "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==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/micromark": { "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", @@ -12543,68 +10361,15 @@ } }, "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/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==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dependencies": { - "isobject": "^3.0.1" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/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==", - "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, "node_modules/miller-rabin": { @@ -12709,14 +10474,6 @@ "node": ">= 6" } }, - "node_modules/minimist-options/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==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mississippi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", @@ -12737,11 +10494,6 @@ "node": ">=4.0.0" } }, - "node_modules/mitt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", - "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" - }, "node_modules/mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -12754,28 +10506,6 @@ "node": ">=0.10.0" } }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/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==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -12787,11 +10517,6 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, "node_modules/move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -12821,18 +10546,10 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "optional": true }, "node_modules/nanomatch": { @@ -12847,53 +10564,19 @@ "fragment-cache": "^0.2.1", "is-windows": "^1.0.2", "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/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==", - "dependencies": { - "isobject": "^3.0.1" + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/nanomatch/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "engines": { "node": ">=0.10.0" } @@ -12916,20 +10599,15 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -12999,32 +10677,36 @@ "vm-browserify": "^1.0.1" } }, - "node_modules/node-libs-browser/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/node-libs-browser/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, "node_modules/node-libs-browser/node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" }, - "node_modules/node-libs-browser/node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "node_modules/node-libs-browser/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==", "dependencies": { - "inherits": "2.0.3" + "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/node-libs-browser/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==" + }, + "node_modules/node-libs-browser/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==", + "dependencies": { + "safe-buffer": "~5.1.0" } }, "node_modules/node-notifier": { @@ -13054,9 +10736,9 @@ } }, "node_modules/node-notifier/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "optional": true, "dependencies": { "lru-cache": "^6.0.0" @@ -13075,9 +10757,9 @@ "optional": true }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "node_modules/normalize-package-data": { "version": "2.5.0", @@ -13119,17 +10801,6 @@ "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==" }, - "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dependencies": { - "once": "^1.3.2" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -13146,14 +10817,6 @@ "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==" }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/nunjucks": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", @@ -13223,52 +10886,21 @@ "node": ">=0.10.0" } }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-copy/node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/object-copy/node_modules/kind-of": { @@ -13282,18 +10914,10 @@ "node": ">=0.10.0" } }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } - }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13318,12 +10942,12 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -13334,32 +10958,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -13371,18 +10969,6 @@ "node": ">=0.10.0" } }, - "node_modules/object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -13424,25 +11010,6 @@ "opencollective-postinstall": "index.js" } }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "engines": { - "node": ">=4" - } - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -13459,35 +11026,11 @@ "node": ">= 0.8.0" } }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/os": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/os/-/os-0.1.2.tgz", - "integrity": "sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ==" - }, "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", @@ -13532,20 +11075,6 @@ "node": ">=8" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "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", @@ -13569,6 +11098,33 @@ "readable-stream": "^2.1.5" } }, + "node_modules/parallel-transform/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==", + "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/parallel-transform/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==" + }, + "node_modules/parallel-transform/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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -13609,19 +11165,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -13647,14 +11190,6 @@ "node": ">= 0.10" } }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", @@ -13676,15 +11211,6 @@ "node": ">=0.10.0" } }, - "node_modules/path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", - "dependencies": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, "node_modules/path-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", @@ -13693,7 +11219,8 @@ "node_modules/path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "optional": true }, "node_modules/path-exists": { "version": "4.0.0", @@ -13724,30 +11251,6 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "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==" - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -13779,11 +11282,6 @@ "node": ">=0.12" } }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -13801,30 +11299,11 @@ } }, "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dependencies": { - "pinkie": "^2.0.0" - }, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/pirates": { @@ -13835,60 +11314,15 @@ "node": ">= 6" } }, - "node_modules/pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", - "dependencies": { - "pngjs": "^3.0.0" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, - "node_modules/pixelmatch/node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "engines": { - "node": ">=4.0.0" - } - }, - "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==", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/playwright": { - "version": "1.36.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.36.2.tgz", - "integrity": "sha512-4Fmlq3KWsl85Bl4InJw1NC21aeQV0iSZuFvTDcy1F8zVmXmgQRe89GxF8zMSRt/KIS+2tUolak7EXVl9aC+JdA==", - "hasInstallScript": true, - "dependencies": { - "playwright-core": "1.36.2" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/playwright-core": { - "version": "1.36.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.36.2.tgz", - "integrity": "sha512-sQYZt31dwkqxOrP7xy2ggDfEzUxM1lodjhsQ3NMMv5uGTRDsLxU0e4xf4wwMkF2gplIxf17QMBCodSFgm6bFVQ==", - "bin": { - "playwright-core": "cli.js" + "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==", + "dependencies": { + "find-up": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=8" } }, "node_modules/please-upgrade-node": { @@ -13914,26 +11348,6 @@ "node": ">=0.10.0" } }, - "node_modules/plugin-error/node_modules/arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha512-OQwDZUqYaQwyyhDJHThmzId8daf4/RFNLaeh3AevmSeZ5Y7ug4Ga/yKc6l6kTZOBW781rCj103ZuTh8GAsB3+Q==", - "dependencies": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/plugin-error/node_modules/array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha512-rlVfZW/1Ph2SNySXwR9QYkChp8EkOEiTMO5Vwx60usw04i4nWemkm9RXmQqgkQFaLHsqLuADvjp6IfgL9l2M8Q==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/plugin-error/node_modules/extend-shallow": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", @@ -13953,43 +11367,6 @@ "node": ">=0.10.0" } }, - "node_modules/pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", - "engines": { - "node": ">=12.13.0" - } - }, - "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -14079,9 +11456,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -14172,14 +11549,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -14218,23 +11587,6 @@ "node": ">= 6" } }, - "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==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -14306,113 +11658,17 @@ } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } }, - "node_modules/puppeteer": { - "version": "19.11.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.11.1.tgz", - "integrity": "sha512-39olGaX2djYUdhaQQHDZ0T0GwEp+5f9UB9HmEP0qHfdQHIq0xGQZuAZ5TLnJIc/88SrPLpEflPC+xUqOTv3c5g==", - "hasInstallScript": true, - "dependencies": { - "@puppeteer/browsers": "0.5.0", - "cosmiconfig": "8.1.3", - "https-proxy-agent": "5.0.1", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "puppeteer-core": "19.11.1" - } - }, - "node_modules/puppeteer-core": { - "version": "19.11.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.11.1.tgz", - "integrity": "sha512-qcuC2Uf0Fwdj9wNtaTZ2OvYRraXpAK+puwwVW8ofOhOgLPZyz1c68tsorfIZyCUOpyBisjr+xByu7BMbEYMepA==", - "dependencies": { - "@puppeteer/browsers": "0.5.0", - "chromium-bidi": "0.4.7", - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.1107588", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "proxy-from-env": "1.1.0", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.13.0" - }, - "engines": { - "node": ">=14.14.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "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/puppeteer/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/puppeteer/node_modules/cosmiconfig": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", - "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", - "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/puppeteer/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dependencies": { "side-channel": "^1.0.4" }, @@ -14489,54 +11745,21 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "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/raw-body/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==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/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==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha512-WmJJU2e9Y6M5UzTOkHaM7xJGAPQD8PNzx3bAd2+uhZAim6wDk6dAZxPVYLF67XhbR4hmKGh33Lpmh4XWrCH5Mg==", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "bytes": "1", + "string_decoder": "0.10" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8.0" } }, - "node_modules/raw-body/node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/raw-body/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } + "node_modules/raw-body/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" }, "node_modules/react-is": { "version": "17.0.2", @@ -14590,24 +11813,18 @@ } }, "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==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "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" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -14619,17 +11836,6 @@ "node": ">=8.10.0" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -14648,9 +11854,9 @@ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dependencies": { "regenerate": "^1.4.2" }, @@ -14659,14 +11865,14 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dependencies": { "@babel/runtime": "^7.8.4" } @@ -14683,40 +11889,6 @@ "node": ">=0.10.0" } }, - "node_modules/regex-not/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/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==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -14801,36 +11973,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-buffer/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", - "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -14860,19 +12002,6 @@ "node": ">= 0.10" } }, - "node_modules/replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", - "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -14890,9 +12019,9 @@ } }, "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "node_modules/requires-port": { "version": "1.0.0", @@ -14900,11 +12029,11 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -14934,18 +12063,6 @@ "node": ">=8" } }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -14954,17 +12071,6 @@ "node": ">=4" } }, - "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", - "dependencies": { - "value-or-function": "^3.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -15120,6 +12226,54 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/sane/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/sane/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sane/node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -15152,6 +12306,31 @@ "node": ">=6" } }, + "node_modules/sane/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sane/node_modules/get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -15163,6 +12342,41 @@ "node": ">=6" } }, + "node_modules/sane/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/sane/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sane/node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -15171,6 +12385,40 @@ "node": ">=0.10.0" } }, + "node_modules/sane/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sane/node_modules/npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -15217,6 +12465,18 @@ "node": ">=0.10.0" } }, + "node_modules/sane/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sane/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -15229,9 +12489,9 @@ } }, "node_modules/sass": { - "version": "1.64.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", - "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.0.tgz", + "integrity": "sha512-HKKIKf49Vkxlrav3F/w6qRuPcmImGVbIXJ2I3Kg0VMA+3Bav+8yE9G5XmP5lMj6nl4OlqbPftGAscNaNu28b8w==", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -15285,17 +12545,6 @@ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" }, - "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", - "dependencies": { - "sver-compat": "^1.5.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/semver-regex": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", @@ -15352,9 +12601,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dependencies": { "randombytes": "^2.1.0" } @@ -15516,6 +12765,22 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, + "node_modules/set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -15530,17 +12795,25 @@ "node": ">=0.10.0" } }, - "node_modules/set-value/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==", + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dependencies": { - "isobject": "^3.0.1" + "is-extendable": "^0.1.0" }, "engines": { "node": ">=0.10.0" } }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -15589,13 +12862,17 @@ "optional": true }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", + "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.6", + "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" @@ -15753,64 +13030,33 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dependencies": { - "kind-of": "^3.0.2" + "is-extendable": "^0.1.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dependencies": { - "is-buffer": "^1.1.5" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "engines": { "node": ">=0.10.0" } @@ -15900,9 +13146,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", @@ -15914,9 +13160,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==" + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" }, "node_modules/specificity": { "version": "0.4.1", @@ -15948,40 +13194,6 @@ "node": ">=0.10.0" } }, - "node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/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==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -15992,15 +13204,7 @@ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "engines": { - "node": "*" + "figgy-pudding": "^3.5.1" } }, "node_modules/stack-utils": { @@ -16117,9 +13321,9 @@ } }, "node_modules/start-server-and-test/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/start-server-and-test/node_modules/wait-on": { "version": "7.0.1", @@ -16162,66 +13366,16 @@ "node": ">=0.10.0" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/statuses": { @@ -16241,6 +13395,33 @@ "readable-stream": "^2.0.2" } }, + "node_modules/stream-browserify/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==", + "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/stream-browserify/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==" + }, + "node_modules/stream-browserify/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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/stream-combiner": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", @@ -16258,11 +13439,6 @@ "stream-shift": "^1.0.0" } }, - "node_modules/stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" - }, "node_modules/stream-http": { "version": "2.8.3", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", @@ -16275,12 +13451,26 @@ "xtend": "^4.0.0" } }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "node_modules/stream-http/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==", + "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/string_decoder": { + "node_modules/stream-http/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==" + }, + "node_modules/stream-http/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==", @@ -16288,10 +13478,18 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + }, + "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==", + "dependencies": { + "safe-buffer": "~5.2.0" + } }, "node_modules/string-length": { "version": "4.0.2", @@ -16500,17 +13698,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==" }, - "node_modules/stylelint/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/stylelint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -16542,41 +13729,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/stylelint/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stylelint/node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/stylelint/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -16586,41 +13738,13 @@ } }, "node_modules/stylelint/node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "engines": { "node": ">= 4" } }, - "node_modules/stylelint/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/stylelint/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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stylelint/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/stylelint/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -16640,28 +13764,6 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/stylelint/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/sugarss": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", @@ -16670,14 +13772,6 @@ "postcss": "^7.0.2" } }, - "node_modules/super-simple-web-server": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/super-simple-web-server/-/super-simple-web-server-1.1.4.tgz", - "integrity": "sha512-sQdVXz8ZDBMloocL63mifyVVzhxP55MlO2F0MiYJAJQiHTp42M2C3m2dZBIxGkcC7NUDr1/p0UhvGQvOsxZLpw==", - "dependencies": { - "express": "^4.16.3" - } - }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -16731,15 +13825,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", - "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, "node_modules/svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", @@ -16793,68 +13878,6 @@ "node": ">=6" } }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/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==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", - "dependencies": { - "mkdirp": "^0.5.1", - "rimraf": "~2.6.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/temp/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -16871,9 +13894,9 @@ } }, "node_modules/terser": { - "version": "5.19.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", - "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "version": "5.27.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.2.tgz", + "integrity": "sha512-sHXmLSkImesJ4p5apTeT63DsV4Obe1s37qT8qvwHRmVxKTBH7Rv9Wr26VcAMmLbmk9UliiwK8z+657NyJHHy/w==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -16888,15 +13911,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "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==", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -16973,9 +13996,9 @@ } }, "node_modules/terser/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "bin": { "acorn": "bin/acorn" }, @@ -17025,13 +14048,31 @@ "xtend": "~4.0.1" } }, - "node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "node_modules/through2/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==", + "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/through2/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==" + }, + "node_modules/through2/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==", "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" + "safe-buffer": "~5.1.0" } }, "node_modules/time-stamp": { @@ -17079,18 +14120,6 @@ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", - "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -17146,60 +14175,14 @@ } }, "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/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==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dependencies": { - "through2": "^2.0.3" + "is-number": "^7.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=8.0" } }, "node_modules/toidentifier": { @@ -17224,14 +14207,6 @@ "node": ">=6" } }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/tr46": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", @@ -17278,11 +14253,6 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -17313,18 +14283,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -17349,55 +14307,10 @@ "node": ">=0.8.0" } }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", - "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker/node_modules/fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==" + "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==" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -17482,6 +14395,14 @@ "node": ">=0.10.0" } }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -17498,15 +14419,6 @@ "imurmurhash": "^0.1.4" } }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, "node_modules/unist-util-find-all-after": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", @@ -17541,11 +14453,11 @@ } }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "engines": { - "node": ">= 10.0.0" + "node": ">= 4.0.0" } }, "node_modules/unpipe": { @@ -17604,15 +14516,16 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "optional": true, "engines": { "node": ">=4", "yarn": "*" } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "funding": [ { "type": "opencollective", @@ -17653,12 +14566,12 @@ "deprecated": "Please see https://github.com/lydell/urix#deprecated" }, "node_modules/url": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", - "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", "dependencies": { "punycode": "^1.4.1", - "qs": "^6.11.0" + "qs": "^6.11.2" } }, "node_modules/url-parse": { @@ -17684,9 +14597,9 @@ } }, "node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "dependencies": { "inherits": "2.0.3" } @@ -17719,9 +14632,9 @@ } }, "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" }, "node_modules/v8-to-istanbul": { "version": "7.1.2", @@ -17736,6 +14649,11 @@ "node": ">=10.10.0" } }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, "node_modules/v8-to-istanbul/node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -17744,17 +14662,6 @@ "node": ">= 8" } }, - "node_modules/v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -17764,22 +14671,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", - "engines": { - "node": ">= 0.10" - } - }, - "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==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/vfile": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", @@ -17824,61 +14715,6 @@ "node": ">= 0.10" } }, - "node_modules/vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", - "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/vinyl-sourcemaps-apply": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", @@ -17947,9 +14783,9 @@ } }, "node_modules/wait-on/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/walker": { "version": "1.0.8", @@ -17980,6 +14816,37 @@ "chokidar": "^2.1.8" } }, + "node_modules/watchpack-chokidar2/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "optional": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "optional": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", @@ -17989,6 +14856,39 @@ "node": ">=0.10.0" } }, + "node_modules/watchpack-chokidar2/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/watchpack-chokidar2/node_modules/chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -18012,6 +14912,33 @@ "fsevents": "^1.2.7" } }, + "node_modules/watchpack-chokidar2/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/watchpack-chokidar2/node_modules/fsevents": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", @@ -18064,6 +14991,84 @@ "node": ">=0.10.0" } }, + "node_modules/watchpack-chokidar2/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "optional": true + }, + "node_modules/watchpack-chokidar2/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "optional": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/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==", + "optional": 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/watchpack-chokidar2/node_modules/readdirp": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", @@ -18078,6 +15083,34 @@ "node": ">=0.10" } }, + "node_modules/watchpack-chokidar2/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==", + "optional": true + }, + "node_modules/watchpack-chokidar2/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==", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "optional": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -18087,18 +15120,18 @@ } }, "node_modules/webpack": { - "version": "5.88.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", - "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", + "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.11.5", "@webassemblyjs/wasm-edit": "^1.11.5", "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", @@ -18112,7 +15145,7 @@ "neo-async": "^2.6.2", "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", + "terser-webpack-plugin": "^5.3.10", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -18299,6 +15332,14 @@ "node": ">=0.10.0" } }, + "node_modules/webpack-stream/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/webpack-stream/node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", @@ -18307,6 +15348,37 @@ "node": ">=0.10.0" } }, + "node_modules/webpack-stream/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-stream/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/webpack-stream/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -18349,13 +15421,26 @@ "node": ">=4.0.0" } }, - "node_modules/webpack-stream/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "node_modules/webpack-stream/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-stream/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" }, "engines": { "node": ">=0.10.0" @@ -18385,23 +15470,36 @@ "node": ">=6" } }, + "node_modules/webpack-stream/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, "node_modules/webpack-stream/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-stream/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dependencies": { - "is-plain-object": "^2.0.4" + "kind-of": "^3.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/webpack-stream/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==", + "node_modules/webpack-stream/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { - "isobject": "^3.0.1" + "is-buffer": "^1.1.5" }, "engines": { "node": ">=0.10.0" @@ -18471,6 +15569,29 @@ "node": ">=6" } }, + "node_modules/webpack-stream/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/webpack-stream/node_modules/p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -18490,14 +15611,6 @@ "node": ">=4" } }, - "node_modules/webpack-stream/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "engines": { - "node": ">=6" - } - }, "node_modules/webpack-stream/node_modules/pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -18523,6 +15636,25 @@ "node": ">= 0.10" } }, + "node_modules/webpack-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "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/webpack-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/webpack-stream/node_modules/schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -18552,6 +15684,14 @@ "randombytes": "^2.1.0" } }, + "node_modules/webpack-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/webpack-stream/node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -18598,6 +15738,18 @@ "webpack": "^4.0.0" } }, + "node_modules/webpack-stream/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/webpack-stream/node_modules/watchpack": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", @@ -18612,9 +15764,9 @@ } }, "node_modules/webpack-stream/node_modules/webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "version": "4.47.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz", + "integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==", "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-module-context": "1.9.0", @@ -18669,9 +15821,9 @@ } }, "node_modules/webpack/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "bin": { "acorn": "bin/acorn" }, @@ -18766,9 +15918,9 @@ } }, "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" }, "node_modules/which-pm-runs": { "version": "1.1.0", @@ -18878,14 +16030,6 @@ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" }, - "node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "engines": { - "node": ">=8.0" - } - }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", @@ -18945,15 +16089,6 @@ "node": ">=10" } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, "node_modules/yazl": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", diff --git a/src/Dfe.PlanTech.Web.Node/package.json b/src/Dfe.PlanTech.Web.Node/package.json index 766a19d4c..e87f931b4 100644 --- a/src/Dfe.PlanTech.Web.Node/package.json +++ b/src/Dfe.PlanTech.Web.Node/package.json @@ -11,11 +11,12 @@ "author": "", "license": "ISC", "dependencies": { - "dfe-frontend-alpha": "^0.1.8", + "@govuk-prototype-kit/step-by-step": "^2.2.2", + "dfe-frontend-alpha": "^1.0.1", "esbuild": "0.18.17", "esbuild-sass-plugin": "^2.10.0", "fs": "^0.0.1-security", - "govuk-frontend": "^4.7.0", + "govuk-frontend": "^5.1.0", "sass": "^1.64.1" } } diff --git a/src/Dfe.PlanTech.Web.Node/styles/scss/app-task-list.scss b/src/Dfe.PlanTech.Web.Node/styles/scss/app-task-list.scss index 42c18771c..e2079a4c9 100644 --- a/src/Dfe.PlanTech.Web.Node/styles/scss/app-task-list.scss +++ b/src/Dfe.PlanTech.Web.Node/styles/scss/app-task-list.scss @@ -11,6 +11,10 @@ } } +.app-task-list__items { + width: 44em; +} + .app-task-list__section { display: table; font-family: "GDS Transport", arial, sans-serif; @@ -135,7 +139,6 @@ } @media (min-width: 28.125em) { - .app-task-list__tag, .app-task-list__task-completed { float: right; @@ -145,7 +148,7 @@ } #checkYourAnswers-page .spacer { - content: ' ' !important; + content: " " !important; display: block !important; } @@ -171,4 +174,4 @@ #checkYourAnswers-page .govuk-heading-xl { font-size: 2.5rem; margin-bottom: 25px; -} \ No newline at end of file +} diff --git a/src/Dfe.PlanTech.Web.Node/styles/scss/application.scss b/src/Dfe.PlanTech.Web.Node/styles/scss/application.scss index f4c965f0f..d372f8c14 100644 --- a/src/Dfe.PlanTech.Web.Node/styles/scss/application.scss +++ b/src/Dfe.PlanTech.Web.Node/styles/scss/application.scss @@ -1,8 +1,10 @@ -//@use "sass:map"; -$govuk-global-styles: true; -$govuk-new-link-styles: true; +@use "../../node_modules/govuk-frontend/dist/govuk/all.scss"; +@use "../../node_modules/dfe-frontend-alpha/packages/dfefrontend.scss"; -@use "../../node_modules/govuk-frontend/govuk/all"; -@use "../../node_modules/dfe-frontend-alpha/packages/dfefrontend"; +@import "app-task-list"; +@import "aside"; +@import "card-component"; +@import "error-message"; +@import "govuk-header"; +@import "hero-banner"; @import "overrides"; -@import "app-task-list"; \ No newline at end of file diff --git a/src/Dfe.PlanTech.Web.Node/styles/scss/aside.scss b/src/Dfe.PlanTech.Web.Node/styles/scss/aside.scss new file mode 100644 index 000000000..3bcb33838 --- /dev/null +++ b/src/Dfe.PlanTech.Web.Node/styles/scss/aside.scss @@ -0,0 +1,10 @@ +/* ASIDE COMPONENT - NEW +--------------------------- */ +.app-related-items { + border-top: 2px solid #347ca9; + padding-top: 10px; +} + +.app-related-items .govuk-list > li { + margin-bottom: 10px; +} diff --git a/src/Dfe.PlanTech.Web.Node/styles/scss/card-component.scss b/src/Dfe.PlanTech.Web.Node/styles/scss/card-component.scss new file mode 100644 index 000000000..698e93026 --- /dev/null +++ b/src/Dfe.PlanTech.Web.Node/styles/scss/card-component.scss @@ -0,0 +1,20 @@ +/* DFE CARD COMPONENT - NEW +--------------------------- */ +.dfe-section-card { + padding: 16px; + margin-bottom: 20px; + flex: 1; + background-color: #f3f2f1; +} + +.dfe-section-card__container { + display: flex; + width: 100; +} + +@media (max-width: 40.0525em) { + .dfe-section-card__container { + display: grid; + width: 100; + } +} diff --git a/src/Dfe.PlanTech.Web.Node/styles/scss/error-message.scss b/src/Dfe.PlanTech.Web.Node/styles/scss/error-message.scss new file mode 100644 index 000000000..1d507e176 --- /dev/null +++ b/src/Dfe.PlanTech.Web.Node/styles/scss/error-message.scss @@ -0,0 +1,36 @@ +/* OVERRIDE GOVUK ERROR MESSAGE FOR INLINE ERRORS IN TASK LIST +----------------------------------------------- */ +strong.app-task-list__task-name > p.govuk-error-message { + margin-bottom: 0px; +} + +rich-text > p.govuk-body { + margin-top: 15px; + margin-bottom: 15px; +} + +@media (min-width: 40.0625em) { + .govuk-body, + .govuk-body-m { + margin-bottom: 10px; + } + + h2, + .dfe-heading-l, + .govuk-heading-l { + margin-top: 45px; + } + + h3, + .dfe-heading-s, + .govuk-heading-s, + .dfe-headin-m { + padding-top: 10px; + margin-top: 35px; + } + + rich-text > p.govuk-body { + margin-top: 20px; + margin-bottom: 20px; + } +} diff --git a/src/Dfe.PlanTech.Web.Node/styles/scss/govuk-header.scss b/src/Dfe.PlanTech.Web.Node/styles/scss/govuk-header.scss new file mode 100644 index 000000000..979453525 --- /dev/null +++ b/src/Dfe.PlanTech.Web.Node/styles/scss/govuk-header.scss @@ -0,0 +1,72 @@ +/* DFE HEADER - CODE FROM DFE DESIGN GUIDE AND WITH EDITS --------------------------------------------------------- */ +.govuk-header { + background-color: #003a69; +} + +.govuk-header__container { + position: relative; + margin-bottom: -10px; + padding-top: 25px; + padding-bottom: 15px; + border-bottom: 10px solid #347ca9; +} + +.govuk-header__product-name, +.govuk-header__logotype-text { + line-height: 2.5rem !important; + font-size: 1.2rem; +} + +.app-header .govuk-header__logo { + width: 85%; +} + +.app-header .govuk-header__content { + width: 0; +} + +.govuk-header__logotype-crown-fallback-image { + height: 45px; + width: 45px; +} + +.govuk-header__logotype-text::after { + content: "|"; +} + +.govuk-header__logotype { + margin-right: 0; +} + +.govuk-header__navigation-item--active a:link, +.govuk-header__navigation-item--active a:hover, +.govuk-header__navigation-item--active a:visited { + color: #f3f2f1; + text-decoration: underline; + text-decoration-thickness: 3px; + text-underline-offset: 0.1em; +} + +.edf-hero-banner { + margin-top: -10px !important; + margin-bottom: 40px; +} + +@media (max-width: 40.0625em) { + .govuk-header__product-name { + max-width: 80%; + line-height: 1.2rem !important; + font-size: 1rem; + } + + .govuk-header__logotype-text { + min-width: 100%; + line-height: 2.2rem !important; + font-size: 1rem; + } + + .edf-hero-banner { + margin-top: 0px !important; + margin-bottom: 20px; + } +} diff --git a/src/Dfe.PlanTech.Web.Node/styles/scss/hero-banner.scss b/src/Dfe.PlanTech.Web.Node/styles/scss/hero-banner.scss new file mode 100644 index 000000000..4e936ba67 --- /dev/null +++ b/src/Dfe.PlanTech.Web.Node/styles/scss/hero-banner.scss @@ -0,0 +1,12 @@ +/* HOMEPAGE HERO BANNER ----------------------- */ +.app-section-beta { + padding: 30px 0; +} + +.app-section-beta__blue { + background-color: #347ca9; +} + +.body-header-font { + color: white; +} diff --git a/src/Dfe.PlanTech.Web.Node/styles/scss/overrides.scss b/src/Dfe.PlanTech.Web.Node/styles/scss/overrides.scss index 3eef386fa..58f6ec537 100644 --- a/src/Dfe.PlanTech.Web.Node/styles/scss/overrides.scss +++ b/src/Dfe.PlanTech.Web.Node/styles/scss/overrides.scss @@ -1,6 +1,8 @@ -/* STANDARD COLOURS */ +@use "../../node_modules/dfe-frontend-alpha/packages/dfefrontend.scss"; + * { - font-family: BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif !important; + font-family: BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, + Cantarell, "Helvetica Neue", sans-serif !important; } .logo { @@ -10,174 +12,33 @@ } .govuk-table { - margin-top: 30px; - margin-bottom: 30px; -} - -@media (min-width: 40.0625em) { - .govuk-button--start { - margin-bottom: 0 !important; - } + margin-top: 30px; + margin-bottom: 30px; } a.govuk-home-link { - position: relative; - display: inline-block; - margin-top: 15px; - margin-bottom: 15px; -} - -/* DFE CARD COMPONENT - NEW ---------------------------- */ -.dfe-section-card { - padding: 16px; - margin-bottom: 20px; - flex: 1; - background-color: #f3f2f1; -} - -.dfe-section-card__container { - display: flex; - width: 100; -} - -@media (max-width: 40.0525em) { - .dfe-section-card__container { - display: grid; - width: 100; - } -} - -/* ASIDE COMPONENT - NEW ---------------------------- */ -.app-related-items { - border-top: 2px solid #347ca9; - padding-top: 10px; -} - -.app-related-items .govuk-list > li { - margin-bottom: 10px; -} - -/* HOMEPAGE HERO BANNER ----------------------- */ -.app-section-beta { - padding: 30px 0; -} - -.app-section-beta__blue { - background-color: #347ca9; -} - -.body-header-font { - color: white; -} - -/* DFE HEADER - CODE FROM DFE DESIGN GUIDE AND WITH EDITS --------------------------------------------------------- */ -.govuk-header { - background-color: #003a69; -} - -.govuk-header__container { position: relative; - margin-bottom: -10px; - padding-top: 25px; - padding-bottom: 15px; - border-bottom: 10px solid #347ca9; -} - -.govuk-header__product-name, -.govuk-header__logotype-text { - line-height: 2.5rem !important; - font-size: 1.2rem; -} - -.app-header .govuk-header__logo { - width: 85%; -} - -.app-header .govuk-header__content { - width: 0; -} - -.govuk-header__logotype-crown-fallback-image { - height: 45px; - width: 45px; -} - -.govuk-header__logotype-text::after { - content: "|"; -} - -.govuk-header__logotype { - margin-right: 0; -} - -.govuk-header__navigation-item--active a:link, -.govuk-header__navigation-item--active a:hover, -.govuk-header__navigation-item--active a:visited { - color: #f3f2f1; - text-decoration: underline; - text-decoration-thickness: 3px; - text-underline-offset: 0.1em; -} - -.edf-hero-banner { - margin-top: -10px !important; - margin-bottom: 40px; -} - -@media (max-width: 40.0625em) { - .govuk-header__product-name { - max-width: 80%; - line-height: 1.2rem !important; - font-size: 1rem; - } - - .govuk-header__logotype-text { - min-width: 100%; - line-height: 2.2rem !important; - font-size: 1rem; - } - - .edf-hero-banner { - margin-top: 0px !important; - margin-bottom: 20px; - } -} - -/* OVERRIDE GOVUK ERROR MESSAGE FOR INLINE ERRORS IN TASK LIST ------------------------------------------------ */ -strong.app-task-list__task-name > p.govuk-error-message { - margin-bottom: 0px; -} - -rich-text > p.govuk-body { + display: inline-block; margin-top: 15px; margin-bottom: 15px; } -@media (min-width: 40.0625em) { - .govuk-body, - .govuk-body-m { - margin-bottom: 10px; +//Remove the padding from paragraphs within lists +li { + p.govuk-body { + margin-top: 0px; + margin-bottom: 0px; } +} - h2, - .dfe-heading-l, - .govuk-heading-l { - margin-top: 45px; - } +div.govuk-width-container { + @extend .dfe-width-container; +} - h3, - .dfe-heading-s, - .govuk-heading-s, - .dfe-headin-m { - padding-top: 10px; - margin-top: 35px; - } +strong.govuk-tag { + text-transform: lowercase; - rich-text > p.govuk-body { - margin-top: 20px; - margin-bottom: 20px; + &:first-letter { + text-transform: uppercase; } } diff --git a/src/Dfe.PlanTech.Web.Node/styles/scss/step-by-step.scss b/src/Dfe.PlanTech.Web.Node/styles/scss/step-by-step.scss new file mode 100644 index 000000000..35c91be7e --- /dev/null +++ b/src/Dfe.PlanTech.Web.Node/styles/scss/step-by-step.scss @@ -0,0 +1,6 @@ +@import "../../node_modules/govuk-frontend/dist/govuk/all.scss"; + +//Step-by-step navigation pattern. See https://design-system.service.gov.uk/patterns/step-by-step-navigation/ +@import "../../node_modules/@govuk-prototype-kit/step-by-step/sass/_step-by-step-navigation.scss"; +@import "../../node_modules/@govuk-prototype-kit/step-by-step/sass/_step-by-step-navigation-related.scss"; +@import "../../node_modules/@govuk-prototype-kit/step-by-step/sass/_step-by-step-navigation-header.scss"; diff --git a/src/Dfe.PlanTech.Web/Dfe.PlanTech.Web.csproj b/src/Dfe.PlanTech.Web/Dfe.PlanTech.Web.csproj index 45631ddc8..5e30cd206 100644 --- a/src/Dfe.PlanTech.Web/Dfe.PlanTech.Web.csproj +++ b/src/Dfe.PlanTech.Web/Dfe.PlanTech.Web.csproj @@ -16,30 +16,24 @@ - - - + + + - - - + + + - - + + - - - - + + + + - + diff --git a/src/Dfe.PlanTech.Web/Helpers/RouteDataExtensions.cs b/src/Dfe.PlanTech.Web/Helpers/RouteDataExtensions.cs index f655a4d7a..c93de13b8 100644 --- a/src/Dfe.PlanTech.Web/Helpers/RouteDataExtensions.cs +++ b/src/Dfe.PlanTech.Web/Helpers/RouteDataExtensions.cs @@ -12,8 +12,7 @@ public static class RouteDataExtensions // DefaultPageTitle. public static string GetTitleForPage(this RouteData routeData) { - var sectionSlug = routeData.Values.OrderByDescending(routePart => routePart.Key) - .Where(routePart => + var sectionSlug = routeData.Values.Where(routePart => { if (routePart.Key == SectionSlugKey) { @@ -25,6 +24,7 @@ public static string GetTitleForPage(this RouteData routeData) return !string.IsNullOrEmpty(routePartValue) && routePartValue != "/" && !routePartValue.Any(char.IsNumber); }) + .OrderByDescending(routePart => routePart.Key) .Select(routePart => routePart.Value!.ToString()) .FirstOrDefault(); diff --git a/src/Dfe.PlanTech.Web/Models/PageViewModel.cs b/src/Dfe.PlanTech.Web/Models/PageViewModel.cs index af9ba3454..db6db4b9a 100644 --- a/src/Dfe.PlanTech.Web/Models/PageViewModel.cs +++ b/src/Dfe.PlanTech.Web/Models/PageViewModel.cs @@ -6,7 +6,7 @@ namespace Dfe.PlanTech.Web.Models; public class PageViewModel { - public Page Page { get; init; } = null!; + public Page Page { get; init; } public PageViewModel(Page page, Controller controller, IUser user, ILogger logger) { diff --git a/src/Dfe.PlanTech.Web/ProgramExtensions.cs b/src/Dfe.PlanTech.Web/ProgramExtensions.cs index 15769c7de..d83ead493 100644 --- a/src/Dfe.PlanTech.Web/ProgramExtensions.cs +++ b/src/Dfe.PlanTech.Web/ProgramExtensions.cs @@ -107,7 +107,7 @@ public static IServiceCollection AddCaching(this IServiceCollection services) public static IServiceCollection AddDatabase(this IServiceCollection services, IConfiguration configuration) { - var serviceProvider = services.BuildServiceProvider(); + IServiceProvider serviceProvider = services.BuildServiceProvider(); void databaseOptionsAction(DbContextOptionsBuilder options) => options.UseSqlServer(configuration.GetConnectionString("Database")); diff --git a/src/Dfe.PlanTech.Web/TagHelpers/TaskList/TagColour.cs b/src/Dfe.PlanTech.Web/TagHelpers/TaskList/TagColour.cs index c0b87bd3c..39a0c0677 100644 --- a/src/Dfe.PlanTech.Web/TagHelpers/TaskList/TagColour.cs +++ b/src/Dfe.PlanTech.Web/TagHelpers/TaskList/TagColour.cs @@ -1,10 +1,17 @@ namespace Dfe.PlanTech.Web.TagHelpers.TaskList; -public enum TagColour +public static class TagColour { - Default, - Blue, - Grey, - Red, - DarkBlue, + public readonly static string Default = "blue"; + public readonly static string Blue = "blue"; + public readonly static string Grey = "grey"; + public readonly static string LightBlue = "light-blue"; + public readonly static string Red = "red"; + + private readonly static string[] _colours = [Blue, Grey, LightBlue, Red]; + + public static string GetMatchingColour(string? toMatch) + => string.IsNullOrEmpty(toMatch) ? + Default : + _colours.FirstOrDefault(colour => string.Equals(colour, toMatch, StringComparison.InvariantCultureIgnoreCase), Default); } \ No newline at end of file diff --git a/src/Dfe.PlanTech.Web/TagHelpers/TaskList/TaskListTagTagHelper.cs b/src/Dfe.PlanTech.Web/TagHelpers/TaskList/TaskListTagTagHelper.cs index 59fc13cee..be0dedf98 100644 --- a/src/Dfe.PlanTech.Web/TagHelpers/TaskList/TaskListTagTagHelper.cs +++ b/src/Dfe.PlanTech.Web/TagHelpers/TaskList/TaskListTagTagHelper.cs @@ -16,7 +16,7 @@ public TaskListTagTagHelper() TagName = "strong"; } - protected TagColour TagColour => Enum.TryParse(Colour, true, out TagColour colour) ? colour : TagColour.Default; + protected string TagClassColour => TagColour.GetMatchingColour(Colour); protected override string CreateClassesAttribute() { @@ -40,13 +40,12 @@ private void AppendExtraClasses(StringBuilder stringBuilder) private void AppendTagColour(StringBuilder stringBuilder) { - var tagColour = TagColour; - if (tagColour != TagColour.Default) + if (TagClassColour != TagColour.Default) { stringBuilder.Append(' '); stringBuilder.Append(_class); stringBuilder.Append("--"); - stringBuilder.Append(tagColour.ToString().ToLower()); + stringBuilder.Append(TagClassColour); } } diff --git a/src/Dfe.PlanTech.Web/TagHelpers/WarningComponentTagHelper.cs b/src/Dfe.PlanTech.Web/TagHelpers/WarningComponentTagHelper.cs index 0d62aa904..dd5d92147 100644 --- a/src/Dfe.PlanTech.Web/TagHelpers/WarningComponentTagHelper.cs +++ b/src/Dfe.PlanTech.Web/TagHelpers/WarningComponentTagHelper.cs @@ -7,7 +7,7 @@ public class WarningComponentTagHelper : TagHelper public const string OpeningDiv = """
"""; public const string WarningIcon = """"""; public const string OpeningSpan = """"""; - public const string AssistiveText = """Warning"""; + public const string AssistiveText = """Warning"""; public WarningComponentTagHelper() { diff --git a/src/Dfe.PlanTech.Web/ViewComponents/AccordionViewComponent.cs b/src/Dfe.PlanTech.Web/ViewComponents/AccordionViewComponent.cs new file mode 100644 index 000000000..2551d9cf1 --- /dev/null +++ b/src/Dfe.PlanTech.Web/ViewComponents/AccordionViewComponent.cs @@ -0,0 +1,12 @@ +using Dfe.PlanTech.Domain.Content.Interfaces; +using Microsoft.AspNetCore.Mvc; + +namespace Dfe.PlanTech.Web.ViewComponents; + +public class AccordionViewComponent : ViewComponent +{ + public IViewComponentResult Invoke(IEnumerable accordionBlock) + { + return View(accordionBlock); + } +} \ No newline at end of file diff --git a/src/Dfe.PlanTech.Web/ViewComponents/CategorySectionViewComponent.cs b/src/Dfe.PlanTech.Web/ViewComponents/CategorySectionViewComponent.cs index 57dd26d66..5218c6c34 100644 --- a/src/Dfe.PlanTech.Web/ViewComponents/CategorySectionViewComponent.cs +++ b/src/Dfe.PlanTech.Web/ViewComponents/CategorySectionViewComponent.cs @@ -7,26 +7,19 @@ namespace Dfe.PlanTech.Web.ViewComponents; -public class CategorySectionViewComponent : ViewComponent +public class CategorySectionViewComponent(ILogger logger, IGetSubmissionStatusesQuery query) : ViewComponent { - private readonly ILogger _logger; - private readonly IGetSubmissionStatusesQuery _query; + private readonly ILogger _logger = logger; + private readonly IGetSubmissionStatusesQuery _query = query; - - public CategorySectionViewComponent(ILogger logger, IGetSubmissionStatusesQuery query) - { - _logger = logger; - _query = query; - } - - public IViewComponentResult Invoke(Category category) + public async Task InvokeAsync(Category category) { - var viewModel = GenerateViewModel(category); + var viewModel = await GenerateViewModel(category); return View(viewModel); } - private CategorySectionViewComponentViewModel GenerateViewModel(Category category) + private async Task GenerateViewModel(Category category) { bool sectionsExist = category.Sections?.Count > 0; @@ -40,7 +33,7 @@ private CategorySectionViewComponentViewModel GenerateViewModel(Category categor }; } - category = RetrieveSectionStatuses(category); + category = await RetrieveSectionStatuses(category); return new CategorySectionViewComponentViewModel() { @@ -70,7 +63,7 @@ private static void SetCategorySectionDtoTagWithCurrentStatus(Category category, if (sectionStatusCompleted != null) { - categorySectionDto.TagColour = sectionStatusCompleted == 1 ? TagColour.DarkBlue.ToString() : TagColour.Blue.ToString(); + categorySectionDto.TagColour = sectionStatusCompleted == 1 ? TagColour.Blue : TagColour.LightBlue; categorySectionDto.TagText = sectionStatusCompleted == 1 ? "COMPLETE" : "IN PROGRESS"; } else @@ -98,11 +91,11 @@ private IEnumerable GetCategorySectionViewComponentViewModel } } - public Category RetrieveSectionStatuses(Category category) + public async Task RetrieveSectionStatuses(Category category) { try { - category.SectionStatuses = _query.GetSectionSubmissionStatuses(category.Sections).ToList(); + category.SectionStatuses = await _query.GetSectionSubmissionStatuses(category.Sections); category.Completed = category.SectionStatuses.Count(x => x.Completed == 1); category.RetrievalError = false; return category; diff --git a/src/Dfe.PlanTech.Web/ViewComponents/RecommendationsViewComponent.cs b/src/Dfe.PlanTech.Web/ViewComponents/RecommendationsViewComponent.cs index 39b39ef5a..461174556 100644 --- a/src/Dfe.PlanTech.Web/ViewComponents/RecommendationsViewComponent.cs +++ b/src/Dfe.PlanTech.Web/ViewComponents/RecommendationsViewComponent.cs @@ -6,19 +6,13 @@ namespace Dfe.PlanTech.Web.ViewComponents; -public class RecommendationsViewComponent : ViewComponent +public class RecommendationsViewComponent(ILogger logger, + IGetSubmissionStatusesQuery query) : ViewComponent { - private readonly ILogger _logger; - private readonly IGetSubmissionStatusesQuery _query; + private readonly ILogger _logger = logger; + private readonly IGetSubmissionStatusesQuery _query = query; - public RecommendationsViewComponent(ILogger logger, - IGetSubmissionStatusesQuery query) - { - _logger = logger; - _query = query; - } - - public IViewComponentResult Invoke(IEnumerable categories) + public async Task InvokeAsync(IEnumerable categories) { var allSectionsOfCombinedCategories = new List(); var allSectionStatusesOfCombinedCategories = new List(); @@ -31,7 +25,7 @@ public IViewComponentResult Invoke(IEnumerable categories) recommendationsAvailable = true; } - var categoryElement = RetrieveSectionStatuses(category); + var categoryElement = await RetrieveSectionStatuses(category); allSectionsOfCombinedCategories.AddRange(categoryElement.Sections); allSectionStatusesOfCombinedCategories.AddRange(categoryElement.SectionStatuses); } @@ -75,11 +69,11 @@ private IEnumerable GetRecommendationsVie } } - public ICategoryComponent RetrieveSectionStatuses(ICategoryComponent category) + public async Task RetrieveSectionStatuses(ICategoryComponent category) { try { - category.SectionStatuses = _query.GetSectionSubmissionStatuses(category.Sections); + category.SectionStatuses = await _query.GetSectionSubmissionStatuses(category.Sections); category.Completed = category.SectionStatuses.Count(x => x.Completed == 1); category.RetrievalError = false; diff --git a/src/Dfe.PlanTech.Web/Views/Shared/Components/Accordion/Default.cshtml b/src/Dfe.PlanTech.Web/Views/Shared/Components/Accordion/Default.cshtml new file mode 100644 index 000000000..f2741b3fc --- /dev/null +++ b/src/Dfe.PlanTech.Web/Views/Shared/Components/Accordion/Default.cshtml @@ -0,0 +1,41 @@ +@model IEnumerable + +
+ +
+
    + @foreach (var accordion in Model) + { +
  1. +
    +

    + + + + Step@accordion.Order + + + + + + @accordion.Title + +

    +
    + +
    + +
      +
    1. + + @accordion.Heading + +
    2. +
    + +
    +
  2. + } +
+
+
\ No newline at end of file diff --git a/src/Dfe.PlanTech.Web/Views/Shared/Components/Page.cshtml b/src/Dfe.PlanTech.Web/Views/Shared/Components/Page.cshtml index f70f94ddb..bfcfb5d92 100644 --- a/src/Dfe.PlanTech.Web/Views/Shared/Components/Page.cshtml +++ b/src/Dfe.PlanTech.Web/Views/Shared/Components/Page.cshtml @@ -2,42 +2,39 @@ @model Dfe.PlanTech.Domain.Content.Models.Page; -
-
- @{ - foreach (var content in Model.BeforeTitleContent) - { - await Html.RenderPartialAsync("Components/PageComponentFactory", content); - } - - if (Model.DisplayTopicTitle) - { - @Model.SectionTitle - } - - if (Model.Title != null) - { - await Html.RenderPartialAsync("Components/Title", Model.Title); - } - - var categoriesList = new List(); - - var showRecommendations = false; - - foreach (var content in Model.Content) - { - await Html.RenderPartialAsync("Components/PageComponentFactory", content); - - if (content is ICategoryComponent category) - { - showRecommendations = true; - categoriesList.Add(category); - } - } - if (showRecommendations) - { - @await Component.InvokeAsync("Recommendations", new { categories = categoriesList.ToArray() }) - } +@{ + foreach (var content in Model.BeforeTitleContent) + { + await Html.RenderPartialAsync("Components/PageComponentFactory", content); + } + + if (Model.DisplayTopicTitle) + { + @Model.SectionTitle + } + + if (Model.Title != null) + { + await Html.RenderPartialAsync("Components/Title", Model.Title); + } + + var categoriesList = new List(); + + var showRecommendations = false; + + foreach (var content in Model.Content) + { + await Html.RenderPartialAsync("Components/PageComponentFactory", content); + + if (content is ICategoryComponent category) + { + showRecommendations = true; + categoriesList.Add(category); } -
-
\ No newline at end of file + } + + if (showRecommendations) + { + @await Component.InvokeAsync("Recommendations", new { categories = categoriesList.ToArray() }) + } +} \ No newline at end of file diff --git a/src/Dfe.PlanTech.Web/Views/Shared/_Layout.cshtml b/src/Dfe.PlanTech.Web/Views/Shared/_Layout.cshtml index ea3059f0b..f83dd0bb3 100644 --- a/src/Dfe.PlanTech.Web/Views/Shared/_Layout.cshtml +++ b/src/Dfe.PlanTech.Web/Views/Shared/_Layout.cshtml @@ -3,11 +3,14 @@ @using Dfe.PlanTech.Web.Helpers; @using System.Globalization; + @section Head { - @Html.Raw(GtmConfiguration.Analytics) - @Html.Raw(GtmConfiguration.Head) - @RenderSection("Head", false) + + + @Html.Raw(GtmConfiguration.Analytics) + @Html.Raw(GtmConfiguration.Head) + @RenderSection("Head", false) } @{ @@ -28,18 +31,23 @@ await Html.RenderPartialAsync("_Header"); } -@RenderSection("Header", false) + @RenderSection("Header", false) } @section BeforeContent { @{ await Html.RenderPartialAsync("BetaHeader"); } -@RenderSection("BeforeContent", required: false) + @RenderSection("BeforeContent", required: false) + + @{ + //Add relevant tags for GovUK front-end CSS to body + } + } -@RenderBody() +@RenderBody() @section Footer { @{ await Html.RenderPartialAsync("_Footer"); @@ -48,4 +56,11 @@ @section BodyEnd { -} \ No newline at end of file + + + +} diff --git a/src/Dfe.PlanTech.Web/wwwroot/assets/images/favicon.svg b/src/Dfe.PlanTech.Web/wwwroot/assets/images/favicon.svg new file mode 100644 index 000000000..67d7ef919 --- /dev/null +++ b/src/Dfe.PlanTech.Web/wwwroot/assets/images/favicon.svg @@ -0,0 +1 @@ + diff --git a/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-icon-180.png b/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-icon-180.png new file mode 100644 index 000000000..7c33beba8 Binary files /dev/null and b/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-icon-180.png differ diff --git a/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-icon-192.png b/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-icon-192.png new file mode 100644 index 000000000..35e51d7a7 Binary files /dev/null and b/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-icon-192.png differ diff --git a/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-icon-512.png b/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-icon-512.png new file mode 100644 index 000000000..f5eb6f461 Binary files /dev/null and b/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-icon-512.png differ diff --git a/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-icon-mask.svg b/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-icon-mask.svg new file mode 100644 index 000000000..e10ff6cc3 --- /dev/null +++ b/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-icon-mask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-opengraph-image.png b/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-opengraph-image.png index 355284fbf..4d0e312ff 100644 Binary files a/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-opengraph-image.png and b/src/Dfe.PlanTech.Web/wwwroot/assets/images/govuk-opengraph-image.png differ diff --git a/src/Dfe.PlanTech.Web/wwwroot/css/application.css b/src/Dfe.PlanTech.Web/wwwroot/css/application.css index 32ea444f9..ee8f9b6a5 100644 --- a/src/Dfe.PlanTech.Web/wwwroot/css/application.css +++ b/src/Dfe.PlanTech.Web/wwwroot/css/application.css @@ -1,3 +1,3 @@ -@charset "UTF-8";:root{--govuk-frontend-version: "4.7.0"}.govuk-link{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline}@font-face{font-family:GDS Transport;font-style:normal;font-weight:400;src:url(/assets/fonts/light-94a07e06a1-v2.woff2) format("woff2"),url(/assets/fonts/light-f591b13f7d-v2.woff) format("woff");font-display:fallback}@font-face{font-family:GDS Transport;font-style:normal;font-weight:700;src:url(/assets/fonts/bold-b542beb274-v2.woff2) format("woff2"),url(/assets/fonts/bold-affa96571d-v2.woff) format("woff");font-display:fallback}@media print{.govuk-link{font-family:sans-serif}}.govuk-link:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-link:link{color:#1d70b8}.govuk-link:visited{color:#4c2c92}.govuk-link:hover{color:#003078}.govuk-link:active{color:#0b0c0c}.govuk-link:focus{color:#0b0c0c}@media print{[href^="/"].govuk-link:after,[href^="http://"].govuk-link:after,[href^="https://"].govuk-link:after{content:" (" attr(href) ")";font-size:90%;word-wrap:break-word}}.govuk-link--muted:link,.govuk-link--muted:visited{color:#505a5f}.govuk-link--muted:hover,.govuk-link--muted:active{color:#0b0c0c}.govuk-link--muted:focus{color:#0b0c0c}.govuk-link--text-colour:link,.govuk-link--text-colour:visited{color:#0b0c0c}@media print{.govuk-link--text-colour:link,.govuk-link--text-colour:visited{color:#000}}.govuk-link--text-colour:hover{color:rgba(11,12,12,.99)}.govuk-link--text-colour:active,.govuk-link--text-colour:focus{color:#0b0c0c}@media print{.govuk-link--text-colour:active,.govuk-link--text-colour:focus{color:#000}}.govuk-link--inverse:link,.govuk-link--inverse:visited{color:#fff}.govuk-link--inverse:hover,.govuk-link--inverse:active{color:rgba(255,255,255,.99)}.govuk-link--inverse:focus{color:#0b0c0c}.govuk-link--no-underline:not(:hover):not(:active){text-decoration:none}.govuk-link--no-visited-state:link,.govuk-link--no-visited-state:visited{color:#1d70b8}.govuk-link--no-visited-state:hover{color:#003078}.govuk-link--no-visited-state:active{color:#0b0c0c}.govuk-link--no-visited-state:focus{color:#0b0c0c}.govuk-list{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;color:#0b0c0c;margin-top:0;margin-bottom:15px;padding-left:0;list-style-type:none}@media print{.govuk-list{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-list{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-list{font-size:14pt;line-height:1.15}}@media print{.govuk-list{color:#000}}@media (min-width: 40.0625em){.govuk-list{margin-bottom:20px}}.govuk-list .govuk-list{margin-top:10px}.govuk-list>li{margin-bottom:5px}.govuk-list--bullet{padding-left:20px;list-style-type:disc}.govuk-list--number{padding-left:20px;list-style-type:decimal}.govuk-list--bullet>li,.govuk-list--number>li{margin-bottom:0}@media (min-width: 40.0625em){.govuk-list--bullet>li,.govuk-list--number>li{margin-bottom:5px}}.govuk-list--spaced>li{margin-bottom:10px}@media (min-width: 40.0625em){.govuk-list--spaced>li{margin-bottom:15px}}.govuk-heading-xl{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:32px;font-size:2rem;line-height:1.09375;display:block;margin-top:0;margin-bottom:30px}@media print{.govuk-heading-xl{color:#000}}@media print{.govuk-heading-xl{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-heading-xl{font-size:48px;font-size:3rem;line-height:1.0416666667}}@media print{.govuk-heading-xl{font-size:32pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-heading-xl{margin-bottom:50px}}.govuk-heading-l{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:24px;font-size:1.5rem;line-height:1.0416666667;display:block;margin-top:0;margin-bottom:20px}@media print{.govuk-heading-l{color:#000}}@media print{.govuk-heading-l{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-heading-l{font-size:36px;font-size:2.25rem;line-height:1.1111111111}}@media print{.govuk-heading-l{font-size:24pt;line-height:1.05}}@media (min-width: 40.0625em){.govuk-heading-l{margin-bottom:30px}}.govuk-heading-m{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:18px;font-size:1.125rem;line-height:1.1111111111;display:block;margin-top:0;margin-bottom:15px}@media print{.govuk-heading-m{color:#000}}@media print{.govuk-heading-m{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-heading-m{font-size:24px;font-size:1.5rem;line-height:1.25}}@media print{.govuk-heading-m{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-heading-m{margin-bottom:20px}}.govuk-heading-s{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:16px;font-size:1rem;line-height:1.25;display:block;margin-top:0;margin-bottom:15px}@media print{.govuk-heading-s{color:#000}}@media print{.govuk-heading-s{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-heading-s{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-heading-s{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-heading-s{margin-bottom:20px}}.govuk-caption-xl{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:18px;font-size:1.125rem;line-height:1.1111111111;display:block;margin-bottom:5px;color:#505a5f}@media print{.govuk-caption-xl{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-caption-xl{font-size:27px;font-size:1.6875rem;line-height:1.1111111111}}@media print{.govuk-caption-xl{font-size:18pt;line-height:1.15}}.govuk-caption-l{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:18px;font-size:1.125rem;line-height:1.1111111111;display:block;margin-bottom:5px;color:#505a5f}@media print{.govuk-caption-l{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-caption-l{font-size:24px;font-size:1.5rem;line-height:1.25}}@media print{.govuk-caption-l{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-caption-l{margin-bottom:0}}.govuk-caption-m{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;display:block;color:#505a5f}@media print{.govuk-caption-m{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-caption-m{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-caption-m{font-size:14pt;line-height:1.15}}.govuk-body-lead,.govuk-body-l{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:18px;font-size:1.125rem;line-height:1.1111111111;margin-top:0;margin-bottom:20px}@media print{.govuk-body-lead,.govuk-body-l{color:#000}}@media print{.govuk-body-lead,.govuk-body-l{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-body-lead,.govuk-body-l{font-size:24px;font-size:1.5rem;line-height:1.25}}@media print{.govuk-body-lead,.govuk-body-l{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-body-lead,.govuk-body-l{margin-bottom:30px}}.govuk-body,.govuk-body-m{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;margin-top:0;margin-bottom:15px}@media print{.govuk-body,.govuk-body-m{color:#000}}@media print{.govuk-body,.govuk-body-m{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-body,.govuk-body-m{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-body,.govuk-body-m{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-body,.govuk-body-m{margin-bottom:20px}}.govuk-body-s{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:14px;font-size:.875rem;line-height:1.1428571429;margin-top:0;margin-bottom:15px}@media print{.govuk-body-s{color:#000}}@media print{.govuk-body-s{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-body-s{font-size:16px;font-size:1rem;line-height:1.25}}@media print{.govuk-body-s{font-size:14pt;line-height:1.2}}@media (min-width: 40.0625em){.govuk-body-s{margin-bottom:20px}}.govuk-body-xs{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:12px;font-size:.75rem;line-height:1.25;margin-top:0;margin-bottom:15px}@media print{.govuk-body-xs{color:#000}}@media print{.govuk-body-xs{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-body-xs{font-size:14px;font-size:.875rem;line-height:1.4285714286}}@media print{.govuk-body-xs{font-size:12pt;line-height:1.2}}@media (min-width: 40.0625em){.govuk-body-xs{margin-bottom:20px}}.govuk-body-l+.govuk-heading-l,.govuk-body-lead+.govuk-heading-l{padding-top:5px}@media (min-width: 40.0625em){.govuk-body-l+.govuk-heading-l,.govuk-body-lead+.govuk-heading-l{padding-top:10px}}.govuk-body-m+.govuk-heading-l,.govuk-body+.govuk-heading-l,.govuk-body-s+.govuk-heading-l,.govuk-list+.govuk-heading-l{padding-top:15px}@media (min-width: 40.0625em){.govuk-body-m+.govuk-heading-l,.govuk-body+.govuk-heading-l,.govuk-body-s+.govuk-heading-l,.govuk-list+.govuk-heading-l{padding-top:20px}}.govuk-body-m+.govuk-heading-m,.govuk-body+.govuk-heading-m,.govuk-body-s+.govuk-heading-m,.govuk-list+.govuk-heading-m,.govuk-body-m+.govuk-heading-s,.govuk-body+.govuk-heading-s,.govuk-body-s+.govuk-heading-s,.govuk-list+.govuk-heading-s{padding-top:5px}@media (min-width: 40.0625em){.govuk-body-m+.govuk-heading-m,.govuk-body+.govuk-heading-m,.govuk-body-s+.govuk-heading-m,.govuk-list+.govuk-heading-m,.govuk-body-m+.govuk-heading-s,.govuk-body+.govuk-heading-s,.govuk-body-s+.govuk-heading-s,.govuk-list+.govuk-heading-s{padding-top:10px}}.govuk-section-break{margin:0;border:0}.govuk-section-break--xl{margin-top:30px;margin-bottom:30px}@media (min-width: 40.0625em){.govuk-section-break--xl{margin-top:50px}}@media (min-width: 40.0625em){.govuk-section-break--xl{margin-bottom:50px}}.govuk-section-break--l{margin-top:20px;margin-bottom:20px}@media (min-width: 40.0625em){.govuk-section-break--l{margin-top:30px}}@media (min-width: 40.0625em){.govuk-section-break--l{margin-bottom:30px}}.govuk-section-break--m{margin-top:15px;margin-bottom:15px}@media (min-width: 40.0625em){.govuk-section-break--m{margin-top:20px}}@media (min-width: 40.0625em){.govuk-section-break--m{margin-bottom:20px}}.govuk-section-break--visible{border-bottom:1px solid #b1b4b6}.govuk-button-group{margin-bottom:5px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center}@media (min-width: 40.0625em){.govuk-button-group{margin-bottom:15px}}.govuk-button-group .govuk-link{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.1875;display:inline-block;max-width:100%;margin-top:5px;margin-bottom:20px;text-align:center}@media print{.govuk-button-group .govuk-link{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-button-group .govuk-link{font-size:19px;font-size:1.1875rem;line-height:1}}@media print{.govuk-button-group .govuk-link{font-size:14pt;line-height:19px}}.govuk-button-group .govuk-button{margin-bottom:17px}@media (min-width: 40.0625em){.govuk-button-group{margin-right:-15px;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:baseline;align-items:baseline}.govuk-button-group .govuk-button,.govuk-button-group .govuk-link{margin-right:15px}.govuk-button-group .govuk-link{text-align:left}}.govuk-form-group{margin-bottom:20px}.govuk-form-group:after{content:"";display:block;clear:both}@media (min-width: 40.0625em){.govuk-form-group{margin-bottom:30px}}.govuk-form-group .govuk-form-group:last-of-type{margin-bottom:0}.govuk-form-group--error{padding-left:15px;border-left:5px solid #d4351c}.govuk-form-group--error .govuk-form-group{padding:0;border:0}.govuk-grid-row{margin-right:-15px;margin-left:-15px}.govuk-grid-row:after{content:"";display:block;clear:both}.govuk-grid-column-one-quarter{box-sizing:border-box;width:100%;padding:0 15px}@media (min-width: 40.0625em){.govuk-grid-column-one-quarter{width:25%;float:left}}.govuk-grid-column-one-third{box-sizing:border-box;width:100%;padding:0 15px}@media (min-width: 40.0625em){.govuk-grid-column-one-third{width:33.3333333333%;float:left}}.govuk-grid-column-one-half{box-sizing:border-box;width:100%;padding:0 15px}@media (min-width: 40.0625em){.govuk-grid-column-one-half{width:50%;float:left}}.govuk-grid-column-two-thirds{box-sizing:border-box;width:100%;padding:0 15px}@media (min-width: 40.0625em){.govuk-grid-column-two-thirds{width:66.6666666667%;float:left}}.govuk-grid-column-three-quarters{box-sizing:border-box;width:100%;padding:0 15px}@media (min-width: 40.0625em){.govuk-grid-column-three-quarters{width:75%;float:left}}.govuk-grid-column-full{box-sizing:border-box;width:100%;padding:0 15px}@media (min-width: 40.0625em){.govuk-grid-column-full{width:100%;float:left}}.govuk-grid-column-one-quarter-from-desktop{box-sizing:border-box;padding:0 15px}@media (min-width: 48.0625em){.govuk-grid-column-one-quarter-from-desktop{width:25%;float:left}}.govuk-grid-column-one-third-from-desktop{box-sizing:border-box;padding:0 15px}@media (min-width: 48.0625em){.govuk-grid-column-one-third-from-desktop{width:33.3333333333%;float:left}}.govuk-grid-column-one-half-from-desktop{box-sizing:border-box;padding:0 15px}@media (min-width: 48.0625em){.govuk-grid-column-one-half-from-desktop{width:50%;float:left}}.govuk-grid-column-two-thirds-from-desktop{box-sizing:border-box;padding:0 15px}@media (min-width: 48.0625em){.govuk-grid-column-two-thirds-from-desktop{width:66.6666666667%;float:left}}.govuk-grid-column-three-quarters-from-desktop{box-sizing:border-box;padding:0 15px}@media (min-width: 48.0625em){.govuk-grid-column-three-quarters-from-desktop{width:75%;float:left}}.govuk-grid-column-full-from-desktop{box-sizing:border-box;padding:0 15px}@media (min-width: 48.0625em){.govuk-grid-column-full-from-desktop{width:100%;float:left}}.govuk-main-wrapper{display:block;padding-top:20px;padding-bottom:20px}@media (min-width: 40.0625em){.govuk-main-wrapper{padding-top:40px;padding-bottom:40px}}.govuk-main-wrapper--auto-spacing:first-child,.govuk-main-wrapper--l{padding-top:30px}@media (min-width: 40.0625em){.govuk-main-wrapper--auto-spacing:first-child,.govuk-main-wrapper--l{padding-top:50px}}.govuk-template{background-color:#f3f2f1;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}@supports (position: -webkit-sticky) or (position: sticky){.govuk-template{scroll-padding-top:60px}.govuk-template:not(:has(.govuk-exit-this-page)){scroll-padding-top:0}}@media screen{.govuk-template{overflow-y:scroll}}.govuk-template__body{margin:0;background-color:#fff}.govuk-width-container{max-width:960px;margin-right:15px;margin-left:15px}@supports (margin: max(0px)){.govuk-width-container{margin-right:max(15px,calc(15px + env(safe-area-inset-right)));margin-left:max(15px,calc(15px + env(safe-area-inset-left)))}}@media (min-width: 40.0625em){.govuk-width-container{margin-right:30px;margin-left:30px}@supports (margin: max(0px)){.govuk-width-container{margin-right:max(30px,calc(15px + env(safe-area-inset-right)));margin-left:max(30px,calc(15px + env(safe-area-inset-left)))}}}@media (min-width: 1020px){.govuk-width-container{margin-right:auto;margin-left:auto}@supports (margin: max(0px)){.govuk-width-container{margin-right:auto;margin-left:auto}}}.govuk-accordion{margin-bottom:20px}@media (min-width: 40.0625em){.govuk-accordion{margin-bottom:30px}}.govuk-accordion__section{padding-top:15px}.govuk-accordion__section-heading{margin-top:0;margin-bottom:0;padding-top:15px;padding-bottom:15px}.govuk-accordion__section-button{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:18px;font-size:1.125rem;line-height:1.1111111111;color:#0b0c0c;display:block;margin-bottom:0;padding-top:15px}@media print{.govuk-accordion__section-button{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-accordion__section-button{font-size:24px;font-size:1.5rem;line-height:1.25}}@media print{.govuk-accordion__section-button{font-size:18pt;line-height:1.15}}@media print{.govuk-accordion__section-button{color:#000}}.govuk-accordion__section-content>:last-child{margin-bottom:0}.js-enabled .govuk-accordion{border-bottom:1px solid #b1b4b6}.js-enabled .govuk-accordion__section{padding-top:0}.js-enabled .govuk-accordion__section-content{display:none;padding-top:15px;padding-bottom:30px}@media (min-width: 40.0625em){.js-enabled .govuk-accordion__section-content{padding-bottom:50px}}.js-enabled .govuk-accordion__section-content[hidden]{padding-top:0;padding-bottom:0}@supports (content-visibility: hidden){.js-enabled .govuk-accordion__section-content[hidden]{content-visibility:hidden;display:inherit}}.js-enabled .govuk-accordion__section--expanded .govuk-accordion__section-content{display:block}.js-enabled .govuk-accordion__show-all{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;position:relative;z-index:1;margin-bottom:9px;padding:5px 2px 5px 0;border-width:0;color:#1d70b8;background:none;cursor:pointer;-webkit-appearance:none}@media print{.js-enabled .govuk-accordion__show-all{font-family:sans-serif}}@media (min-width: 40.0625em){.js-enabled .govuk-accordion__show-all{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.js-enabled .govuk-accordion__show-all{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.js-enabled .govuk-accordion__show-all{margin-bottom:14px}}.js-enabled .govuk-accordion__show-all::-moz-focus-inner{padding:0;border:0}.js-enabled .govuk-accordion__show-all:hover{color:#0b0c0c;background:#f3f2f1;box-shadow:0 -2px #f3f2f1,0 4px #f3f2f1}.js-enabled .govuk-accordion__show-all:hover .govuk-accordion__section-toggle-text{color:#0b0c0c}.js-enabled .govuk-accordion__show-all:hover .govuk-accordion-nav__chevron{color:#0b0c0c;background:#0b0c0c}.js-enabled .govuk-accordion__show-all:hover .govuk-accordion-nav__chevron:after{color:#f3f2f1}.js-enabled .govuk-accordion__show-all:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.js-enabled .govuk-accordion__show-all:focus .govuk-accordion-nav__chevron{background:#0b0c0c}.js-enabled .govuk-accordion__show-all:focus .govuk-accordion-nav__chevron:after{color:#fd0}.js-enabled .govuk-accordion__section-heading{padding:0}.js-enabled .govuk-accordion-nav__chevron{box-sizing:border-box;display:inline-block;position:relative;width:1.25rem;height:1.25rem;border:.0625rem solid;border-radius:50%;vertical-align:middle}.js-enabled .govuk-accordion-nav__chevron:after{content:"";box-sizing:border-box;display:block;position:absolute;bottom:.3125rem;left:.375rem;width:.375rem;height:.375rem;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);border-top:.125rem solid;border-right:.125rem solid}.js-enabled .govuk-accordion-nav__chevron--down{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.js-enabled .govuk-accordion__section-button{width:100%;padding:10px 0 0;border:0;border-top:1px solid #b1b4b6;border-bottom:10px solid transparent;color:#0b0c0c;background:none;text-align:left;cursor:pointer;-webkit-appearance:none}@media (min-width: 40.0625em){.js-enabled .govuk-accordion__section-button{padding-bottom:10px}}.js-enabled .govuk-accordion__section-button:active{color:#0b0c0c;background:none}.js-enabled .govuk-accordion__section-button:hover{color:#0b0c0c;background:#f3f2f1}.js-enabled .govuk-accordion__section-button:hover .govuk-accordion__section-toggle-text{color:#0b0c0c}.js-enabled .govuk-accordion__section-button:hover .govuk-accordion-nav__chevron{color:#0b0c0c;background:#0b0c0c}.js-enabled .govuk-accordion__section-button:hover .govuk-accordion-nav__chevron:after{color:#f3f2f1}.js-enabled .govuk-accordion__section-button:focus{outline:0}.js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-heading-text-focus,.js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-summary-focus,.js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-toggle-focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.js-enabled .govuk-accordion__section-button:focus .govuk-accordion-nav__chevron{color:#0b0c0c;background:#0b0c0c}.js-enabled .govuk-accordion__section-button:focus .govuk-accordion-nav__chevron:after{color:#fd0}.js-enabled .govuk-accordion__section-button::-moz-focus-inner{padding:0;border:0}.js-enabled .govuk-accordion__section--expanded .govuk-accordion__section-button{padding-bottom:15px;border-bottom:0}@media (min-width: 40.0625em){.js-enabled .govuk-accordion__section--expanded .govuk-accordion__section-button{padding-bottom:20px}}.js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-toggle-focus{padding-bottom:3px}@media (min-width: 48.0625em){.js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-toggle-focus{padding-bottom:2px}}.js-enabled .govuk-accordion__section-toggle,.js-enabled .govuk-accordion__section-heading-text,.js-enabled .govuk-accordion__section-summary{display:block;margin-bottom:13px}.js-enabled .govuk-accordion__section-toggle .govuk-accordion__section-heading-text-focus,.js-enabled .govuk-accordion__section-toggle .govuk-accordion__section-summary-focus,.js-enabled .govuk-accordion__section-toggle .govuk-accordion__section-toggle-focus,.js-enabled .govuk-accordion__section-heading-text .govuk-accordion__section-heading-text-focus,.js-enabled .govuk-accordion__section-heading-text .govuk-accordion__section-summary-focus,.js-enabled .govuk-accordion__section-heading-text .govuk-accordion__section-toggle-focus,.js-enabled .govuk-accordion__section-summary .govuk-accordion__section-heading-text-focus,.js-enabled .govuk-accordion__section-summary .govuk-accordion__section-summary-focus,.js-enabled .govuk-accordion__section-summary .govuk-accordion__section-toggle-focus{display:inline}.js-enabled .govuk-accordion__section-toggle{font-size:16px;font-size:1rem;line-height:1.25;font-weight:400;color:#1d70b8}@media (min-width: 40.0625em){.js-enabled .govuk-accordion__section-toggle{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.js-enabled .govuk-accordion__section-toggle{font-size:14pt;line-height:1.15}}.js-enabled .govuk-accordion__show-all-text,.js-enabled .govuk-accordion__section-toggle-text{margin-left:5px;vertical-align:middle}@media screen and (forced-colors: active){.js-enabled .govuk-accordion__show-all:hover .govuk-accordion-nav__chevron,.js-enabled .govuk-accordion__section-button:hover .govuk-accordion-nav__chevron{background-color:transparent}.js-enabled .govuk-accordion__show-all:focus .govuk-accordion__section-heading-text-focus,.js-enabled .govuk-accordion__show-all:focus .govuk-accordion__section-summary-focus,.js-enabled .govuk-accordion__show-all:focus .govuk-accordion__section-toggle-focus,.js-enabled .govuk-accordion__show-all:focus .govuk-accordion-nav__chevron,.js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-heading-text-focus,.js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-summary-focus,.js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-toggle-focus,.js-enabled .govuk-accordion__section-button:focus .govuk-accordion-nav__chevron{background:transparent;background-color:transparent}}@media (hover: none){.js-enabled .govuk-accordion__section-header:hover{border-top-color:#b1b4b6;box-shadow:inset 0 3px #1d70b8}.js-enabled .govuk-accordion__section-header:hover .govuk-accordion__section-button{border-top-color:#b1b4b6}}.govuk-back-link{font-size:14px;font-size:.875rem;line-height:1.1428571429;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline;display:inline-block;position:relative;margin-top:15px;margin-bottom:15px;padding-left:.875em}@media (min-width: 40.0625em){.govuk-back-link{font-size:16px;font-size:1rem;line-height:1.25}}@media print{.govuk-back-link{font-size:14pt;line-height:1.2}}@media print{.govuk-back-link{font-family:sans-serif}}.govuk-back-link:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-back-link:link,.govuk-back-link:visited{color:#0b0c0c}@media print{.govuk-back-link:link,.govuk-back-link:visited{color:#000}}.govuk-back-link:hover{color:rgba(11,12,12,.99)}.govuk-back-link:active,.govuk-back-link:focus{color:#0b0c0c}@media print{.govuk-back-link:active,.govuk-back-link:focus{color:#000}}.govuk-back-link:before{content:"";display:block;position:absolute;top:0;bottom:0;left:.1875em;width:.4375em;height:.4375em;margin:auto 0;-webkit-transform:rotate(225deg);-ms-transform:rotate(225deg);transform:rotate(225deg);border:solid;border-width:1px 1px 0 0;border-color:#505a5f}@supports (border-width: max(0px)){.govuk-back-link:before{border-width:max(1px,.0625em) max(1px,.0625em) 0 0;font-size:max(16px,1em)}}.govuk-back-link:focus:before{border-color:#0b0c0c}.govuk-back-link:after{content:"";position:absolute;top:-14px;right:0;bottom:-14px;left:0}.govuk-back-link--inverse:link,.govuk-back-link--inverse:visited{color:#fff}.govuk-back-link--inverse:hover,.govuk-back-link--inverse:active{color:rgba(255,255,255,.99)}.govuk-back-link--inverse:focus{color:#0b0c0c}.govuk-back-link--inverse:before{border-color:currentcolor}.govuk-breadcrumbs{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:14px;font-size:.875rem;line-height:1.1428571429;color:#0b0c0c;margin-top:15px;margin-bottom:10px}@media print{.govuk-breadcrumbs{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-breadcrumbs{font-size:16px;font-size:1rem;line-height:1.25}}@media print{.govuk-breadcrumbs{font-size:14pt;line-height:1.2}}@media print{.govuk-breadcrumbs{color:#000}}.govuk-breadcrumbs__list{margin:0;padding:0;list-style-type:none}.govuk-breadcrumbs__list:after{content:"";display:block;clear:both}.govuk-breadcrumbs__list-item{display:inline-block;position:relative;margin-bottom:5px;margin-left:.625em;padding-left:.9784375em;float:left}.govuk-breadcrumbs__list-item:before{content:"";display:block;position:absolute;top:0;bottom:0;left:-.206875em;width:.4375em;height:.4375em;margin:auto 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);border:solid;border-width:1px 1px 0 0;border-color:#505a5f}@supports (border-width: max(0px)){.govuk-breadcrumbs__list-item:before{border-width:max(1px,.0625em) max(1px,.0625em) 0 0;font-size:max(16px,1em)}}.govuk-breadcrumbs__list-item:first-child{margin-left:0;padding-left:0}.govuk-breadcrumbs__list-item:first-child:before{content:none;display:none}.govuk-breadcrumbs__link{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline}@media print{.govuk-breadcrumbs__link{font-family:sans-serif}}.govuk-breadcrumbs__link:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-breadcrumbs__link:link,.govuk-breadcrumbs__link:visited{color:#0b0c0c}@media print{.govuk-breadcrumbs__link:link,.govuk-breadcrumbs__link:visited{color:#000}}.govuk-breadcrumbs__link:hover{color:rgba(11,12,12,.99)}.govuk-breadcrumbs__link:active,.govuk-breadcrumbs__link:focus{color:#0b0c0c}@media print{.govuk-breadcrumbs__link:active,.govuk-breadcrumbs__link:focus{color:#000}}@media (max-width: 40.0525em){.govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list-item{display:none}.govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list-item:first-child,.govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list-item:last-child{display:inline-block}.govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list-item:before{top:.375em;margin:0}.govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list{display:-ms-flexbox;display:flex}}.govuk-breadcrumbs--inverse,.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:link,.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:visited{color:#fff}.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:hover,.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:active{color:rgba(255,255,255,.99)}.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:focus{color:#0b0c0c}.govuk-breadcrumbs--inverse .govuk-breadcrumbs__list-item:before{border-color:currentcolor}.govuk-button{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.1875;box-sizing:border-box;display:inline-block;position:relative;width:100%;margin:0 0 22px;padding:8px 10px 7px;border:2px solid transparent;border-radius:0;color:#fff;background-color:#00703c;box-shadow:0 2px #002d18;text-align:center;vertical-align:top;cursor:pointer;-webkit-appearance:none}@media print{.govuk-button{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-button{font-size:19px;font-size:1.1875rem;line-height:1}}@media print{.govuk-button{font-size:14pt;line-height:19px}}@media (min-width: 40.0625em){.govuk-button{margin-bottom:32px}}@media (min-width: 40.0625em){.govuk-button{width:auto}}.govuk-button:link,.govuk-button:visited,.govuk-button:active,.govuk-button:hover{color:#fff;text-decoration:none}.govuk-button::-moz-focus-inner{padding:0;border:0}.govuk-button:hover{background-color:#005a30}.govuk-button:active{top:2px}.govuk-button:focus{border-color:#fd0;outline:3px solid transparent;box-shadow:inset 0 0 0 1px #fd0}.govuk-button:focus:not(:active):not(:hover){border-color:#fd0;color:#0b0c0c;background-color:#fd0;box-shadow:0 2px #0b0c0c}.govuk-button:before{content:"";display:block;position:absolute;top:-2px;right:-2px;bottom:-4px;left:-2px;background:transparent}.govuk-button:active:before{top:-4px}.govuk-button--disabled,.govuk-button[disabled=disabled],.govuk-button[disabled]{opacity:.5}.govuk-button--disabled:hover,.govuk-button[disabled=disabled]:hover,.govuk-button[disabled]:hover{background-color:#00703c;cursor:not-allowed}.govuk-button--disabled:active,.govuk-button[disabled=disabled]:active,.govuk-button[disabled]:active{top:0;box-shadow:0 2px #002d18}.govuk-button--secondary{background-color:#f3f2f1;box-shadow:0 2px #929191}.govuk-button--secondary,.govuk-button--secondary:link,.govuk-button--secondary:visited,.govuk-button--secondary:active,.govuk-button--secondary:hover{color:#0b0c0c}.govuk-button--secondary:hover{background-color:#dbdad9}.govuk-button--secondary:hover[disabled]{background-color:#f3f2f1}.govuk-button--warning{background-color:#d4351c;box-shadow:0 2px #55150b}.govuk-button--warning,.govuk-button--warning:link,.govuk-button--warning:visited,.govuk-button--warning:active,.govuk-button--warning:hover{color:#fff}.govuk-button--warning:hover{background-color:#aa2a16}.govuk-button--warning:hover[disabled]{background-color:#d4351c}.govuk-button--inverse{background-color:#fff;box-shadow:0 2px #144e81}.govuk-button--inverse,.govuk-button--inverse:link,.govuk-button--inverse:visited,.govuk-button--inverse:active,.govuk-button--inverse:hover{color:#1d70b8}.govuk-button--inverse:hover{background-color:#e8f1f8}.govuk-button--inverse:hover[disabled]{background-color:#fff}.govuk-button--start{font-weight:700;font-size:18px;font-size:1.125rem;line-height:1;display:-ms-inline-flexbox;display:inline-flex;min-height:auto;-ms-flex-pack:center;justify-content:center}@media (min-width: 40.0625em){.govuk-button--start{font-size:24px;font-size:1.5rem;line-height:1}}@media print{.govuk-button--start{font-size:18pt;line-height:1}}.govuk-button__start-icon{margin-left:5px;vertical-align:middle;-ms-flex-negative:0;flex-shrink:0;-ms-flex-item-align:center;align-self:center;forced-color-adjust:auto}@media (min-width: 48.0625em){.govuk-button__start-icon{margin-left:10px}}.govuk-error-message{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:16px;font-size:1rem;line-height:1.25;display:block;margin-top:0;margin-bottom:15px;clear:both;color:#d4351c}@media print{.govuk-error-message{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-error-message{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-error-message{font-size:14pt;line-height:1.15}}.govuk-fieldset{min-width:0;margin:0;padding:0;border:0}.govuk-fieldset:after{content:"";display:block;clear:both}@supports not (caret-color: auto){.govuk-fieldset,x:-moz-any-link{display:table-cell}}.govuk-fieldset__legend{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;color:#0b0c0c;box-sizing:border-box;display:table;max-width:100%;margin-bottom:10px;padding:0;white-space:normal}@media print{.govuk-fieldset__legend{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-fieldset__legend{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-fieldset__legend{font-size:14pt;line-height:1.15}}@media print{.govuk-fieldset__legend{color:#000}}.govuk-fieldset__legend--xl{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:32px;font-size:2rem;line-height:1.09375;margin-bottom:15px}@media print{.govuk-fieldset__legend--xl{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-fieldset__legend--xl{font-size:48px;font-size:3rem;line-height:1.0416666667}}@media print{.govuk-fieldset__legend--xl{font-size:32pt;line-height:1.15}}.govuk-fieldset__legend--l{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:24px;font-size:1.5rem;line-height:1.0416666667;margin-bottom:15px}@media print{.govuk-fieldset__legend--l{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-fieldset__legend--l{font-size:36px;font-size:2.25rem;line-height:1.1111111111}}@media print{.govuk-fieldset__legend--l{font-size:24pt;line-height:1.05}}.govuk-fieldset__legend--m{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:18px;font-size:1.125rem;line-height:1.1111111111;margin-bottom:15px}@media print{.govuk-fieldset__legend--m{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-fieldset__legend--m{font-size:24px;font-size:1.5rem;line-height:1.25}}@media print{.govuk-fieldset__legend--m{font-size:18pt;line-height:1.15}}.govuk-fieldset__legend--s{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:16px;font-size:1rem;line-height:1.25}@media print{.govuk-fieldset__legend--s{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-fieldset__legend--s{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-fieldset__legend--s{font-size:14pt;line-height:1.15}}.govuk-fieldset__heading{margin:0;font-size:inherit;font-weight:inherit}.govuk-hint{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;margin-bottom:15px;color:#505a5f}@media print{.govuk-hint{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-hint{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-hint{font-size:14pt;line-height:1.15}}.govuk-label:not(.govuk-label--m):not(.govuk-label--l):not(.govuk-label--xl)+.govuk-hint{margin-bottom:10px}.govuk-fieldset__legend:not(.govuk-fieldset__legend--m):not(.govuk-fieldset__legend--l):not(.govuk-fieldset__legend--xl)+.govuk-hint{margin-bottom:10px}.govuk-fieldset__legend+.govuk-hint{margin-top:-5px}.govuk-label{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;color:#0b0c0c;display:block;margin-bottom:5px}@media print{.govuk-label{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-label{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-label{font-size:14pt;line-height:1.15}}@media print{.govuk-label{color:#000}}.govuk-label--xl{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:32px;font-size:2rem;line-height:1.09375;margin-bottom:15px}@media print{.govuk-label--xl{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-label--xl{font-size:48px;font-size:3rem;line-height:1.0416666667}}@media print{.govuk-label--xl{font-size:32pt;line-height:1.15}}.govuk-label--l{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:24px;font-size:1.5rem;line-height:1.0416666667;margin-bottom:15px}@media print{.govuk-label--l{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-label--l{font-size:36px;font-size:2.25rem;line-height:1.1111111111}}@media print{.govuk-label--l{font-size:24pt;line-height:1.05}}.govuk-label--m{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:18px;font-size:1.125rem;line-height:1.1111111111;margin-bottom:10px}@media print{.govuk-label--m{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-label--m{font-size:24px;font-size:1.5rem;line-height:1.25}}@media print{.govuk-label--m{font-size:18pt;line-height:1.15}}.govuk-label--s{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:16px;font-size:1rem;line-height:1.25}@media print{.govuk-label--s{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-label--s{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-label--s{font-size:14pt;line-height:1.15}}.govuk-label-wrapper{margin:0}.govuk-checkboxes__item{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;display:block;position:relative;min-height:40px;margin-bottom:10px;padding-left:40px;clear:left}@media print{.govuk-checkboxes__item{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-checkboxes__item{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-checkboxes__item{font-size:14pt;line-height:1.15}}.govuk-checkboxes__item:last-child,.govuk-checkboxes__item:last-of-type{margin-bottom:0}.govuk-checkboxes__input{cursor:pointer;position:absolute;z-index:1;top:-2px;left:-2px;width:44px;height:44px;margin:0;opacity:0}.govuk-checkboxes__label{display:inline-block;margin-bottom:0;padding:8px 15px 5px;cursor:pointer;-ms-touch-action:manipulation;touch-action:manipulation}.govuk-checkboxes__label:before{content:"";box-sizing:border-box;position:absolute;top:0;left:0;width:40px;height:40px;border:2px solid currentcolor;background:transparent}.govuk-checkboxes__label:after{content:"";box-sizing:border-box;position:absolute;top:11px;left:9px;width:23px;height:12px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);border:solid;border-width:0 0 5px 5px;border-top-color:transparent;opacity:0;background:transparent}.govuk-checkboxes__hint{display:block;padding-right:15px;padding-left:15px}.govuk-checkboxes__input:focus+.govuk-checkboxes__label:before{border-width:4px;outline:3px solid transparent;outline-offset:1px;box-shadow:0 0 0 3px #fd0}@media screen and (forced-colors: active),(-ms-high-contrast: active){.govuk-checkboxes__input:focus+.govuk-checkboxes__label:before{outline-color:Highlight}}.govuk-checkboxes__input:checked+.govuk-checkboxes__label:after{opacity:1}.govuk-checkboxes__input:disabled,.govuk-checkboxes__input:disabled+.govuk-checkboxes__label{cursor:not-allowed}.govuk-checkboxes__input:disabled+.govuk-checkboxes__label,.govuk-checkboxes__input:disabled~.govuk-hint{opacity:.5}.govuk-checkboxes__divider{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;color:#0b0c0c;width:40px;margin-bottom:10px;text-align:center}@media print{.govuk-checkboxes__divider{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-checkboxes__divider{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-checkboxes__divider{font-size:14pt;line-height:1.15}}@media print{.govuk-checkboxes__divider{color:#000}}.govuk-checkboxes__conditional{margin-bottom:15px;margin-left:18px;padding-left:33px;border-left:4px solid #b1b4b6}@media (min-width: 40.0625em){.govuk-checkboxes__conditional{margin-bottom:20px}}.js-enabled .govuk-checkboxes__conditional--hidden{display:none}.govuk-checkboxes__conditional>:last-child{margin-bottom:0}.govuk-checkboxes--small .govuk-checkboxes__item{min-height:0;margin-bottom:0;padding-left:34px;float:left}.govuk-checkboxes--small .govuk-checkboxes__item:after{content:"";display:block;clear:both}.govuk-checkboxes--small .govuk-checkboxes__input{left:-10px}.govuk-checkboxes--small .govuk-checkboxes__label{margin-top:-2px;padding:13px 15px 13px 1px;float:left}@media (min-width: 40.0625em){.govuk-checkboxes--small .govuk-checkboxes__label{padding:11px 15px 10px 1px}}.govuk-checkboxes--small .govuk-checkboxes__label:before{top:8px;width:24px;height:24px}.govuk-checkboxes--small .govuk-checkboxes__label:after{top:15px;left:6px;width:12px;height:6.5px;border-width:0 0 3px 3px}.govuk-checkboxes--small .govuk-checkboxes__hint{padding:0;clear:both}.govuk-checkboxes--small .govuk-checkboxes__conditional{margin-left:10px;padding-left:20px;clear:both}.govuk-checkboxes--small .govuk-checkboxes__item:hover .govuk-checkboxes__input:not(:disabled)+.govuk-checkboxes__label:before{box-shadow:0 0 0 10px #b1b4b6}.govuk-checkboxes--small .govuk-checkboxes__item:hover .govuk-checkboxes__input:focus+.govuk-checkboxes__label:before{box-shadow:0 0 0 3px #fd0,0 0 0 10px #b1b4b6}@media (hover: none),(pointer: coarse){.govuk-checkboxes--small .govuk-checkboxes__item:hover .govuk-checkboxes__input:not(:disabled)+.govuk-checkboxes__label:before{box-shadow:initial}.govuk-checkboxes--small .govuk-checkboxes__item:hover .govuk-checkboxes__input:focus+.govuk-checkboxes__label:before{box-shadow:0 0 0 3px #fd0}}.govuk-textarea{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;box-sizing:border-box;display:block;width:100%;min-height:40px;margin-bottom:20px;padding:5px;resize:vertical;border:2px solid #0b0c0c;border-radius:0;-webkit-appearance:none}@media print{.govuk-textarea{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-textarea{font-size:19px;font-size:1.1875rem;line-height:1.25}}@media print{.govuk-textarea{font-size:14pt;line-height:1.25}}@media (min-width: 40.0625em){.govuk-textarea{margin-bottom:30px}}.govuk-textarea:focus{outline:3px solid #ffdd00;outline-offset:0;box-shadow:inset 0 0 0 2px}.govuk-textarea:disabled{opacity:.5;color:inherit;background-color:transparent;cursor:not-allowed}.govuk-textarea--error{border-color:#d4351c}.govuk-textarea--error:focus{border-color:#0b0c0c}.govuk-character-count{margin-bottom:20px}@media (min-width: 40.0625em){.govuk-character-count{margin-bottom:30px}}.govuk-character-count .govuk-form-group,.govuk-character-count .govuk-textarea{margin-bottom:5px}.govuk-character-count__message{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-font-feature-settings:"tnum" 1;font-feature-settings:"tnum" 1;font-weight:400;margin-top:0;margin-bottom:0}@media print{.govuk-character-count__message{font-family:sans-serif}}@supports (font-variant-numeric: tabular-nums){.govuk-character-count__message{-webkit-font-feature-settings:normal;font-feature-settings:normal;font-variant-numeric:tabular-nums}}.govuk-character-count__message:after{content:"\200b"}.govuk-character-count__message--disabled{visibility:hidden}.govuk-cookie-banner{padding-top:20px;border-bottom:10px solid transparent;background-color:#f3f2f1}.govuk-cookie-banner[hidden]{display:none}.govuk-cookie-banner__message{margin-bottom:-10px}.govuk-cookie-banner__message[hidden]{display:none}.govuk-cookie-banner__message:focus{outline:none}.govuk-input{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;box-sizing:border-box;width:100%;height:40px;height:2.5rem;margin-top:0;padding:5px;border:2px solid #0b0c0c;border-radius:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media print{.govuk-input{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-input{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-input{font-size:14pt;line-height:1.15}}.govuk-input:focus{outline:3px solid #ffdd00;outline-offset:0;box-shadow:inset 0 0 0 2px}.govuk-input:disabled{opacity:.5;color:inherit;background-color:transparent;cursor:not-allowed}.govuk-input::-webkit-outer-spin-button,.govuk-input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.govuk-input[type=number]{-moz-appearance:textfield}.govuk-input--error{border-color:#d4351c}.govuk-input--error:focus{border-color:#0b0c0c}.govuk-input--extra-letter-spacing{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-font-feature-settings:"tnum" 1;font-feature-settings:"tnum" 1;font-weight:400;letter-spacing:.05em}@media print{.govuk-input--extra-letter-spacing{font-family:sans-serif}}@supports (font-variant-numeric: tabular-nums){.govuk-input--extra-letter-spacing{-webkit-font-feature-settings:normal;font-feature-settings:normal;font-variant-numeric:tabular-nums}}.govuk-input--width-30{max-width:29.5em}.govuk-input--width-20{max-width:20.5em}.govuk-input--width-10{max-width:11.5em}.govuk-input--width-5{max-width:5.5em}.govuk-input--width-4{max-width:4.5em}.govuk-input--width-3{max-width:3.75em}.govuk-input--width-2{max-width:2.75em}.govuk-input__wrapper{display:-ms-flexbox;display:flex}.govuk-input__wrapper .govuk-input{-ms-flex:0 1 auto;flex:0 1 auto}.govuk-input__wrapper .govuk-input:focus{z-index:1}@media (max-width: 19.99em){.govuk-input__wrapper{display:block}.govuk-input__wrapper .govuk-input{max-width:100%}}.govuk-input__prefix,.govuk-input__suffix{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;box-sizing:border-box;display:inline-block;min-width:40px;min-width:2.5rem;height:40px;height:2.5rem;padding:5px;border:2px solid #0b0c0c;background-color:#f3f2f1;text-align:center;white-space:nowrap;cursor:default;-ms-flex:0 0 auto;flex:0 0 auto}@media print{.govuk-input__prefix,.govuk-input__suffix{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-input__prefix,.govuk-input__suffix{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-input__prefix,.govuk-input__suffix{font-size:14pt;line-height:1.15}}@media (max-width: 40.0525em){.govuk-input__prefix,.govuk-input__suffix{line-height:1.6}}@media (max-width: 19.99em){.govuk-input__prefix,.govuk-input__suffix{display:block;height:100%;white-space:normal}}@media (max-width: 19.99em){.govuk-input__prefix{border-bottom:0}}@media (min-width: 20em){.govuk-input__prefix{border-right:0}}@media (max-width: 19.99em){.govuk-input__suffix{border-top:0}}@media (min-width: 20em){.govuk-input__suffix{border-left:0}}.govuk-date-input{font-size:0}.govuk-date-input:after{content:"";display:block;clear:both}.govuk-date-input__item{display:inline-block;margin-right:20px;margin-bottom:0}.govuk-date-input__label{display:block}.govuk-date-input__input{margin-bottom:0}.govuk-details{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;color:#0b0c0c;margin-bottom:20px;display:block}@media print{.govuk-details{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-details{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-details{font-size:14pt;line-height:1.15}}@media print{.govuk-details{color:#000}}@media (min-width: 40.0625em){.govuk-details{margin-bottom:30px}}.govuk-details__summary{display:inline-block;position:relative;margin-bottom:5px;padding-left:25px;color:#1d70b8;cursor:pointer}.govuk-details__summary:hover{color:#003078}.govuk-details__summary:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-details__summary-text{text-decoration:underline}.govuk-details__summary:focus .govuk-details__summary-text{text-decoration:none}.govuk-details__summary::-webkit-details-marker{display:none}.govuk-details__summary:before{content:"";position:absolute;top:-1px;bottom:0;left:0;margin:auto;display:block;width:0;height:0;border-style:solid;border-color:transparent;-webkit-clip-path:polygon(0% 0%,100% 50%,0% 100%);clip-path:polygon(0% 0%,100% 50%,0% 100%);border-width:7px 0 7px 12.124px;border-left-color:inherit}.govuk-details[open]>.govuk-details__summary:before{display:block;width:0;height:0;border-style:solid;border-color:transparent;-webkit-clip-path:polygon(0% 0%,50% 100%,100% 0%);clip-path:polygon(0% 0%,50% 100%,100% 0%);border-width:12.124px 7px 0 7px;border-top-color:inherit}.govuk-details__text{padding-top:15px;padding-bottom:15px;padding-left:20px;border-left:5px solid #b1b4b6}.govuk-details__text p{margin-top:0;margin-bottom:20px}.govuk-details__text>:last-child{margin-bottom:0}.govuk-error-summary{color:#0b0c0c;padding:15px;margin-bottom:30px;border:5px solid #d4351c}@media print{.govuk-error-summary{color:#000}}@media (min-width: 40.0625em){.govuk-error-summary{padding:20px}}@media (min-width: 40.0625em){.govuk-error-summary{margin-bottom:50px}}.govuk-error-summary:focus{outline:3px solid #ffdd00}.govuk-error-summary__title{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:18px;font-size:1.125rem;line-height:1.1111111111;margin-top:0;margin-bottom:15px}@media print{.govuk-error-summary__title{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-error-summary__title{font-size:24px;font-size:1.5rem;line-height:1.25}}@media print{.govuk-error-summary__title{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-error-summary__title{margin-bottom:20px}}.govuk-error-summary__body{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25}@media print{.govuk-error-summary__body{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-error-summary__body{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-error-summary__body{font-size:14pt;line-height:1.15}}.govuk-error-summary__body p{margin-top:0;margin-bottom:15px}@media (min-width: 40.0625em){.govuk-error-summary__body p{margin-bottom:20px}}.govuk-error-summary__list{margin-top:0;margin-bottom:0}.govuk-error-summary__list a{font-weight:700;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline}@media print{.govuk-error-summary__list a{font-family:sans-serif}}.govuk-error-summary__list a:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-error-summary__list a:link,.govuk-error-summary__list a:visited{color:#d4351c}.govuk-error-summary__list a:hover{color:#942514}.govuk-error-summary__list a:active{color:#d4351c}.govuk-error-summary__list a:focus{color:#0b0c0c}.govuk-exit-this-page{margin-bottom:30px;position:-webkit-sticky;position:-webkit-sticky;position:sticky;z-index:1000;top:0;left:0;width:100%}@media (min-width: 40.0625em){.govuk-exit-this-page{margin-bottom:50px}}@media (min-width: 40.0625em){.govuk-exit-this-page{display:inline-block;right:0;left:auto;width:auto;float:right}}.govuk-exit-this-page__button{margin-bottom:0}.govuk-exit-this-page__indicator{padding:10px 10px 0;display:none;color:inherit;line-height:0;text-align:center;pointer-events:none}.govuk-exit-this-page__indicator--visible{display:block}.govuk-exit-this-page__indicator-light{box-sizing:border-box;display:inline-block;width:.75em;height:.75em;margin:0 .125em;border-width:2px;border-style:solid;border-radius:50%;border-color:currentcolor}.govuk-exit-this-page__indicator-light--on{border-width:.375em}@media only print{.govuk-exit-this-page{display:none}}.govuk-exit-this-page-overlay{position:fixed;z-index:9999;top:0;right:0;bottom:0;left:0;background-color:#fff}.govuk-exit-this-page-hide-content *{display:none!important}.govuk-exit-this-page-hide-content .govuk-exit-this-page-overlay{display:block!important}.govuk-file-upload{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;color:#0b0c0c;max-width:100%;margin-left:-5px;padding:5px}@media print{.govuk-file-upload{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-file-upload{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-file-upload{font-size:14pt;line-height:1.15}}@media print{.govuk-file-upload{color:#000}}.govuk-file-upload::-webkit-file-upload-button{-webkit-appearance:button;color:inherit;font:inherit}.govuk-file-upload:focus{outline:3px solid #ffdd00;box-shadow:inset 0 0 0 4px #0b0c0c}.govuk-file-upload:focus-within{outline:3px solid #ffdd00;box-shadow:inset 0 0 0 4px #0b0c0c}.govuk-file-upload:disabled{opacity:.5;cursor:not-allowed}.govuk-footer{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:14px;font-size:.875rem;line-height:1.1428571429;padding-top:25px;padding-bottom:15px;border-top:1px solid #b1b4b6;color:#0b0c0c;background:#f3f2f1}@media print{.govuk-footer{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-footer{font-size:16px;font-size:1rem;line-height:1.25}}@media print{.govuk-footer{font-size:14pt;line-height:1.2}}@media (min-width: 40.0625em){.govuk-footer{padding-top:40px}}@media (min-width: 40.0625em){.govuk-footer{padding-bottom:25px}}.govuk-footer__link{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline}@media print{.govuk-footer__link{font-family:sans-serif}}.govuk-footer__link:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-footer__link:link,.govuk-footer__link:visited{color:#0b0c0c}@media print{.govuk-footer__link:link,.govuk-footer__link:visited{color:#000}}.govuk-footer__link:hover{color:rgba(11,12,12,.99)}.govuk-footer__link:active,.govuk-footer__link:focus{color:#0b0c0c}@media print{.govuk-footer__link:active,.govuk-footer__link:focus{color:#000}}.govuk-footer__section-break{margin:0 0 30px;border:0;border-bottom:1px solid #b1b4b6}@media (min-width: 40.0625em){.govuk-footer__section-break{margin-bottom:50px}}.govuk-footer__meta{display:-ms-flexbox;display:flex;margin-right:-15px;margin-left:-15px;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:end;align-items:flex-end;-ms-flex-pack:center;justify-content:center}.govuk-footer__meta-item{margin-right:15px;margin-bottom:25px;margin-left:15px}.govuk-footer__meta-item--grow{-ms-flex:1;flex:1}@media (max-width: 40.0525em){.govuk-footer__meta-item--grow{-ms-flex-preferred-size:320px;flex-basis:320px}}.govuk-footer__licence-logo{display:inline-block;margin-right:10px;vertical-align:top;forced-color-adjust:auto}@media (max-width: 48.0525em){.govuk-footer__licence-logo{margin-bottom:15px}}.govuk-footer__licence-description{display:inline-block}.govuk-footer__copyright-logo{display:inline-block;min-width:125px;padding-top:112px;background-image:url(/assets/images/govuk-crest.png);background-repeat:no-repeat;background-position:50% 0%;background-size:125px 102px;text-align:center;white-space:nowrap}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.govuk-footer__copyright-logo{background-image:url(/assets/images/govuk-crest-2x.png)}}.govuk-footer__inline-list{margin-top:0;margin-bottom:15px;padding:0}.govuk-footer__meta-custom{margin-bottom:20px}.govuk-footer__inline-list-item{display:inline-block;margin-right:15px;margin-bottom:5px}.govuk-footer__heading{margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #b1b4b6}@media (max-width: 40.0525em){.govuk-footer__heading{padding-bottom:10px}}.govuk-footer__navigation{margin-right:-15px;margin-left:-15px}.govuk-footer__navigation:after{content:"";display:block;clear:both}.govuk-footer__section{display:inline-block;margin-bottom:30px;vertical-align:top}.govuk-footer__list{margin:0;padding:0;list-style:none;-webkit-column-gap:30px;column-gap:30px}@media (min-width: 48.0625em){.govuk-footer__list--columns-2{-webkit-column-count:2;column-count:2}.govuk-footer__list--columns-3{-webkit-column-count:3;column-count:3}}.govuk-footer__list-item{margin-bottom:15px}@media (min-width: 40.0625em){.govuk-footer__list-item{margin-bottom:20px}}.govuk-footer__list-item:last-child{margin-bottom:0}.govuk-header{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:14px;font-size:.875rem;line-height:1.1428571429;border-bottom:10px solid #ffffff;color:#fff;background:#0b0c0c}@media print{.govuk-header{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-header{font-size:16px;font-size:1rem;line-height:1.25}}@media print{.govuk-header{font-size:14pt;line-height:1.2}}.govuk-header__container--full-width{padding:0 15px;border-color:#1d70b8}.govuk-header__container--full-width .govuk-header__menu-button{right:15px}.govuk-header__container{position:relative;margin-bottom:-10px;padding-top:10px;border-bottom:10px solid #1d70b8}.govuk-header__container:after{content:"";display:block;clear:both}.govuk-header__logotype{display:inline-block;margin-right:5px}@media (forced-colors: active){.govuk-header__logotype{forced-color-adjust:none;color:linktext}}.govuk-header__logotype:last-child{margin-right:0}.govuk-header__logotype-crown{position:relative;top:-1px;margin-right:1px;fill:currentcolor;vertical-align:top}.govuk-header__logotype-crown-fallback-image{width:36px;height:32px;border:0;vertical-align:bottom}.govuk-header__product-name{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:18px;font-size:1.125rem;line-height:1;display:inline-table}@media print{.govuk-header__product-name{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-header__product-name{font-size:24px;font-size:1.5rem;line-height:1}}@media print{.govuk-header__product-name{font-size:18pt;line-height:1}}.govuk-header__link{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}@media print{.govuk-header__link{font-family:sans-serif}}.govuk-header__link:link,.govuk-header__link:visited{color:#fff}.govuk-header__link:hover,.govuk-header__link:active{color:rgba(255,255,255,.99)}.govuk-header__link:focus{color:#0b0c0c}.govuk-header__link:hover{text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:.1578em}.govuk-header__link:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-header__link--homepage{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;display:inline-block;margin-right:10px;font-size:30px;line-height:1}@media print{.govuk-header__link--homepage{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-header__link--homepage{display:inline}.govuk-header__link--homepage:focus{box-shadow:0 0 #fd0}}.govuk-header__link--homepage:link,.govuk-header__link--homepage:visited{text-decoration:none}.govuk-header__link--homepage:hover,.govuk-header__link--homepage:active{margin-bottom:-3px;border-bottom:3px solid}.govuk-header__link--homepage:focus{margin-bottom:0;border-bottom:0}.govuk-header__service-name,.govuk-header__link--service-name{display:inline-block;margin-bottom:10px;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:18px;font-size:1.125rem;line-height:1.1111111111}@media print{.govuk-header__service-name,.govuk-header__link--service-name{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-header__service-name,.govuk-header__link--service-name{font-size:24px;font-size:1.5rem;line-height:1.25}}@media print{.govuk-header__service-name,.govuk-header__link--service-name{font-size:18pt;line-height:1.15}}.govuk-header__logo,.govuk-header__content{box-sizing:border-box}.govuk-header__logo{margin-bottom:10px;padding-right:50px}@media (min-width: 48.0625em){.govuk-header__logo{width:33.33%;padding-right:15px;float:left;vertical-align:top}}@media (min-width: 48.0625em){.govuk-header__content{width:66.66%;padding-left:15px;float:left}}.govuk-header__menu-button{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:14px;font-size:.875rem;line-height:1.1428571429;display:none;position:absolute;top:20px;right:0;margin:0;padding:0;border:0;color:#fff;background:none;cursor:pointer}@media print{.govuk-header__menu-button{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-header__menu-button{font-size:16px;font-size:1rem;line-height:1.25}}@media print{.govuk-header__menu-button{font-size:14pt;line-height:1.2}}.govuk-header__menu-button:hover{-webkit-text-decoration:solid underline 3px;text-decoration:solid underline 3px;text-underline-offset:.1578em}.govuk-header__menu-button:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-header__menu-button:after{display:inline-block;width:0;height:0;border-style:solid;border-color:transparent;-webkit-clip-path:polygon(0% 0%,50% 100%,100% 0%);clip-path:polygon(0% 0%,50% 100%,100% 0%);border-width:8.66px 5px 0 5px;border-top-color:inherit;content:"";margin-left:5px}.govuk-header__menu-button[aria-expanded=true]:after{display:inline-block;width:0;height:0;border-style:solid;border-color:transparent;-webkit-clip-path:polygon(50% 0%,0% 100%,100% 100%);clip-path:polygon(50% 0%,0% 100%,100% 100%);border-width:0 5px 8.66px 5px;border-bottom-color:inherit}@media (min-width: 40.0625em){.govuk-header__menu-button{top:15px}}.js-enabled .govuk-header__menu-button{display:block}.govuk-header__menu-button[hidden],.js-enabled .govuk-header__menu-button[hidden]{display:none}@media (min-width: 48.0625em){.govuk-header__navigation{margin-bottom:10px}}.govuk-header__navigation-list{margin:0;padding:0;list-style:none}.govuk-header__navigation-list[hidden]{display:none}@media (min-width: 48.0625em){.govuk-header__navigation--end{margin:0;padding:5px 0;text-align:right}}.govuk-header__navigation--no-service-name{padding-top:40px}.govuk-header__navigation-item{padding:10px 0;border-bottom:1px solid #2e3133}@media (min-width: 48.0625em){.govuk-header__navigation-item{display:inline-block;margin-right:15px;padding:5px 0;border:0}}.govuk-header__navigation-item a{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:14px;font-size:.875rem;line-height:1.1428571429;white-space:nowrap}@media print{.govuk-header__navigation-item a{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-header__navigation-item a{font-size:16px;font-size:1rem;line-height:1.25}}@media print{.govuk-header__navigation-item a{font-size:14pt;line-height:1.2}}.govuk-header__navigation-item--active a:link,.govuk-header__navigation-item--active a:hover,.govuk-header__navigation-item--active a:visited{color:#1d8feb}@media print{.govuk-header__navigation-item--active a{color:#1d70b8}}.govuk-header__navigation-item--active a:focus{color:#0b0c0c}.govuk-header__navigation-item:last-child{margin-right:0;border-bottom:0}@media print{.govuk-header{border-bottom-width:0;color:#0b0c0c;background:transparent}.govuk-header__logotype-crown-fallback-image{display:none}.govuk-header__link:link,.govuk-header__link:visited{color:#0b0c0c}.govuk-header__link:after{display:none}}.govuk-inset-text{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;color:#0b0c0c;padding:15px;margin-top:20px;margin-bottom:20px;clear:both;border-left:10px solid #b1b4b6}@media print{.govuk-inset-text{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-inset-text{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-inset-text{font-size:14pt;line-height:1.15}}@media print{.govuk-inset-text{color:#000}}@media (min-width: 40.0625em){.govuk-inset-text{margin-top:30px}}@media (min-width: 40.0625em){.govuk-inset-text{margin-bottom:30px}}.govuk-inset-text>:first-child{margin-top:0}.govuk-inset-text>:only-child,.govuk-inset-text>:last-child{margin-bottom:0}.govuk-notification-banner{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;margin-bottom:30px;border:5px solid #1d70b8;background-color:#1d70b8}@media print{.govuk-notification-banner{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-notification-banner{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-notification-banner{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-notification-banner{margin-bottom:50px}}.govuk-notification-banner:focus{outline:3px solid #ffdd00}.govuk-notification-banner__header{padding:2px 15px 5px;border-bottom:1px solid transparent}@media (min-width: 40.0625em){.govuk-notification-banner__header{padding:2px 20px 5px}}.govuk-notification-banner__title{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:16px;font-size:1rem;line-height:1.25;margin:0;padding:0;color:#fff}@media print{.govuk-notification-banner__title{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-notification-banner__title{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-notification-banner__title{font-size:14pt;line-height:1.15}}.govuk-notification-banner__content{color:#0b0c0c;padding:15px;background-color:#fff}@media print{.govuk-notification-banner__content{color:#000}}@media (min-width: 40.0625em){.govuk-notification-banner__content{padding:20px}}.govuk-notification-banner__content>*{box-sizing:border-box;max-width:605px}.govuk-notification-banner__content>:last-child{margin-bottom:0}.govuk-notification-banner__heading{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:18px;font-size:1.125rem;line-height:1.1111111111;margin:0 0 15px;padding:0}@media print{.govuk-notification-banner__heading{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-notification-banner__heading{font-size:24px;font-size:1.5rem;line-height:1.25}}@media print{.govuk-notification-banner__heading{font-size:18pt;line-height:1.15}}.govuk-notification-banner__link{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline}@media print{.govuk-notification-banner__link{font-family:sans-serif}}.govuk-notification-banner__link:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-notification-banner__link:link,.govuk-notification-banner__link:visited{color:#1d70b8}.govuk-notification-banner__link:hover{color:#003078}.govuk-notification-banner__link:active{color:#0b0c0c}.govuk-notification-banner__link:focus{color:#0b0c0c}.govuk-notification-banner--success{border-color:#00703c;background-color:#00703c}.govuk-notification-banner--success .govuk-notification-banner__link:link,.govuk-notification-banner--success .govuk-notification-banner__link:visited{color:#00703c}.govuk-notification-banner--success .govuk-notification-banner__link:hover{color:#004e2a}.govuk-notification-banner--success .govuk-notification-banner__link:active{color:#00703c}.govuk-notification-banner--success .govuk-notification-banner__link:focus{color:#0b0c0c}.govuk-pagination{margin-bottom:20px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (min-width: 40.0625em){.govuk-pagination{margin-bottom:30px}}@media (min-width: 40.0625em){.govuk-pagination{-ms-flex-direction:row;flex-direction:row;-ms-flex-align:start;align-items:flex-start}}.govuk-pagination__list{margin:0;padding:0;list-style:none}.govuk-pagination__item,.govuk-pagination__next,.govuk-pagination__prev{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;box-sizing:border-box;position:relative;min-width:45px;min-height:45px;padding:10px 15px;float:left}@media print{.govuk-pagination__item,.govuk-pagination__next,.govuk-pagination__prev{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-pagination__item,.govuk-pagination__next,.govuk-pagination__prev{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-pagination__item,.govuk-pagination__next,.govuk-pagination__prev{font-size:14pt;line-height:1.15}}.govuk-pagination__item:hover,.govuk-pagination__next:hover,.govuk-pagination__prev:hover{background-color:#f3f2f1}.govuk-pagination__item{display:none;text-align:center}@media (min-width: 40.0625em){.govuk-pagination__item{display:block}}.govuk-pagination__prev,.govuk-pagination__next{font-weight:700}.govuk-pagination__prev .govuk-pagination__link,.govuk-pagination__next .govuk-pagination__link{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.govuk-pagination__prev{padding-left:0}.govuk-pagination__next{padding-right:0}.govuk-pagination__item--current,.govuk-pagination__item--ellipses,.govuk-pagination__item:first-child,.govuk-pagination__item:last-child{display:block}.govuk-pagination__item--current{font-weight:700;outline:1px solid transparent;background-color:#1d70b8}.govuk-pagination__item--current:hover{background-color:#1d70b8}.govuk-pagination__item--current .govuk-pagination__link:link,.govuk-pagination__item--current .govuk-pagination__link:visited{color:#fff}.govuk-pagination__item--current .govuk-pagination__link:hover,.govuk-pagination__item--current .govuk-pagination__link:active{color:rgba(255,255,255,.99)}.govuk-pagination__item--current .govuk-pagination__link:focus{color:#0b0c0c}.govuk-pagination__item--ellipses{font-weight:700;color:#505a5f}.govuk-pagination__item--ellipses:hover{background-color:transparent}.govuk-pagination__link{display:block;min-width:15px}@media screen{.govuk-pagination__link:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}}.govuk-pagination__link:hover .govuk-pagination__link-title--decorated,.govuk-pagination__link:active .govuk-pagination__link-title--decorated{text-decoration:underline}.govuk-pagination__link:focus .govuk-pagination__icon{color:#0b0c0c}.govuk-pagination__link:focus .govuk-pagination__link-label{text-decoration:none}.govuk-pagination__link:focus .govuk-pagination__link-title--decorated{text-decoration:none}.govuk-pagination__link-label{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;text-decoration:underline;display:inline-block;padding-left:30px}@media print{.govuk-pagination__link-label{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-pagination__link-label{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-pagination__link-label{font-size:14pt;line-height:1.15}}.govuk-pagination__icon{width:.9375rem;height:.8125rem;color:#505a5f;fill:currentcolor;forced-color-adjust:auto}.govuk-pagination__icon--prev{margin-right:15px}.govuk-pagination__icon--next{margin-left:15px}.govuk-pagination--block{display:block}.govuk-pagination--block .govuk-pagination__item{padding:15px;float:none}.govuk-pagination--block .govuk-pagination__next,.govuk-pagination--block .govuk-pagination__prev{padding-left:0;float:none}.govuk-pagination--block .govuk-pagination__next{padding-right:15px}.govuk-pagination--block .govuk-pagination__next .govuk-pagination__icon{margin-left:0}.govuk-pagination--block .govuk-pagination__prev+.govuk-pagination__next{border-top:1px solid #b1b4b6}.govuk-pagination--block .govuk-pagination__link,.govuk-pagination--block .govuk-pagination__link-title{display:inline}.govuk-pagination--block .govuk-pagination__link-title:after{content:"";display:block}.govuk-pagination--block .govuk-pagination__link{text-align:left}.govuk-pagination--block .govuk-pagination__link:focus .govuk-pagination__link-label{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-pagination--block .govuk-pagination__link:not(:focus){text-decoration:none}.govuk-pagination--block .govuk-pagination__icon{margin-right:10px}.govuk-panel{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;box-sizing:border-box;margin-bottom:15px;padding:35px;border:5px solid transparent;text-align:center}@media print{.govuk-panel{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-panel{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-panel{font-size:14pt;line-height:1.15}}@media (max-width: 40.0525em){.govuk-panel{padding:10px;overflow-wrap:break-word;word-wrap:break-word}}.govuk-panel--confirmation{color:#fff;background:#00703c}@media print{.govuk-panel--confirmation{border-color:currentcolor;color:#000;background:none}}.govuk-panel__title{margin-top:0;margin-bottom:30px;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:32px;font-size:2rem;line-height:1.09375}@media print{.govuk-panel__title{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-panel__title{font-size:48px;font-size:3rem;line-height:1.0416666667}}@media print{.govuk-panel__title{font-size:32pt;line-height:1.15}}.govuk-panel__title:last-child{margin-bottom:0}.govuk-panel__body{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:24px;font-size:1.5rem;line-height:1.0416666667}@media print{.govuk-panel__body{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-panel__body{font-size:36px;font-size:2.25rem;line-height:1.1111111111}}@media print{.govuk-panel__body{font-size:24pt;line-height:1.05}}.govuk-tag{display:inline-block;outline:2px solid transparent;outline-offset:-2px;color:#fff;background-color:#1d70b8;letter-spacing:1px;text-decoration:none;text-transform:uppercase;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:14px;font-size:.875rem;line-height:1;padding:5px 8px 4px}@media print{.govuk-tag{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-tag{font-size:16px;font-size:1rem;line-height:1}}@media print{.govuk-tag{font-size:14pt;line-height:1}}.govuk-tag--grey{color:#383f43;background:#eeefef}.govuk-tag--purple{color:#3d2375;background:#dbd5e9}.govuk-tag--turquoise{color:#10403c;background:#bfe3e0}.govuk-tag--blue{color:#144e81;background:#d2e2f1}.govuk-tag--yellow{color:#594d00;background:#fff7bf}.govuk-tag--orange{color:#6e3619;background:#fcd6c3}.govuk-tag--red{color:#942514;background:#f6d7d2}.govuk-tag--pink{color:#80224d;background:#f7d7e6}.govuk-tag--green{color:#005a30;background:#cce2d8}.govuk-phase-banner{padding-top:10px;padding-bottom:10px;border-bottom:1px solid #b1b4b6}.govuk-phase-banner__content{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:14px;font-size:.875rem;line-height:1.1428571429;color:#0b0c0c;display:table;margin:0}@media print{.govuk-phase-banner__content{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-phase-banner__content{font-size:16px;font-size:1rem;line-height:1.25}}@media print{.govuk-phase-banner__content{font-size:14pt;line-height:1.2}}@media print{.govuk-phase-banner__content{color:#000}}.govuk-phase-banner__content__tag{margin-right:10px}.govuk-phase-banner__text{display:table-cell;vertical-align:middle}.govuk-tabs{margin-top:5px;margin-bottom:20px}@media (min-width: 40.0625em){.govuk-tabs{margin-bottom:30px}}.govuk-tabs__title{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;color:#0b0c0c;margin-bottom:10px}@media print{.govuk-tabs__title{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-tabs__title{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-tabs__title{font-size:14pt;line-height:1.15}}@media print{.govuk-tabs__title{color:#000}}.govuk-tabs__list{margin:0 0 20px;padding:0;list-style:none}@media (min-width: 40.0625em){.govuk-tabs__list{margin-bottom:30px}}.govuk-tabs__list-item{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;margin-left:25px}@media print{.govuk-tabs__list-item{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-tabs__list-item{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-tabs__list-item{font-size:14pt;line-height:1.15}}.govuk-tabs__list-item:before{color:#0b0c0c;content:"\2014";margin-left:-25px;padding-right:5px}@media print{.govuk-tabs__list-item:before{color:#000}}.govuk-tabs__tab{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline;display:inline-block;margin-bottom:10px}@media print{.govuk-tabs__tab{font-family:sans-serif}}.govuk-tabs__tab:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-tabs__tab:link{color:#1d70b8}.govuk-tabs__tab:visited{color:#4c2c92}.govuk-tabs__tab:hover{color:#003078}.govuk-tabs__tab:active{color:#0b0c0c}.govuk-tabs__tab:focus{color:#0b0c0c}.govuk-tabs__panel{margin-bottom:30px}@media (min-width: 40.0625em){.govuk-tabs__panel{margin-bottom:50px}}@media (min-width: 40.0625em){.js-enabled .govuk-tabs__list{margin-bottom:0;border-bottom:1px solid #b1b4b6}.js-enabled .govuk-tabs__list:after{content:"";display:block;clear:both}.js-enabled .govuk-tabs__title{display:none}.js-enabled .govuk-tabs__list-item{position:relative;margin-right:5px;margin-bottom:0;margin-left:0;padding:10px 20px;float:left;background-color:#f3f2f1;text-align:center}.js-enabled .govuk-tabs__list-item:before{content:none}.js-enabled .govuk-tabs__list-item--selected{position:relative;margin-top:-5px;margin-bottom:-1px;padding:14px 19px 16px;border:1px solid #b1b4b6;border-bottom:0;background-color:#fff}.js-enabled .govuk-tabs__list-item--selected .govuk-tabs__tab{text-decoration:none}.js-enabled .govuk-tabs__tab{margin-bottom:0}.js-enabled .govuk-tabs__tab:link,.js-enabled .govuk-tabs__tab:visited{color:#0b0c0c}}@media print and (min-width: 40.0625em){.js-enabled .govuk-tabs__tab:link,.js-enabled .govuk-tabs__tab:visited{color:#000}}@media (min-width: 40.0625em){.js-enabled .govuk-tabs__tab:hover{color:rgba(11,12,12,.99)}.js-enabled .govuk-tabs__tab:active,.js-enabled .govuk-tabs__tab:focus{color:#0b0c0c}}@media print and (min-width: 40.0625em){.js-enabled .govuk-tabs__tab:active,.js-enabled .govuk-tabs__tab:focus{color:#000}}@media (min-width: 40.0625em){.js-enabled .govuk-tabs__tab:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}.js-enabled .govuk-tabs__panel{margin-bottom:0;padding:30px 20px;border:1px solid #b1b4b6;border-top:0}.js-enabled .govuk-tabs__panel>:last-child{margin-bottom:0}.js-enabled .govuk-tabs__panel--hidden{display:none}}.govuk-radios__item{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;display:block;position:relative;min-height:40px;margin-bottom:10px;padding-left:40px;clear:left}@media print{.govuk-radios__item{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-radios__item{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-radios__item{font-size:14pt;line-height:1.15}}.govuk-radios__item:last-child,.govuk-radios__item:last-of-type{margin-bottom:0}.govuk-radios__input{cursor:pointer;position:absolute;z-index:1;top:-2px;left:-2px;width:44px;height:44px;margin:0;opacity:0}.govuk-radios__label{display:inline-block;margin-bottom:0;padding:8px 15px 5px;cursor:pointer;-ms-touch-action:manipulation;touch-action:manipulation}.govuk-radios__label:before{content:"";box-sizing:border-box;position:absolute;top:0;left:0;width:40px;height:40px;border:2px solid currentcolor;border-radius:50%;background:transparent}.govuk-radios__label:after{content:"";position:absolute;top:10px;left:10px;width:0;height:0;border:10px solid currentcolor;border-radius:50%;opacity:0;background:currentcolor}.govuk-radios__hint{display:block;padding-right:15px;padding-left:15px}.govuk-radios__input:focus+.govuk-radios__label:before{border-width:4px;outline:3px solid transparent;outline-offset:1px;box-shadow:0 0 0 4px #fd0}@media screen and (forced-colors: active),(-ms-high-contrast: active){.govuk-radios__input:focus+.govuk-radios__label:before{outline-color:Highlight}}.govuk-radios__input:checked+.govuk-radios__label:after{opacity:1}.govuk-radios__input:disabled,.govuk-radios__input:disabled+.govuk-radios__label{cursor:not-allowed}.govuk-radios__input:disabled+.govuk-radios__label,.govuk-radios__input:disabled~.govuk-hint{opacity:.5}@media (min-width: 40.0625em){.govuk-radios--inline:after{content:"";display:block;clear:both}.govuk-radios--inline .govuk-radios__item{margin-right:20px;float:left;clear:none}}.govuk-radios__divider{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;color:#0b0c0c;width:40px;margin-bottom:10px;text-align:center}@media print{.govuk-radios__divider{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-radios__divider{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-radios__divider{font-size:14pt;line-height:1.15}}@media print{.govuk-radios__divider{color:#000}}.govuk-radios__conditional{margin-bottom:15px;margin-left:18px;padding-left:33px;border-left:4px solid #b1b4b6}@media (min-width: 40.0625em){.govuk-radios__conditional{margin-bottom:20px}}.js-enabled .govuk-radios__conditional--hidden{display:none}.govuk-radios__conditional>:last-child{margin-bottom:0}.govuk-radios--small .govuk-radios__item{min-height:0;margin-bottom:0;padding-left:34px;float:left}.govuk-radios--small .govuk-radios__item:after{content:"";display:block;clear:both}.govuk-radios--small .govuk-radios__input{left:-10px}.govuk-radios--small .govuk-radios__label{margin-top:-2px;padding:13px 15px 13px 1px;float:left}@media (min-width: 40.0625em){.govuk-radios--small .govuk-radios__label{padding:11px 15px 10px 1px}}.govuk-radios--small .govuk-radios__label:before{top:8px;width:24px;height:24px}.govuk-radios--small .govuk-radios__label:after{top:15px;left:7px;border-width:5px}.govuk-radios--small .govuk-radios__hint{padding:0;clear:both;pointer-events:none}.govuk-radios--small .govuk-radios__conditional{margin-left:10px;padding-left:20px;clear:both}.govuk-radios--small .govuk-radios__divider{width:24px;margin-bottom:5px}.govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:not(:disabled)+.govuk-radios__label:before{box-shadow:0 0 0 10px #b1b4b6}.govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:focus+.govuk-radios__label:before{box-shadow:0 0 0 4px #fd0,0 0 0 10px #b1b4b6}@media (hover: none),(pointer: coarse){.govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:not(:disabled)+.govuk-radios__label:before{box-shadow:initial}.govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:focus+.govuk-radios__label:before{box-shadow:0 0 0 4px #fd0}}.govuk-select{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;box-sizing:border-box;min-width:11.5em;max-width:100%;height:40px;height:2.5rem;padding:5px;border:2px solid #0b0c0c;color:#0b0c0c;background-color:#fff}@media print{.govuk-select{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-select{font-size:19px;font-size:1.1875rem;line-height:1.25}}@media print{.govuk-select{font-size:14pt;line-height:1.25}}.govuk-select:focus{outline:3px solid #ffdd00;outline-offset:0;box-shadow:inset 0 0 0 2px}.govuk-select:disabled{opacity:.5;color:inherit;cursor:not-allowed}.govuk-select option:active,.govuk-select option:checked,.govuk-select:focus::-ms-value{color:#fff;background-color:#1d70b8}.govuk-select--error{border-color:#d4351c}.govuk-select--error:focus{border-color:#0b0c0c}.govuk-skip-link{position:absolute!important;width:1px!important;height:1px!important;margin:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;white-space:nowrap!important;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline;font-size:14px;font-size:.875rem;line-height:1.1428571429;display:block;padding:10px 15px}.govuk-skip-link:active,.govuk-skip-link:focus{position:static!important;width:auto!important;height:auto!important;margin:inherit!important;overflow:visible!important;clip:auto!important;-webkit-clip-path:none!important;clip-path:none!important;white-space:inherit!important}@media print{.govuk-skip-link{font-family:sans-serif}}.govuk-skip-link:link,.govuk-skip-link:visited{color:#0b0c0c}@media print{.govuk-skip-link:link,.govuk-skip-link:visited{color:#000}}.govuk-skip-link:hover{color:rgba(11,12,12,.99)}.govuk-skip-link:active,.govuk-skip-link:focus{color:#0b0c0c}@media print{.govuk-skip-link:active,.govuk-skip-link:focus{color:#000}}@media (min-width: 40.0625em){.govuk-skip-link{font-size:16px;font-size:1rem;line-height:1.25}}@media print{.govuk-skip-link{font-size:14pt;line-height:1.2}}@supports (padding: max(0px)){.govuk-skip-link{padding-right:max(15px,calc(15px + env(safe-area-inset-right)));padding-left:max(15px,calc(15px + env(safe-area-inset-left)))}}.govuk-skip-link:focus{outline:3px solid #ffdd00;outline-offset:0;background-color:#fd0}.govuk-skip-link-focused-element:focus{outline:none}.govuk-summary-list{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;color:#0b0c0c;margin:0 0 20px}@media print{.govuk-summary-list{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-summary-list{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-summary-list{font-size:14pt;line-height:1.15}}@media print{.govuk-summary-list{color:#000}}@media (min-width: 40.0625em){.govuk-summary-list{display:table;width:100%;table-layout:fixed;border-collapse:collapse}}@media (min-width: 40.0625em){.govuk-summary-list{margin-bottom:30px}}.govuk-summary-list__row{border-bottom:1px solid #b1b4b6}@media (max-width: 40.0525em){.govuk-summary-list__row{margin-bottom:15px}}@media (min-width: 40.0625em){.govuk-summary-list__row{display:table-row}}.govuk-summary-list__row:not(.govuk-summary-list__row--no-actions)>:last-child{padding-right:0}@media (min-width: 40.0625em){.govuk-summary-list__row--no-actions:after{content:"";display:table-cell;width:20%}}.govuk-summary-list__key,.govuk-summary-list__value,.govuk-summary-list__actions{margin:0}@media (min-width: 40.0625em){.govuk-summary-list__key,.govuk-summary-list__value,.govuk-summary-list__actions{display:table-cell;padding-top:10px;padding-right:20px;padding-bottom:10px}}.govuk-summary-list__actions{margin-bottom:15px}@media (min-width: 40.0625em){.govuk-summary-list__actions{width:20%;padding-right:0;text-align:right}}.govuk-summary-list__key,.govuk-summary-list__value{word-wrap:break-word;overflow-wrap:break-word}.govuk-summary-list__key{margin-bottom:5px;font-weight:700}@media (min-width: 40.0625em){.govuk-summary-list__key{width:30%}}@media (max-width: 40.0525em){.govuk-summary-list__value{margin-bottom:15px}}.govuk-summary-list__value>p{margin-bottom:10px}.govuk-summary-list__value>:last-child{margin-bottom:0}.govuk-summary-list__actions-list{width:100%;margin:0;padding:0}.govuk-summary-list__actions-list-item{display:inline-block}@media (max-width: 40.0525em){.govuk-summary-list__actions-list-item{margin-right:10px;padding-right:10px}.govuk-summary-list__actions-list-item:not(:last-child){border-right:1px solid #b1b4b6}.govuk-summary-list__actions-list-item:last-child{margin-right:0;padding-right:0;border:0}}@media (min-width: 40.0625em){.govuk-summary-list__actions-list-item{margin-left:10px;padding-left:10px}.govuk-summary-list__actions-list-item:not(:first-child){border-left:1px solid #b1b4b6}.govuk-summary-list__actions-list-item:first-child{margin-left:0;padding-left:0;border:0}}.govuk-summary-list--no-border .govuk-summary-list__row{border:0}@media (min-width: 40.0625em){.govuk-summary-list--no-border .govuk-summary-list__key,.govuk-summary-list--no-border .govuk-summary-list__value,.govuk-summary-list--no-border .govuk-summary-list__actions{padding-bottom:11px}}.govuk-summary-list__row--no-border{border:0}@media (min-width: 40.0625em){.govuk-summary-list__row--no-border .govuk-summary-list__key,.govuk-summary-list__row--no-border .govuk-summary-list__value,.govuk-summary-list__row--no-border .govuk-summary-list__actions{padding-bottom:11px}}.govuk-summary-card{margin-bottom:20px;border:1px solid #b1b4b6}@media (min-width: 40.0625em){.govuk-summary-card{margin-bottom:30px}}.govuk-summary-card__title-wrapper{padding:15px;border-bottom:1px solid transparent;background-color:#f3f2f1}@media (min-width: 40.0625em){.govuk-summary-card__title-wrapper{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:15px 20px}}.govuk-summary-card__title{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:16px;font-size:1rem;line-height:1.25;margin:5px 20px 10px 0}@media print{.govuk-summary-card__title{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-summary-card__title{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-summary-card__title{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-summary-card__title{margin-bottom:5px}}.govuk-summary-card__actions{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:16px;font-size:1rem;line-height:1.25;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px;margin:5px 0;padding:0;list-style:none}@media print{.govuk-summary-card__actions{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-summary-card__actions{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-summary-card__actions{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-summary-card__actions{-ms-flex-pack:right;justify-content:right;text-align:right}}.govuk-summary-card__action{display:inline;margin:0 10px 0 0;padding-right:10px;border-right:1px solid #b1b4b6}@media (min-width: 40.0625em){.govuk-summary-card__action{margin-right:0}}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.govuk-summary-card__action{margin-bottom:5px}}.govuk-summary-card__action:last-child{margin:0;padding-right:0;border-right:none}@media (min-width: 40.0625em){.govuk-summary-card__action:last-child{padding-left:10px}}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.govuk-summary-card__action:last-child{margin-bottom:0}}.govuk-summary-card__content{padding:15px 15px 0}@media (min-width: 40.0625em){.govuk-summary-card__content{padding:15px 20px}}.govuk-summary-card__content .govuk-summary-list{margin-bottom:0}.govuk-summary-card__content .govuk-summary-list__row:last-of-type{margin-bottom:0;border-bottom:none}.govuk-table{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;color:#0b0c0c;width:100%;margin-bottom:20px;border-spacing:0;border-collapse:collapse}@media print{.govuk-table{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-table{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-table{font-size:14pt;line-height:1.15}}@media print{.govuk-table{color:#000}}@media (min-width: 40.0625em){.govuk-table{margin-bottom:30px}}.govuk-table__header{font-weight:700}.govuk-table__header,.govuk-table__cell{padding:10px 20px 10px 0;border-bottom:1px solid #b1b4b6;text-align:left;vertical-align:top}.govuk-table__cell--numeric{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-font-feature-settings:"tnum" 1;font-feature-settings:"tnum" 1;font-weight:400}@media print{.govuk-table__cell--numeric{font-family:sans-serif}}@supports (font-variant-numeric: tabular-nums){.govuk-table__cell--numeric{-webkit-font-feature-settings:normal;font-feature-settings:normal;font-variant-numeric:tabular-nums}}.govuk-table__header--numeric,.govuk-table__cell--numeric{text-align:right}.govuk-table__header:last-child,.govuk-table__cell:last-child{padding-right:0}.govuk-table__caption{font-weight:700;display:table-caption;text-align:left}.govuk-table__caption--xl{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:32px;font-size:2rem;line-height:1.09375;margin-bottom:15px}@media print{.govuk-table__caption--xl{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-table__caption--xl{font-size:48px;font-size:3rem;line-height:1.0416666667}}@media print{.govuk-table__caption--xl{font-size:32pt;line-height:1.15}}.govuk-table__caption--l{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:24px;font-size:1.5rem;line-height:1.0416666667;margin-bottom:15px}@media print{.govuk-table__caption--l{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-table__caption--l{font-size:36px;font-size:2.25rem;line-height:1.1111111111}}@media print{.govuk-table__caption--l{font-size:24pt;line-height:1.05}}.govuk-table__caption--m{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:18px;font-size:1.125rem;line-height:1.1111111111;margin-bottom:15px}@media print{.govuk-table__caption--m{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-table__caption--m{font-size:24px;font-size:1.5rem;line-height:1.25}}@media print{.govuk-table__caption--m{font-size:18pt;line-height:1.15}}.govuk-table__caption--s{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:16px;font-size:1rem;line-height:1.25}@media print{.govuk-table__caption--s{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-table__caption--s{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-table__caption--s{font-size:14pt;line-height:1.15}}.govuk-warning-text{position:relative;margin-bottom:20px;padding:10px 0}@media (min-width: 40.0625em){.govuk-warning-text{margin-bottom:30px}}.govuk-warning-text__assistive{position:absolute!important;width:1px!important;height:1px!important;margin:0!important;padding:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;border:0!important;white-space:nowrap!important}.govuk-warning-text__assistive:before{content:"\a0"}.govuk-warning-text__assistive:after{content:"\a0"}.govuk-warning-text__icon{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;box-sizing:border-box;display:inline-block;position:absolute;left:0;min-width:35px;min-height:35px;margin-top:-7px;border:3px solid #0b0c0c;border-radius:50%;color:#fff;background:#0b0c0c;font-size:30px;line-height:29px;text-align:center;-webkit-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;user-select:none;forced-color-adjust:none}@media print{.govuk-warning-text__icon{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-warning-text__icon{margin-top:-5px}}@media screen and (forced-colors: active){.govuk-warning-text__icon{border-color:windowText;color:windowText;background:transparent}}.govuk-warning-text__text{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:16px;font-size:1rem;line-height:1.25;color:#0b0c0c;display:block;padding-left:45px}@media print{.govuk-warning-text__text{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-warning-text__text{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-warning-text__text{font-size:14pt;line-height:1.15}}@media print{.govuk-warning-text__text{color:#000}}.govuk-clearfix:after{content:"";display:block;clear:both}.govuk-visually-hidden{position:absolute!important;width:1px!important;height:1px!important;margin:0!important;padding:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;border:0!important;white-space:nowrap!important}.govuk-visually-hidden:before{content:"\a0"}.govuk-visually-hidden:after{content:"\a0"}.govuk-visually-hidden-focusable{position:absolute!important;width:1px!important;height:1px!important;margin:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;white-space:nowrap!important}.govuk-visually-hidden-focusable:active,.govuk-visually-hidden-focusable:focus{position:static!important;width:auto!important;height:auto!important;margin:inherit!important;overflow:visible!important;clip:auto!important;-webkit-clip-path:none!important;clip-path:none!important;white-space:inherit!important}.govuk-\!-display-inline{display:inline!important}.govuk-\!-display-inline-block{display:inline-block!important}.govuk-\!-display-block{display:block!important}.govuk-\!-display-none{display:none!important}@media print{.govuk-\!-display-none-print{display:none!important}}.govuk-\!-margin-0{margin:0!important}.govuk-\!-margin-top-0{margin-top:0!important}.govuk-\!-margin-right-0{margin-right:0!important}.govuk-\!-margin-bottom-0{margin-bottom:0!important}.govuk-\!-margin-left-0{margin-left:0!important}.govuk-\!-margin-1{margin:5px!important}.govuk-\!-margin-top-1{margin-top:5px!important}.govuk-\!-margin-right-1{margin-right:5px!important}.govuk-\!-margin-bottom-1{margin-bottom:5px!important}.govuk-\!-margin-left-1{margin-left:5px!important}.govuk-\!-margin-2{margin:10px!important}.govuk-\!-margin-top-2{margin-top:10px!important}.govuk-\!-margin-right-2{margin-right:10px!important}.govuk-\!-margin-bottom-2{margin-bottom:10px!important}.govuk-\!-margin-left-2{margin-left:10px!important}.govuk-\!-margin-3{margin:15px!important}.govuk-\!-margin-top-3{margin-top:15px!important}.govuk-\!-margin-right-3{margin-right:15px!important}.govuk-\!-margin-bottom-3{margin-bottom:15px!important}.govuk-\!-margin-left-3{margin-left:15px!important}.govuk-\!-margin-4{margin:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-4{margin:20px!important}}.govuk-\!-margin-top-4{margin-top:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-top-4{margin-top:20px!important}}.govuk-\!-margin-right-4{margin-right:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-right-4{margin-right:20px!important}}.govuk-\!-margin-bottom-4{margin-bottom:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-bottom-4{margin-bottom:20px!important}}.govuk-\!-margin-left-4{margin-left:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-left-4{margin-left:20px!important}}.govuk-\!-margin-5{margin:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-5{margin:25px!important}}.govuk-\!-margin-top-5{margin-top:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-top-5{margin-top:25px!important}}.govuk-\!-margin-right-5{margin-right:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-right-5{margin-right:25px!important}}.govuk-\!-margin-bottom-5{margin-bottom:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-bottom-5{margin-bottom:25px!important}}.govuk-\!-margin-left-5{margin-left:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-left-5{margin-left:25px!important}}.govuk-\!-margin-6{margin:20px!important}@media (min-width: 40.0625em){.govuk-\!-margin-6{margin:30px!important}}.govuk-\!-margin-top-6{margin-top:20px!important}@media (min-width: 40.0625em){.govuk-\!-margin-top-6{margin-top:30px!important}}.govuk-\!-margin-right-6{margin-right:20px!important}@media (min-width: 40.0625em){.govuk-\!-margin-right-6{margin-right:30px!important}}.govuk-\!-margin-bottom-6{margin-bottom:20px!important}@media (min-width: 40.0625em){.govuk-\!-margin-bottom-6{margin-bottom:30px!important}}.govuk-\!-margin-left-6{margin-left:20px!important}@media (min-width: 40.0625em){.govuk-\!-margin-left-6{margin-left:30px!important}}.govuk-\!-margin-7{margin:25px!important}@media (min-width: 40.0625em){.govuk-\!-margin-7{margin:40px!important}}.govuk-\!-margin-top-7{margin-top:25px!important}@media (min-width: 40.0625em){.govuk-\!-margin-top-7{margin-top:40px!important}}.govuk-\!-margin-right-7{margin-right:25px!important}@media (min-width: 40.0625em){.govuk-\!-margin-right-7{margin-right:40px!important}}.govuk-\!-margin-bottom-7{margin-bottom:25px!important}@media (min-width: 40.0625em){.govuk-\!-margin-bottom-7{margin-bottom:40px!important}}.govuk-\!-margin-left-7{margin-left:25px!important}@media (min-width: 40.0625em){.govuk-\!-margin-left-7{margin-left:40px!important}}.govuk-\!-margin-8{margin:30px!important}@media (min-width: 40.0625em){.govuk-\!-margin-8{margin:50px!important}}.govuk-\!-margin-top-8{margin-top:30px!important}@media (min-width: 40.0625em){.govuk-\!-margin-top-8{margin-top:50px!important}}.govuk-\!-margin-right-8{margin-right:30px!important}@media (min-width: 40.0625em){.govuk-\!-margin-right-8{margin-right:50px!important}}.govuk-\!-margin-bottom-8{margin-bottom:30px!important}@media (min-width: 40.0625em){.govuk-\!-margin-bottom-8{margin-bottom:50px!important}}.govuk-\!-margin-left-8{margin-left:30px!important}@media (min-width: 40.0625em){.govuk-\!-margin-left-8{margin-left:50px!important}}.govuk-\!-margin-9{margin:40px!important}@media (min-width: 40.0625em){.govuk-\!-margin-9{margin:60px!important}}.govuk-\!-margin-top-9{margin-top:40px!important}@media (min-width: 40.0625em){.govuk-\!-margin-top-9{margin-top:60px!important}}.govuk-\!-margin-right-9{margin-right:40px!important}@media (min-width: 40.0625em){.govuk-\!-margin-right-9{margin-right:60px!important}}.govuk-\!-margin-bottom-9{margin-bottom:40px!important}@media (min-width: 40.0625em){.govuk-\!-margin-bottom-9{margin-bottom:60px!important}}.govuk-\!-margin-left-9{margin-left:40px!important}@media (min-width: 40.0625em){.govuk-\!-margin-left-9{margin-left:60px!important}}.govuk-\!-padding-0{padding:0!important}.govuk-\!-padding-top-0{padding-top:0!important}.govuk-\!-padding-right-0{padding-right:0!important}.govuk-\!-padding-bottom-0{padding-bottom:0!important}.govuk-\!-padding-left-0{padding-left:0!important}.govuk-\!-padding-1{padding:5px!important}.govuk-\!-padding-top-1{padding-top:5px!important}.govuk-\!-padding-right-1{padding-right:5px!important}.govuk-\!-padding-bottom-1{padding-bottom:5px!important}.govuk-\!-padding-left-1{padding-left:5px!important}.govuk-\!-padding-2{padding:10px!important}.govuk-\!-padding-top-2{padding-top:10px!important}.govuk-\!-padding-right-2{padding-right:10px!important}.govuk-\!-padding-bottom-2{padding-bottom:10px!important}.govuk-\!-padding-left-2{padding-left:10px!important}.govuk-\!-padding-3{padding:15px!important}.govuk-\!-padding-top-3{padding-top:15px!important}.govuk-\!-padding-right-3{padding-right:15px!important}.govuk-\!-padding-bottom-3{padding-bottom:15px!important}.govuk-\!-padding-left-3{padding-left:15px!important}.govuk-\!-padding-4{padding:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-4{padding:20px!important}}.govuk-\!-padding-top-4{padding-top:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-top-4{padding-top:20px!important}}.govuk-\!-padding-right-4{padding-right:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-right-4{padding-right:20px!important}}.govuk-\!-padding-bottom-4{padding-bottom:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-bottom-4{padding-bottom:20px!important}}.govuk-\!-padding-left-4{padding-left:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-left-4{padding-left:20px!important}}.govuk-\!-padding-5{padding:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-5{padding:25px!important}}.govuk-\!-padding-top-5{padding-top:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-top-5{padding-top:25px!important}}.govuk-\!-padding-right-5{padding-right:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-right-5{padding-right:25px!important}}.govuk-\!-padding-bottom-5{padding-bottom:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-bottom-5{padding-bottom:25px!important}}.govuk-\!-padding-left-5{padding-left:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-left-5{padding-left:25px!important}}.govuk-\!-padding-6{padding:20px!important}@media (min-width: 40.0625em){.govuk-\!-padding-6{padding:30px!important}}.govuk-\!-padding-top-6{padding-top:20px!important}@media (min-width: 40.0625em){.govuk-\!-padding-top-6{padding-top:30px!important}}.govuk-\!-padding-right-6{padding-right:20px!important}@media (min-width: 40.0625em){.govuk-\!-padding-right-6{padding-right:30px!important}}.govuk-\!-padding-bottom-6{padding-bottom:20px!important}@media (min-width: 40.0625em){.govuk-\!-padding-bottom-6{padding-bottom:30px!important}}.govuk-\!-padding-left-6{padding-left:20px!important}@media (min-width: 40.0625em){.govuk-\!-padding-left-6{padding-left:30px!important}}.govuk-\!-padding-7{padding:25px!important}@media (min-width: 40.0625em){.govuk-\!-padding-7{padding:40px!important}}.govuk-\!-padding-top-7{padding-top:25px!important}@media (min-width: 40.0625em){.govuk-\!-padding-top-7{padding-top:40px!important}}.govuk-\!-padding-right-7{padding-right:25px!important}@media (min-width: 40.0625em){.govuk-\!-padding-right-7{padding-right:40px!important}}.govuk-\!-padding-bottom-7{padding-bottom:25px!important}@media (min-width: 40.0625em){.govuk-\!-padding-bottom-7{padding-bottom:40px!important}}.govuk-\!-padding-left-7{padding-left:25px!important}@media (min-width: 40.0625em){.govuk-\!-padding-left-7{padding-left:40px!important}}.govuk-\!-padding-8{padding:30px!important}@media (min-width: 40.0625em){.govuk-\!-padding-8{padding:50px!important}}.govuk-\!-padding-top-8{padding-top:30px!important}@media (min-width: 40.0625em){.govuk-\!-padding-top-8{padding-top:50px!important}}.govuk-\!-padding-right-8{padding-right:30px!important}@media (min-width: 40.0625em){.govuk-\!-padding-right-8{padding-right:50px!important}}.govuk-\!-padding-bottom-8{padding-bottom:30px!important}@media (min-width: 40.0625em){.govuk-\!-padding-bottom-8{padding-bottom:50px!important}}.govuk-\!-padding-left-8{padding-left:30px!important}@media (min-width: 40.0625em){.govuk-\!-padding-left-8{padding-left:50px!important}}.govuk-\!-padding-9{padding:40px!important}@media (min-width: 40.0625em){.govuk-\!-padding-9{padding:60px!important}}.govuk-\!-padding-top-9{padding-top:40px!important}@media (min-width: 40.0625em){.govuk-\!-padding-top-9{padding-top:60px!important}}.govuk-\!-padding-right-9{padding-right:40px!important}@media (min-width: 40.0625em){.govuk-\!-padding-right-9{padding-right:60px!important}}.govuk-\!-padding-bottom-9{padding-bottom:40px!important}@media (min-width: 40.0625em){.govuk-\!-padding-bottom-9{padding-bottom:60px!important}}.govuk-\!-padding-left-9{padding-left:40px!important}@media (min-width: 40.0625em){.govuk-\!-padding-left-9{padding-left:60px!important}}.govuk-\!-margin-static-0,.govuk-\!-static-margin-0{margin:0!important}.govuk-\!-margin-top-static-0,.govuk-\!-static-margin-top-0{margin-top:0!important}.govuk-\!-margin-right-static-0,.govuk-\!-static-margin-right-0{margin-right:0!important}.govuk-\!-margin-bottom-static-0,.govuk-\!-static-margin-bottom-0{margin-bottom:0!important}.govuk-\!-margin-left-static-0,.govuk-\!-static-margin-left-0{margin-left:0!important}.govuk-\!-margin-static-1,.govuk-\!-static-margin-1{margin:5px!important}.govuk-\!-margin-top-static-1,.govuk-\!-static-margin-top-1{margin-top:5px!important}.govuk-\!-margin-right-static-1,.govuk-\!-static-margin-right-1{margin-right:5px!important}.govuk-\!-margin-bottom-static-1,.govuk-\!-static-margin-bottom-1{margin-bottom:5px!important}.govuk-\!-margin-left-static-1,.govuk-\!-static-margin-left-1{margin-left:5px!important}.govuk-\!-margin-static-2,.govuk-\!-static-margin-2{margin:10px!important}.govuk-\!-margin-top-static-2,.govuk-\!-static-margin-top-2{margin-top:10px!important}.govuk-\!-margin-right-static-2,.govuk-\!-static-margin-right-2{margin-right:10px!important}.govuk-\!-margin-bottom-static-2,.govuk-\!-static-margin-bottom-2{margin-bottom:10px!important}.govuk-\!-margin-left-static-2,.govuk-\!-static-margin-left-2{margin-left:10px!important}.govuk-\!-margin-static-3,.govuk-\!-static-margin-3{margin:15px!important}.govuk-\!-margin-top-static-3,.govuk-\!-static-margin-top-3{margin-top:15px!important}.govuk-\!-margin-right-static-3,.govuk-\!-static-margin-right-3{margin-right:15px!important}.govuk-\!-margin-bottom-static-3,.govuk-\!-static-margin-bottom-3{margin-bottom:15px!important}.govuk-\!-margin-left-static-3,.govuk-\!-static-margin-left-3{margin-left:15px!important}.govuk-\!-margin-static-4,.govuk-\!-static-margin-4{margin:20px!important}.govuk-\!-margin-top-static-4,.govuk-\!-static-margin-top-4{margin-top:20px!important}.govuk-\!-margin-right-static-4,.govuk-\!-static-margin-right-4{margin-right:20px!important}.govuk-\!-margin-bottom-static-4,.govuk-\!-static-margin-bottom-4{margin-bottom:20px!important}.govuk-\!-margin-left-static-4,.govuk-\!-static-margin-left-4{margin-left:20px!important}.govuk-\!-margin-static-5,.govuk-\!-static-margin-5{margin:25px!important}.govuk-\!-margin-top-static-5,.govuk-\!-static-margin-top-5{margin-top:25px!important}.govuk-\!-margin-right-static-5,.govuk-\!-static-margin-right-5{margin-right:25px!important}.govuk-\!-margin-bottom-static-5,.govuk-\!-static-margin-bottom-5{margin-bottom:25px!important}.govuk-\!-margin-left-static-5,.govuk-\!-static-margin-left-5{margin-left:25px!important}.govuk-\!-margin-static-6,.govuk-\!-static-margin-6{margin:30px!important}.govuk-\!-margin-top-static-6,.govuk-\!-static-margin-top-6{margin-top:30px!important}.govuk-\!-margin-right-static-6,.govuk-\!-static-margin-right-6{margin-right:30px!important}.govuk-\!-margin-bottom-static-6,.govuk-\!-static-margin-bottom-6{margin-bottom:30px!important}.govuk-\!-margin-left-static-6,.govuk-\!-static-margin-left-6{margin-left:30px!important}.govuk-\!-margin-static-7,.govuk-\!-static-margin-7{margin:40px!important}.govuk-\!-margin-top-static-7,.govuk-\!-static-margin-top-7{margin-top:40px!important}.govuk-\!-margin-right-static-7,.govuk-\!-static-margin-right-7{margin-right:40px!important}.govuk-\!-margin-bottom-static-7,.govuk-\!-static-margin-bottom-7{margin-bottom:40px!important}.govuk-\!-margin-left-static-7,.govuk-\!-static-margin-left-7{margin-left:40px!important}.govuk-\!-margin-static-8,.govuk-\!-static-margin-8{margin:50px!important}.govuk-\!-margin-top-static-8,.govuk-\!-static-margin-top-8{margin-top:50px!important}.govuk-\!-margin-right-static-8,.govuk-\!-static-margin-right-8{margin-right:50px!important}.govuk-\!-margin-bottom-static-8,.govuk-\!-static-margin-bottom-8{margin-bottom:50px!important}.govuk-\!-margin-left-static-8,.govuk-\!-static-margin-left-8{margin-left:50px!important}.govuk-\!-margin-static-9,.govuk-\!-static-margin-9{margin:60px!important}.govuk-\!-margin-top-static-9,.govuk-\!-static-margin-top-9{margin-top:60px!important}.govuk-\!-margin-right-static-9,.govuk-\!-static-margin-right-9{margin-right:60px!important}.govuk-\!-margin-bottom-static-9,.govuk-\!-static-margin-bottom-9{margin-bottom:60px!important}.govuk-\!-margin-left-static-9,.govuk-\!-static-margin-left-9{margin-left:60px!important}.govuk-\!-padding-static-0,.govuk-\!-static-padding-0{padding:0!important}.govuk-\!-padding-top-static-0,.govuk-\!-static-padding-top-0{padding-top:0!important}.govuk-\!-padding-right-static-0,.govuk-\!-static-padding-right-0{padding-right:0!important}.govuk-\!-padding-bottom-static-0,.govuk-\!-static-padding-bottom-0{padding-bottom:0!important}.govuk-\!-padding-left-static-0,.govuk-\!-static-padding-left-0{padding-left:0!important}.govuk-\!-padding-static-1,.govuk-\!-static-padding-1{padding:5px!important}.govuk-\!-padding-top-static-1,.govuk-\!-static-padding-top-1{padding-top:5px!important}.govuk-\!-padding-right-static-1,.govuk-\!-static-padding-right-1{padding-right:5px!important}.govuk-\!-padding-bottom-static-1,.govuk-\!-static-padding-bottom-1{padding-bottom:5px!important}.govuk-\!-padding-left-static-1,.govuk-\!-static-padding-left-1{padding-left:5px!important}.govuk-\!-padding-static-2,.govuk-\!-static-padding-2{padding:10px!important}.govuk-\!-padding-top-static-2,.govuk-\!-static-padding-top-2{padding-top:10px!important}.govuk-\!-padding-right-static-2,.govuk-\!-static-padding-right-2{padding-right:10px!important}.govuk-\!-padding-bottom-static-2,.govuk-\!-static-padding-bottom-2{padding-bottom:10px!important}.govuk-\!-padding-left-static-2,.govuk-\!-static-padding-left-2{padding-left:10px!important}.govuk-\!-padding-static-3,.govuk-\!-static-padding-3{padding:15px!important}.govuk-\!-padding-top-static-3,.govuk-\!-static-padding-top-3{padding-top:15px!important}.govuk-\!-padding-right-static-3,.govuk-\!-static-padding-right-3{padding-right:15px!important}.govuk-\!-padding-bottom-static-3,.govuk-\!-static-padding-bottom-3{padding-bottom:15px!important}.govuk-\!-padding-left-static-3,.govuk-\!-static-padding-left-3{padding-left:15px!important}.govuk-\!-padding-static-4,.govuk-\!-static-padding-4{padding:20px!important}.govuk-\!-padding-top-static-4,.govuk-\!-static-padding-top-4{padding-top:20px!important}.govuk-\!-padding-right-static-4,.govuk-\!-static-padding-right-4{padding-right:20px!important}.govuk-\!-padding-bottom-static-4,.govuk-\!-static-padding-bottom-4{padding-bottom:20px!important}.govuk-\!-padding-left-static-4,.govuk-\!-static-padding-left-4{padding-left:20px!important}.govuk-\!-padding-static-5,.govuk-\!-static-padding-5{padding:25px!important}.govuk-\!-padding-top-static-5,.govuk-\!-static-padding-top-5{padding-top:25px!important}.govuk-\!-padding-right-static-5,.govuk-\!-static-padding-right-5{padding-right:25px!important}.govuk-\!-padding-bottom-static-5,.govuk-\!-static-padding-bottom-5{padding-bottom:25px!important}.govuk-\!-padding-left-static-5,.govuk-\!-static-padding-left-5{padding-left:25px!important}.govuk-\!-padding-static-6,.govuk-\!-static-padding-6{padding:30px!important}.govuk-\!-padding-top-static-6,.govuk-\!-static-padding-top-6{padding-top:30px!important}.govuk-\!-padding-right-static-6,.govuk-\!-static-padding-right-6{padding-right:30px!important}.govuk-\!-padding-bottom-static-6,.govuk-\!-static-padding-bottom-6{padding-bottom:30px!important}.govuk-\!-padding-left-static-6,.govuk-\!-static-padding-left-6{padding-left:30px!important}.govuk-\!-padding-static-7,.govuk-\!-static-padding-7{padding:40px!important}.govuk-\!-padding-top-static-7,.govuk-\!-static-padding-top-7{padding-top:40px!important}.govuk-\!-padding-right-static-7,.govuk-\!-static-padding-right-7{padding-right:40px!important}.govuk-\!-padding-bottom-static-7,.govuk-\!-static-padding-bottom-7{padding-bottom:40px!important}.govuk-\!-padding-left-static-7,.govuk-\!-static-padding-left-7{padding-left:40px!important}.govuk-\!-padding-static-8,.govuk-\!-static-padding-8{padding:50px!important}.govuk-\!-padding-top-static-8,.govuk-\!-static-padding-top-8{padding-top:50px!important}.govuk-\!-padding-right-static-8,.govuk-\!-static-padding-right-8{padding-right:50px!important}.govuk-\!-padding-bottom-static-8,.govuk-\!-static-padding-bottom-8{padding-bottom:50px!important}.govuk-\!-padding-left-static-8,.govuk-\!-static-padding-left-8{padding-left:50px!important}.govuk-\!-padding-static-9,.govuk-\!-static-padding-9{padding:60px!important}.govuk-\!-padding-top-static-9,.govuk-\!-static-padding-top-9{padding-top:60px!important}.govuk-\!-padding-right-static-9,.govuk-\!-static-padding-right-9{padding-right:60px!important}.govuk-\!-padding-bottom-static-9,.govuk-\!-static-padding-bottom-9{padding-bottom:60px!important}.govuk-\!-padding-left-static-9,.govuk-\!-static-padding-left-9{padding-left:60px!important}.govuk-\!-text-align-left{text-align:left!important}.govuk-\!-text-align-centre{text-align:center!important}.govuk-\!-text-align-right{text-align:right!important}.govuk-\!-font-size-80{font-size:53px!important;font-size:3.3125rem!important;line-height:1.0377358491!important}@media (min-width: 40.0625em){.govuk-\!-font-size-80{font-size:80px!important;font-size:5rem!important;line-height:1!important}}@media print{.govuk-\!-font-size-80{font-size:53pt!important;line-height:1.1!important}}.govuk-\!-font-size-48{font-size:32px!important;font-size:2rem!important;line-height:1.09375!important}@media (min-width: 40.0625em){.govuk-\!-font-size-48{font-size:48px!important;font-size:3rem!important;line-height:1.0416666667!important}}@media print{.govuk-\!-font-size-48{font-size:32pt!important;line-height:1.15!important}}.govuk-\!-font-size-36{font-size:24px!important;font-size:1.5rem!important;line-height:1.0416666667!important}@media (min-width: 40.0625em){.govuk-\!-font-size-36{font-size:36px!important;font-size:2.25rem!important;line-height:1.1111111111!important}}@media print{.govuk-\!-font-size-36{font-size:24pt!important;line-height:1.05!important}}.govuk-\!-font-size-27{font-size:18px!important;font-size:1.125rem!important;line-height:1.1111111111!important}@media (min-width: 40.0625em){.govuk-\!-font-size-27{font-size:27px!important;font-size:1.6875rem!important;line-height:1.1111111111!important}}@media print{.govuk-\!-font-size-27{font-size:18pt!important;line-height:1.15!important}}.govuk-\!-font-size-24{font-size:18px!important;font-size:1.125rem!important;line-height:1.1111111111!important}@media (min-width: 40.0625em){.govuk-\!-font-size-24{font-size:24px!important;font-size:1.5rem!important;line-height:1.25!important}}@media print{.govuk-\!-font-size-24{font-size:18pt!important;line-height:1.15!important}}.govuk-\!-font-size-19{font-size:16px!important;font-size:1rem!important;line-height:1.25!important}@media (min-width: 40.0625em){.govuk-\!-font-size-19{font-size:19px!important;font-size:1.1875rem!important;line-height:1.3157894737!important}}@media print{.govuk-\!-font-size-19{font-size:14pt!important;line-height:1.15!important}}.govuk-\!-font-size-16{font-size:14px!important;font-size:.875rem!important;line-height:1.1428571429!important}@media (min-width: 40.0625em){.govuk-\!-font-size-16{font-size:16px!important;font-size:1rem!important;line-height:1.25!important}}@media print{.govuk-\!-font-size-16{font-size:14pt!important;line-height:1.2!important}}.govuk-\!-font-size-14{font-size:12px!important;font-size:.75rem!important;line-height:1.25!important}@media (min-width: 40.0625em){.govuk-\!-font-size-14{font-size:14px!important;font-size:.875rem!important;line-height:1.4285714286!important}}@media print{.govuk-\!-font-size-14{font-size:12pt!important;line-height:1.2!important}}.govuk-\!-font-weight-regular{font-weight:400!important}.govuk-\!-font-weight-bold{font-weight:700!important}.govuk-\!-width-full,.govuk-\!-width-three-quarters{width:100%!important}@media (min-width: 40.0625em){.govuk-\!-width-three-quarters{width:75%!important}}.govuk-\!-width-two-thirds{width:100%!important}@media (min-width: 40.0625em){.govuk-\!-width-two-thirds{width:66.66%!important}}.govuk-\!-width-one-half{width:100%!important}@media (min-width: 40.0625em){.govuk-\!-width-one-half{width:50%!important}}.govuk-\!-width-one-third{width:100%!important}@media (min-width: 40.0625em){.govuk-\!-width-one-third{width:33.33%!important}}.govuk-\!-width-one-quarter{width:100%!important}@media (min-width: 40.0625em){.govuk-\!-width-one-quarter{width:25%!important}}button,input,select,textarea{font-family:inherit}html{background-color:#fff;overflow-y:scroll;font-family:BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",Sans-serif}body{background-color:#fff;color:#0b0c0c;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:1.33333;margin:0;min-height:100%}table{margin-bottom:40px;border-spacing:0;vertical-align:top;width:100%}@media (min-width: 40.0625em){table{margin-bottom:48px}}@media print{table{page-break-inside:avoid}}thead th{border-bottom:2px solid #f3f2f1}th,td{font-size:16px;font-size:1;line-height:1.33333;padding-bottom:8px;padding-right:16px;padding-top:8px;border-bottom:1px solid #f3f2f1;text-align:left;vertical-align:top}@media (min-width: 40.0625em){th,td{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{th,td{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){th,td{padding-bottom:16px}}@media (min-width: 40.0625em){th,td{padding-right:24px}}@media (min-width: 40.0625em){th,td{padding-top:16px}}th:last-child,td:last-child{padding-right:0}th{font-weight:700}caption{font-weight:700;font-size:18px;font-size:1.125;line-height:1.33333;text-align:left}@media (min-width: 40.0625em){caption{font-size:22px;font-size:1.375;line-height:1.33333}}@media print{caption{font-size:18pt;line-height:1.15}}.dfe-form-group{margin-bottom:16px}@media (min-width: 40.0625em){.dfe-form-group{margin-bottom:24px}}.dfe-form-group .dfe-form-group:last-of-type{margin-bottom:0}.dfe-form-group--wrapper{margin-bottom:24px}@media (min-width: 40.0625em){.dfe-form-group--wrapper{margin-bottom:32px}}.dfe-form-group--error{border-left:4px solid #d4351c;padding-left:16px}.dfe-form-group--error .dfe-form-group{border:0;padding:0}.dfe-grid-row{margin-left:-16px;margin-right:-16px}.dfe-grid-row:after{clear:both;content:"";display:block}.dfe-grid-column-one-quarter{box-sizing:border-box;padding:0 16px}@media (min-width: 48.0625em){.dfe-grid-column-one-quarter{float:left;width:25%}}.dfe-grid-column-one-third{box-sizing:border-box;padding:0 16px}@media (min-width: 48.0625em){.dfe-grid-column-one-third{float:left;width:33.3333%}}.dfe-grid-column-one-half{box-sizing:border-box;padding:0 16px}@media (min-width: 48.0625em){.dfe-grid-column-one-half{float:left;width:50%}}.dfe-grid-column-two-thirds{box-sizing:border-box;padding:0 16px}@media (min-width: 48.0625em){.dfe-grid-column-two-thirds{float:left;width:66.6666%}}.dfe-grid-column-three-quarters{box-sizing:border-box;padding:0 16px}@media (min-width: 48.0625em){.dfe-grid-column-three-quarters{float:left;width:75%}}.dfe-grid-column-full{box-sizing:border-box;padding:0 16px}@media (min-width: 48.0625em){.dfe-grid-column-full{float:left;width:100%}}.dfe-main-wrapper{padding-top:40px;padding-bottom:40px;display:block}@media (min-width: 40.0625em){.dfe-main-wrapper{padding-top:48px}}@media (min-width: 40.0625em){.dfe-main-wrapper{padding-bottom:48px}}.dfe-main-wrapper>*:first-child{margin-top:0}.dfe-main-wrapper>*:last-child{margin-bottom:0}.dfe-main-wrapper--l{padding-top:48px}@media (min-width: 40.0625em){.dfe-main-wrapper--l{padding-top:56px}}.dfe-main-wrapper--s{padding-bottom:24px;padding-top:24px}@media (min-width: 40.0625em){.dfe-main-wrapper--s{padding-bottom:32px}}@media (min-width: 40.0625em){.dfe-main-wrapper--s{padding-top:32px}}.dfe-width-container{margin:0 16px;max-width:1200px}@media (min-width: 48.0625em){.dfe-width-container{margin:0 32px}}@media (min-width: 1264px){.dfe-width-container{margin:0 auto}}.dfe-width-container-fluid{margin:0 16px;max-width:100%}@media (min-width: 48.0625em){.dfe-width-container-fluid{margin:0 32px}}.dfe-icon{height:34px;width:34px}.dfe-icon__search,.dfe-icon__chevron-left,.dfe-icon__chevron-right,.dfe-icon__close{fill:#003a69}.dfe-icon__cross{fill:#d4351c}.dfe-icon__tick{stroke:#00703c}.dfe-icon__arrow-right,.dfe-icon__arrow-left{fill:#003a69}.dfe-icon__arrow-right-circle{fill:#00703c}.dfe-icon__chevron-down{fill:#003a69;-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dfe-icon__chevron-down path{fill:#fff}.dfe-icon__chevron-up{fill:#003a69}.dfe-icon__chevron-up path{fill:#fff}.dfe-icon__emdash path{fill:#aeb7bd}.dfe-icon__plus,.dfe-icon__minus{fill:#003a69}.dfe-icon--size-25{height:42.5px;width:42.5px}.dfe-icon--size-50{height:51px;width:51px}.dfe-icon--size-75{height:59.5px;width:59.5px}.dfe-icon--size-100{height:68px;width:68px}ol,ul,.dfe-list{font-size:16px;font-size:1;line-height:1.33333;margin-bottom:16px;list-style-type:none;margin-top:0;padding-left:0}@media (min-width: 40.0625em){ol,ul,.dfe-list{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{ol,ul,.dfe-list{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){ol,ul,.dfe-list{margin-bottom:24px}}ol>li,ul>li,.dfe-list>li{margin-bottom:8px}@media (min-width: 40.0625em){ol>li,ul>li,.dfe-list>li{margin-bottom:8px}}ol>li:last-child,ul>li:last-child,.dfe-list>li:last-child{margin-bottom:0}ul,.dfe-list--bullet{list-style-type:disc;padding-left:20px}ol,.dfe-list--number{list-style-type:decimal;padding-left:20px}.dfe-list--tick,.dfe-list--cross{list-style:none;margin-top:0;padding-left:40px;position:relative}.dfe-list--tick svg,.dfe-list--cross svg{left:-4px;margin-top:-5px;position:absolute}h1,.dfe-heading-xl,.govuk-heading-xl{font-size:32px;font-size:2;line-height:1.33333;display:block;font-weight:700;margin-top:0;margin-bottom:40px}@media (min-width: 40.0625em){h1,.dfe-heading-xl,.govuk-heading-xl{font-size:48px;font-size:3;line-height:1.33333}}@media print{h1,.dfe-heading-xl,.govuk-heading-xl{font-size:32pt;line-height:1.15}}@media (min-width: 40.0625em){h1,.dfe-heading-xl,.govuk-heading-xl{margin-bottom:48px}}h2,.dfe-heading-l,.govuk-heading-l{font-size:24px;font-size:1.5;line-height:1.33333;display:block;font-weight:700;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){h2,.dfe-heading-l,.govuk-heading-l{font-size:32px;font-size:2;line-height:1.33333}}@media print{h2,.dfe-heading-l,.govuk-heading-l{font-size:24pt;line-height:1.05}}@media (min-width: 40.0625em){h2,.dfe-heading-l,.govuk-heading-l{margin-bottom:24px}}h3,.dfe-heading-m,.govuk-heading-m{font-size:20px;font-size:1.25;line-height:1.33333;display:block;font-weight:700;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){h3,.dfe-heading-m,.govuk-heading-m{font-size:24px;font-size:1.5;line-height:1.33333}}@media print{h3,.dfe-heading-m,.govuk-heading-m{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){h3,.dfe-heading-m,.govuk-heading-m{margin-bottom:24px}}h4,.dfe-heading-s,.govuk-heading-s{font-size:18px;font-size:1.125;line-height:1.33333;display:block;font-weight:700;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){h4,.dfe-heading-s,.govuk-heading-s{font-size:22px;font-size:1.375;line-height:1.33333}}@media print{h4,.dfe-heading-s,.govuk-heading-s{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){h4,.dfe-heading-s,.govuk-heading-s{margin-bottom:24px}}h5,.dfe-heading-xs{font-size:16px;font-size:1;line-height:1.33333;display:block;font-weight:700;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){h5,.dfe-heading-xs{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{h5,.dfe-heading-xs{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){h5,.dfe-heading-xs{margin-bottom:24px}}h6,.dfe-heading-xxs{font-size:16px;font-size:1;line-height:1.33333;display:block;font-weight:700;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){h6,.dfe-heading-xxs{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{h6,.dfe-heading-xxs{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){h6,.dfe-heading-xxs{margin-bottom:24px}}.dfe-caption-xl{font-weight:400;font-size:24px;font-size:1.5;line-height:1.33333;color:#505a5f;display:block;margin-bottom:4px}@media (min-width: 40.0625em){.dfe-caption-xl{font-size:32px;font-size:2;line-height:1.33333}}@media print{.dfe-caption-xl{font-size:24pt;line-height:1.05}}.dfe-caption-l{font-weight:400;font-size:20px;font-size:1.25;line-height:1.33333;color:#505a5f;display:block;margin-bottom:4px}@media (min-width: 40.0625em){.dfe-caption-l{font-size:24px;font-size:1.5;line-height:1.33333}}@media print{.dfe-caption-l{font-size:18pt;line-height:1.15}}.dfe-caption-m{font-weight:400;font-size:16px;font-size:1;line-height:1.33333;color:#505a5f;display:block}@media (min-width: 40.0625em){.dfe-caption-m{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{.dfe-caption-m{font-size:14pt;line-height:1.15}}.dfe-caption--bottom{margin-bottom:0;margin-top:4px}.dfe-body-l{font-size:20px;font-size:1.25;line-height:1.33333;display:block;margin-top:0;margin-bottom:24px}@media (min-width: 40.0625em){.dfe-body-l{font-size:24px;font-size:1.5;line-height:1.33333}}@media print{.dfe-body-l{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){.dfe-body-l{margin-bottom:32px}}address,p,.dfe-body-m{font-size:16px;font-size:1;line-height:1.33333;display:block;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){address,p,.dfe-body-m{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{address,p,.dfe-body-m{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){address,p,.dfe-body-m{margin-bottom:24px}}p,.dfe-body-m{color:inherit}.dfe-body-s{font-size:14px;font-size:.875;line-height:1.33333;display:block;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){.dfe-body-s{font-size:16px;font-size:1;line-height:1.33333}}@media print{.dfe-body-s{font-size:14pt;line-height:1.2}}@media (min-width: 40.0625em){.dfe-body-s{margin-bottom:24px}}address{font-style:normal}.dfe-lede-text{font-weight:400;font-size:20px;font-size:1.25;line-height:1.33333;margin-bottom:40px}@media (min-width: 40.0625em){.dfe-lede-text{font-size:24px;font-size:1.5;line-height:1.33333}}@media print{.dfe-lede-text{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){.dfe-lede-text{margin-bottom:48px}}.dfe-lede-text p,.dfe-lede-text ul{font-weight:400;font-size:20px;font-size:1.25;line-height:1.33333}@media (min-width: 40.0625em){.dfe-lede-text p,.dfe-lede-text ul{font-size:24px;font-size:1.5;line-height:1.33333}}@media print{.dfe-lede-text p,.dfe-lede-text ul{font-size:18pt;line-height:1.15}}.dfe-lede-text--small{font-weight:400;font-size:16px;font-size:1;line-height:1.33333;margin-bottom:24px}@media (min-width: 40.0625em){.dfe-lede-text--small{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{.dfe-lede-text--small{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.dfe-lede-text--small{margin-bottom:32px}}h1+.dfe-lede-text,h1+.dfe-lede-text--small{margin-top:-8px}.dfe-body-l+h2,.dfe-body-l+.dfe-heading-l,.dfe-body-l+.govuk-heading-l{padding-top:4px}@media (min-width: 40.0625em){.dfe-body-l+h2,.dfe-body-l+.dfe-heading-l,.dfe-body-l+.govuk-heading-l{padding-top:8px}}p+h2,.dfe-body-m+h2,address+h2,p+.dfe-heading-l,.dfe-body-m+.dfe-heading-l,address+.dfe-heading-l,p+.govuk-heading-l,.dfe-body-m+.govuk-heading-l,address+.govuk-heading-l,.dfe-body-s+h2,.dfe-body-s+.dfe-heading-l,.dfe-body-s+.govuk-heading-l,.dfe-list+h2,ul+h2,ol+h2,.dfe-list+.dfe-heading-l,ul+.dfe-heading-l,ol+.dfe-heading-l,.dfe-list+.govuk-heading-l,ul+.govuk-heading-l,ol+.govuk-heading-l{padding-top:16px}@media (min-width: 40.0625em){p+h2,.dfe-body-m+h2,address+h2,p+.dfe-heading-l,.dfe-body-m+.dfe-heading-l,address+.dfe-heading-l,p+.govuk-heading-l,.dfe-body-m+.govuk-heading-l,address+.govuk-heading-l,.dfe-body-s+h2,.dfe-body-s+.dfe-heading-l,.dfe-body-s+.govuk-heading-l,.dfe-list+h2,ul+h2,ol+h2,.dfe-list+.dfe-heading-l,ul+.dfe-heading-l,ol+.dfe-heading-l,.dfe-list+.govuk-heading-l,ul+.govuk-heading-l,ol+.govuk-heading-l{padding-top:24px}}p+h3,.dfe-body-m+h3,address+h3,p+.dfe-heading-m,.dfe-body-m+.dfe-heading-m,address+.dfe-heading-m,p+.govuk-heading-m,.dfe-body-m+.govuk-heading-m,address+.govuk-heading-m,.dfe-body-s+h3,.dfe-body-s+.dfe-heading-m,.dfe-body-s+.govuk-heading-m,.dfe-list+h3,ul+h3,ol+h3,.dfe-list+.dfe-heading-m,ul+.dfe-heading-m,ol+.dfe-heading-m,.dfe-list+.govuk-heading-m,ul+.govuk-heading-m,ol+.govuk-heading-m,p+h4,.dfe-body-m+h4,address+h4,p+.dfe-heading-s,.dfe-body-m+.dfe-heading-s,address+.dfe-heading-s,p+.govuk-heading-s,.dfe-body-m+.govuk-heading-s,address+.govuk-heading-s,.dfe-body-s+h4,.dfe-body-s+.dfe-heading-s,.dfe-body-s+.govuk-heading-s,.dfe-list+h4,ul+h4,ol+h4,.dfe-list+.dfe-heading-s,ul+.dfe-heading-s,ol+.dfe-heading-s,.dfe-list+.govuk-heading-s,ul+.govuk-heading-s,ol+.govuk-heading-s{padding-top:4px}@media (min-width: 40.0625em){p+h3,.dfe-body-m+h3,address+h3,p+.dfe-heading-m,.dfe-body-m+.dfe-heading-m,address+.dfe-heading-m,p+.govuk-heading-m,.dfe-body-m+.govuk-heading-m,address+.govuk-heading-m,.dfe-body-s+h3,.dfe-body-s+.dfe-heading-m,.dfe-body-s+.govuk-heading-m,.dfe-list+h3,ul+h3,ol+h3,.dfe-list+.dfe-heading-m,ul+.dfe-heading-m,ol+.dfe-heading-m,.dfe-list+.govuk-heading-m,ul+.govuk-heading-m,ol+.govuk-heading-m,p+h4,.dfe-body-m+h4,address+h4,p+.dfe-heading-s,.dfe-body-m+.dfe-heading-s,address+.dfe-heading-s,p+.govuk-heading-s,.dfe-body-m+.govuk-heading-s,address+.govuk-heading-s,.dfe-body-s+h4,.dfe-body-s+.dfe-heading-s,.dfe-body-s+.govuk-heading-s,.dfe-list+h4,ul+h4,ol+h4,.dfe-list+.dfe-heading-s,ul+.dfe-heading-s,ol+.dfe-heading-s,.dfe-list+.govuk-heading-s,ul+.govuk-heading-s,ol+.govuk-heading-s{padding-top:8px}}.dfe-lede-text+h2,.dfe-lede-text+.dfe-heading-l,.dfe-lede-text+.govuk-heading-l{padding-top:0}strong,b{font-weight:700}.dfe-u-font-size-64{font-size:48px!important;font-size:3!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-64{font-size:64px!important;font-size:4!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-64{font-size:53pt!important;line-height:1.1!important}}.dfe-u-font-size-48{font-size:32px!important;font-size:2!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-48{font-size:48px!important;font-size:3!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-48{font-size:32pt!important;line-height:1.15!important}}.dfe-u-font-size-32{font-size:24px!important;font-size:1.5!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-32{font-size:32px!important;font-size:2!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-32{font-size:24pt!important;line-height:1.05!important}}.dfe-u-font-size-24{font-size:20px!important;font-size:1.25!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-24{font-size:24px!important;font-size:1.5!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-24{font-size:18pt!important;line-height:1.15!important}}.dfe-u-font-size-22{font-size:18px!important;font-size:1.125!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-22{font-size:22px!important;font-size:1.375!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-22{font-size:18pt!important;line-height:1.15!important}}.dfe-u-font-size-19{font-size:16px!important;font-size:1!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-19{font-size:19px!important;font-size:1.1875!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-19{font-size:14pt!important;line-height:1.15!important}}.dfe-u-font-size-16{font-size:14px!important;font-size:.875!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-16{font-size:16px!important;font-size:1!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-16{font-size:14pt!important;line-height:1.2!important}}.dfe-u-font-size-14{font-size:12px!important;font-size:.75!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-14{font-size:14px!important;font-size:.875!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-14{font-size:12pt!important;line-height:1.2!important}}.dfe-u-font-weight-normal{font-weight:400!important}.dfe-u-font-weight-bold{font-weight:700!important}.dfe-u-secondary-text-color{color:#505a5f!important}p,.govuk-body{max-width:44em}.dfe-header{background-color:#003a69;border-bottom:10px solid #347ca9}.dfe-header:after{clear:both;content:"";display:block}.dfe-header__container{padding:20px 0}.dfe-header__container:after{clear:both;content:"";display:block}@media (max-width: 40.0525em){.dfe-header__container{margin:0;padding:16px}}.dfe-header__logo{float:left}@media (max-width: 40.0525em){.dfe-header__logo{position:relative;z-index:1}}.dfe-header__logo .dfe-logo__background{fill:#fff}@media print{.dfe-header__logo .dfe-logo__background{fill:#003a69}}.dfe-header__logo .dfe-logo__text{fill:#003a69}@media print{.dfe-header__logo .dfe-logo__text{fill:#fff}}@media (min-width: 40.0625em){.dfe-header__logo{padding-left:0}}.dfe-header__logo .dfe-logo{height:90px;width:153px;border:0}@media (max-width: 48.0525em){.dfe-header__logo{max-width:60%}}@media (max-width: 450px){.dfe-header__logo{max-width:50%}}.dfe-header__link{height:90px;width:153px;display:block}.dfe-header__link .dfe-logo-hover{display:none}.dfe-header__link .dfe-logo{width:136px!important;height:80px!important}.dfe-header__link:focus .dfe-logo-hover{display:none}.dfe-header__link:focus .dfe-logo{display:none}.dfe-header__link:focus .dfe-logo+.dfe-logo-hover{display:inline-block;width:136px!important;height:80px!important}.dfe-header__link:focus{box-shadow:none}.dfe-header__link:focus .dfe-logo{box-shadow:0 0 0 4px #fd0,0 4px 0 4px #0b0c0c}@media print{.dfe-header__link:after{content:""}}.dfe-header__link:hover,.dfe-header__link:active,.dfe-header__link:focus{background-color:transparent}.dfe-header__content{position:relative}.dfe-header__content:after{clear:both;content:"";display:block}@media print{.dfe-header__content{display:none}}.dfe-header__content.js-show{border-bottom:4px solid #f0f4f5}@media (min-width: 40.0625em){.dfe-header__content{float:right}.dfe-header__content.js-show{border-bottom:0}}.dfe-header__action-links{display:flex;gap:20px;justify-content:flex-end;margin-bottom:10px}.dfe-header__action-links li{list-style:none;color:#fff;font-size:16px}.dfe-header__search{position:relative;text-align:right}.dfe-header__search:after{clear:both;content:"";display:block}@media (min-width: 40.0625em){.dfe-header__search{float:left;margin-left:8px}}.dfe-header__search-toggle{background-color:transparent;border:1px solid #ffffff;border-radius:4px;color:#fff;cursor:pointer;min-height:40px;padding:4px 8px 0;position:absolute;right:0;top:0}.dfe-header__search-toggle::-moz-focus-inner{border:0}.dfe-header__search-toggle:hover{background-color:#002644;border-color:#f0f4f5;box-shadow:none}.dfe-header__search-toggle:focus{border:1px solid #ffdd00!important}.dfe-header__search-toggle:active,.dfe-header__search-toggle.is-active{background-color:#001d35;border-color:#f0f4f5;color:#f0f4f5}.dfe-header__search-toggle .dfe-icon__search{fill:#fff;height:21px;width:21px}.dfe-header__search-toggle:focus{background-color:#fd0;border:0;box-shadow:0 4px #0b0c0c;color:#0b0c0c;outline:4px solid transparent;outline-offset:4px;box-shadow:0 0 0 2px #fd0,0 4px 0 2px #0b0c0c}.dfe-header__search-toggle:focus .dfe-icon{fill:#0b0c0c}@media (min-width: 40.0625em){.dfe-header__search-toggle{display:none}}.dfe-header__search-form{height:100%;overflow:visible}@media (max-width: 40.0525em){.dfe-header__search-form{background-color:#fff;display:flex;padding:16px;width:100%}}@media (max-width: 40.0525em){.dfe-header__search-wrap{display:none}.dfe-header__search-wrap.js-show{clear:both;display:flex;margin-bottom:-20px;margin-left:-16px;margin-right:-16px;padding-top:16px;text-align:left}}@media (min-width: 40.0625em){.dfe-header__search-wrap{display:block;line-height:0}}.dfe-search__input{-webkit-appearance:listbox;border-radius:4px 0 0 4px;padding:0 16px}.dfe-search__input:focus{border:4px solid #0b0c0c;box-shadow:0 0 0 4px #fd0;outline:4px solid transparent;outline-offset:4px;padding:0 9px}.dfe-search__input::placeholder{color:#505a5f;font-size:16px}.dfe-search__input:-ms-input-placeholder{color:#505a5f;font-size:16px}.dfe-search__input::-webkit-input-placeholder{color:#505a5f;font-size:16px}@media (max-width: 40.0525em){.dfe-search__input{border-bottom:1px solid #aeb7bd;border-left:1px solid #aeb7bd;border-right:0;border-top:1px solid #aeb7bd;flex-grow:2;-ms-flex-positive:2;font-size:inherit;height:52px;margin:0;outline:none;width:100%;z-index:1}}@media (min-width: 40.0625em){.dfe-search__input{border:1px solid #ffffff;font-size:16px;height:40px;width:200px}}@media (min-width: 48.0625em){.dfe-search__input{width:235px}}.dfe-search__submit{border:0;border-radius:0 4px 4px 0;float:right;font-size:inherit;line-height:inherit;outline:none;padding:0}.dfe-search__submit::-moz-focus-inner{border:0}.dfe-search__submit:hover{cursor:pointer}@media (max-width: 40.0525em){.dfe-search__submit{background-color:#003a69;height:52px;margin:0;padding:8px 8px 0}.dfe-search__submit .dfe-icon__search{fill:#fff;height:38px;width:38px}.dfe-search__submit:hover{background-color:#002644}.dfe-search__submit:focus{background-color:#fd0;box-shadow:0 -4px #fd0,0 4px #0b0c0c;outline:4px solid transparent;outline-offset:4px}.dfe-search__submit:focus:hover{background-color:#fd0}.dfe-search__submit:focus:hover .dfe-icon{fill:#0b0c0c}.dfe-search__submit:focus .dfe-icon{fill:#0b0c0c}}@media (min-width: 40.0625em){.dfe-search__submit{background-color:#f0f4f5;display:block;height:40px;width:44px}.dfe-search__submit .dfe-icon__search{height:27px;width:27px}.dfe-search__submit:hover{background-color:#002644;border:1px solid #ffffff}.dfe-search__submit:hover .dfe-icon__search{fill:#fff}.dfe-search__submit:focus{background-color:#fd0;border:0;box-shadow:0 4px #0b0c0c;color:#0b0c0c;outline:4px solid transparent;outline-offset:4px;box-shadow:0 -2px #fd0,0 4px #0b0c0c}.dfe-search__submit:focus .dfe-icon{fill:#0b0c0c}.dfe-search__submit:active{background-color:#001d35;border:0}.dfe-search__submit:active .dfe-icon__search{fill:#fff}}@media (max-width: 40.0525em){.dfe-search__close{background-color:transparent;border:0;cursor:pointer;height:40px;padding:0;width:40px;margin-left:8px;margin-right:-8px;margin-top:8px}.dfe-search__close .dfe-icon__close{fill:#003a69;height:40px;width:40px}.dfe-search__close::-moz-focus-inner{border:0}.dfe-search__close:hover .dfe-icon__close{fill:#40484c}.dfe-search__close:focus{background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;color:#0b0c0c;outline:4px solid transparent;text-decoration:none}.dfe-search__close:focus .dfe-icon__close{fill:#0b0c0c}}@media (min-width: 40.0625em){.dfe-search__close{display:none}}.dfe-search__input--withdropdown{border-bottom-left-radius:0}.dfe-search__submit--withdropdown{border-bottom-right-radius:0}.dfe-header__menu{float:right}@media (min-width: 40.0625em){.dfe-header__menu{float:left}}.dfe-header__menu-toggle{background-color:transparent;border:1px solid #ffffff;border-radius:4px;color:#fff;cursor:pointer;display:block;font-size:16px;font-weight:400;line-height:24px;margin-right:0;padding:7px 16px;position:relative;text-decoration:none;z-index:1}.dfe-header__menu-toggle::-moz-focus-inner{border:0}.dfe-header__menu-toggle:hover{background-color:#002644;border-color:#f0f4f5;box-shadow:none}.dfe-header__menu-toggle:focus{border:1px solid #ffdd00!important}.dfe-header__menu-toggle:active,.dfe-header__menu-toggle.is-active{background-color:#001d35;border-color:#f0f4f5;color:#f0f4f5}@media (max-width: 40.0525em){.dfe-header__menu-toggle{right:48px}}@media (min-width: 40.0625em) and (max-width: 61.865em){.dfe-header__menu-toggle{margin-top:0}}@media (min-width: 61.875em){.dfe-header__menu-toggle{display:none}}.dfe-header__menu-toggle:focus{background-color:#fd0;border:0;box-shadow:0 4px #0b0c0c;color:#0b0c0c;outline:4px solid transparent;outline-offset:4px;box-shadow:0 0 0 2px #fd0,0 4px 0 2px #0b0c0c}.dfe-header__menu-toggle:focus .dfe-icon{fill:#0b0c0c}@media (max-width: 40.0525em){.dfe-header__menu--only .dfe-header__menu-toggle{position:relative;right:auto;top:auto}}.dfe-header__navigation{background-color:#fff;clear:both;display:none;overflow:hidden}@media print{.dfe-header__navigation{display:none}}.dfe-header__navigation.js-show{display:block}@media (max-width: 61.865em){.dfe-header__navigation.js-show{border-bottom:4px solid #f0f4f5;border-top:4px solid #f0f4f5}.dfe-header__navigation.js-show .dfe-width-container{margin:0 16px}}@media (max-width: 48.0525em){.dfe-header__navigation.js-show .dfe-width-container{margin:0}}@media (min-width: 61.875em){.dfe-header__navigation{background-color:#003a69;display:block;margin:0 auto;max-width:1264px}}.dfe-header__navigation-title{font-weight:700;margin-bottom:0;padding:16px;position:relative}@media (min-width: 61.875em){.dfe-header__navigation-title{display:none}}.dfe-header__navigation-close{background-color:transparent;border:0;cursor:pointer;height:40px;padding:0;width:40px;overflow:hidden;position:absolute;right:8px;top:8px;white-space:nowrap}.dfe-header__navigation-close .dfe-icon__close{fill:#003a69;height:40px;width:40px}.dfe-header__navigation-close::-moz-focus-inner{border:0}.dfe-header__navigation-close:hover .dfe-icon__close{fill:#40484c}.dfe-header__navigation-close:focus{background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;color:#0b0c0c;outline:4px solid transparent;text-decoration:none}.dfe-header__navigation-close:focus .dfe-icon__close{fill:#0b0c0c}.dfe-header__navigation-list{list-style:none;margin:0;padding-left:0}@media (min-width: 61.875em){.dfe-header__navigation-list{border-top:1px solid rgba(255,255,255,.2);display:flex;justify-content:flex-start;padding:0;width:100%}}.dfe-header__navigation-item{border-top:1px solid #f0f4f5;margin-bottom:0;position:relative}.dfe-header__navigation-item.dfe-header__navigation-item--current{box-shadow:inset 0 52px #347ca9!important}.dfe-header__navigation-item.dfe-header__navigation-item--current a{font-weight:700;color:#fff}@media (min-width: 61.875em){.dfe-header__navigation-item{border-top:0;margin:0;text-align:center}.dfe-header__navigation-item a{color:#fff}.dfe-header__navigation-item .dfe-icon__chevron-right{display:none}}.dfe-header__navigation-link{font-weight:400;font-size:14px;font-size:.875;line-height:1.33333;border-bottom:4px solid transparent;border-top:4px solid transparent;color:#003a69;display:block;padding:12px 15px;text-decoration:none}@media (min-width: 40.0625em){.dfe-header__navigation-link{font-size:16px;font-size:1;line-height:1.33333}}@media print{.dfe-header__navigation-link{font-size:14pt;line-height:1.2}}@media (min-width: 61.875em){.dfe-header__navigation-link{color:#fff;line-height:normal}}.dfe-header__navigation-link .dfe-icon__chevron-right{fill:#aeb7bd;position:absolute;right:4px;top:11px}.dfe-header__navigation-link:visited{color:#003a69}@media (min-width: 61.875em){.dfe-header__navigation-link:visited{color:#fff}}.dfe-header__navigation-link:hover{box-shadow:none;color:#003a69;text-decoration:underline}@media (min-width: 61.875em){.dfe-header__navigation-link:hover{color:#fff}}.dfe-header__navigation-link:hover .dfe-icon__chevron-right{fill:#003a69}.dfe-header__navigation-link:active,.dfe-header__navigation-link:focus{background-color:#fd0;border-bottom:4px solid #0b0c0c;box-shadow:none;color:#0b0c0c;outline:4px solid transparent;outline-offset:4px;text-decoration:none}.dfe-header__navigation-link:active:hover,.dfe-header__navigation-link:focus:hover{background-color:#fd0;color:#0b0c0c}.dfe-header__navigation-link:active:hover .dfe-icon__chevron-right,.dfe-header__navigation-link:focus:hover .dfe-icon__chevron-right{fill:#0b0c0c}.dfe-header__navigation-link:active:visited,.dfe-header__navigation-link:focus:visited{background-color:#fd0;color:#0b0c0c}@media (min-width: 61.875em){.dfe-header__navigation-item--for-mobile{display:none}}@media (min-width: 61.875em){.dfe-header__navigation-list--small{justify-content:flex-start}}.dfe-header__transactional-service-name{float:left;padding-left:16px;padding-top:3px}@media (max-width: 61.865em){.dfe-header__transactional-service-name{padding-left:0;padding-top:8px;width:100%}}.dfe-header__transactional-service-name--link{color:#fff;font-weight:400;font-size:16px;font-size:1;line-height:1.33333;text-decoration:none}.dfe-header__transactional-service-name--link:visited{color:#fff}.dfe-header__transactional-service-name--link:hover{color:#fff;text-decoration:none}.dfe-header__transactional-service-name--link:focus{color:#0b0c0c;outline:4px solid transparent;outline-offset:4px;text-decoration:none}.dfe-header__transactional-service-name--link:active{color:#001d35}@media (min-width: 40.0625em){.dfe-header__transactional-service-name--link{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{.dfe-header__transactional-service-name--link{font-size:14pt;line-height:1.15}}.dfe-header__transactional-service-name--link:hover{text-decoration:underline}.dfe-header--transactional .dfe-header__link{height:60px;width:100px;display:block}.dfe-header--transactional .dfe-logo{height:60px;width:100px}.dfe-header--transactional .dfe-header__transactional-service-name{float:left}.dfe-header__link--service{height:auto;margin-top:-4px;text-decoration:none;width:auto}@media (min-width: 61.875em){.dfe-header__link--service{align-items:center;display:flex;-ms-flex-align:center;margin-bottom:0;width:auto}.dfe-header__link--service .dfe-header__service-name{margin-top:61px;font-weight:400;font-size:18px;font-size:1.125;line-height:1.33333;display:block;font-weight:500;letter-spacing:-.2px;line-height:23px;margin-left:12px}}@media (min-width: 61.875em) and (min-width: 40.0625em){.dfe-header__link--service .dfe-header__service-name{font-size:22px;font-size:1.375;line-height:1.33333}}@media print and (min-width: 61.875em){.dfe-header__link--service .dfe-header__service-name{font-size:18pt;line-height:1.15}}.dfe-header__link--service:hover{background:none}.dfe-header__link--service:hover .dfe-header__service-name{text-decoration:underline}.dfe-header__link--service:focus{background:#ffdd00;box-shadow:0 0 0 4px #fd0,0 4px 0 4px #0b0c0c}.dfe-header__link--service:focus .dfe-header__service-name{color:#0b0c0c;text-decoration:none}.dfe-header__link--service:focus .dfe-logo{box-shadow:none}.dfe-header__service-name{font-weight:400;font-size:18px;font-size:1.125;line-height:1.33333;color:#fff;display:block;padding-left:0;padding-right:0}@media (min-width: 40.0625em){.dfe-header__service-name{font-size:22px;font-size:1.375;line-height:1.33333}}@media print{.dfe-header__service-name{font-size:18pt;line-height:1.15}}@media (min-width: 61.875em){.dfe-header__service-name{padding-left:16px}}@media (max-width: 61.865em){.dfe-header__service-name{max-width:220px}}.dfe-header__logo--only{max-width:100%}@media (min-width: 40.0625em){.dfe-header__logo--only .dfe-header__link--service{align-items:center;display:flex;-ms-flex-align:center;margin-bottom:0;width:auto}.dfe-header__logo--only .dfe-header__service-name{padding-left:16px}}.dfeuk-header__username{padding-bottom:20px;margin:0;text-align:right;color:#fff}.dfeuk-header__username a{color:#fff;text-decoration:none}.dfeuk-header__username a:hover{text-decoration:underline}*{font-family:BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif!important}.logo{display:block;max-height:32px;max-width:100%}.govuk-table{margin-top:30px;margin-bottom:30px}@media (min-width: 40.0625em){.govuk-button--start{margin-bottom:0!important}}a.govuk-home-link{position:relative;display:inline-block;margin-top:15px;margin-bottom:15px}.dfe-section-card{padding:16px;margin-bottom:20px;flex:1;background-color:#f3f2f1}.dfe-section-card__container{display:flex;width:100}@media (max-width: 40.0525em){.dfe-section-card__container{display:grid;width:100}}.app-related-items{border-top:2px solid #347ca9;padding-top:10px}.app-related-items .govuk-list>li{margin-bottom:10px}.app-section-beta{padding:30px 0}.app-section-beta__blue{background-color:#347ca9}.body-header-font{color:#fff}.govuk-header{background-color:#003a69}.govuk-header__container{position:relative;margin-bottom:-10px;padding-top:25px;padding-bottom:15px;border-bottom:10px solid #347ca9}.govuk-header__product-name,.govuk-header__logotype-text{line-height:2.5rem!important;font-size:1.2rem}.app-header .govuk-header__logo{width:85%}.app-header .govuk-header__content{width:0}.govuk-header__logotype-crown-fallback-image{height:45px;width:45px}.govuk-header__logotype-text:after{content:"|"}.govuk-header__logotype{margin-right:0}.govuk-header__navigation-item--active a:link,.govuk-header__navigation-item--active a:hover,.govuk-header__navigation-item--active a:visited{color:#f3f2f1;text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:.1em}.edf-hero-banner{margin-top:-10px!important;margin-bottom:40px}@media (max-width: 40.0625em){.govuk-header__product-name{max-width:80%;line-height:1.2rem!important;font-size:1rem}.govuk-header__logotype-text{min-width:100%;line-height:2.2rem!important;font-size:1rem}.edf-hero-banner{margin-top:0!important;margin-bottom:20px}}strong.app-task-list__task-name>p.govuk-error-message{margin-bottom:0}rich-text>p.govuk-body{margin-top:15px;margin-bottom:15px}@media (min-width: 40.0625em){.govuk-body,.govuk-body-m{margin-bottom:10px}h2,.dfe-heading-l,.govuk-heading-l{margin-top:45px}h3,.dfe-heading-s,.govuk-heading-s,.dfe-headin-m{padding-top:10px;margin-top:35px}rich-text>p.govuk-body{margin-top:20px;margin-bottom:20px}}.app-task-list{list-style-type:none;padding-left:0;margin-top:0;margin-bottom:0}@media (min-width: 40.0625em){.app-task-list{min-width:550px}}.app-task-list__section{display:table;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:18px;font-size:1.125rem;line-height:1.1111111111}@media print{.app-task-list__section{font-family:sans-serif}}@media (min-width: 40.0625em){.app-task-list__section{font-size:24px;font-size:1.5rem;line-height:1.25}}@media print{.app-task-list__section{font-size:18pt;line-height:1.15}}.app-task-list__section-number{display:table-cell}@media (min-width: 40.0625em){.app-task-list__section-number{min-width:30px;padding-right:0}}.app-task-list__items{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;margin-bottom:40px;list-style:none;padding-left:0}@media print{.app-task-list__items{font-family:sans-serif}}@media (min-width: 40.0625em){.app-task-list__items{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.app-task-list__items{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.app-task-list__items{margin-bottom:60px}}.app-task-list__item{border-bottom:1px solid #b1b4b6;margin-bottom:0!important;padding-top:10px;padding-bottom:10px}.app-task-list__item:after{content:"";display:block;clear:both}.app-task-list__item:first-child{border-top:1px solid #b1b4b6}.app-task-list__task-name{display:block}@media (min-width: 28.125em){.app-task-list__task-name{float:left}}.app-task-list__tag,.app-task-list__task-completed{margin-top:10px;margin-bottom:5px}@media (min-width: 28.125em){.app-task-list__tag,.app-task-list__task-completed{float:right;margin-top:0;margin-bottom:0}}#checkYourAnswers-page .spacer{content:" "!important;display:block!important}@media (min-width: 40.0625em){#checkYourAnswers-page .govuk-summary-list__key{width:100%}#checkYourAnswers-page .govuk-summary-list__actions{width:0}}#checkYourAnswers-page dl.govuk-summary-list.govuk-\!-margin-bottom-9{border-top:1px solid #b1b4b6}#checkYourAnswers-page h3.govuk-body-l{color:gray;margin-bottom:5px}#checkYourAnswers-page .govuk-heading-xl{font-size:2.5rem;margin-bottom:25px} +@charset "UTF-8";:root{--govuk-frontend-version: "5.1.0";--govuk-frontend-breakpoint-mobile: 20rem;--govuk-frontend-breakpoint-tablet: 40.0625rem;--govuk-frontend-breakpoint-desktop: 48.0625rem}.govuk-link{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em}@font-face{font-family:GDS Transport;font-style:normal;font-weight:400;src:url(/assets/fonts/light-94a07e06a1-v2.woff2) format("woff2"),url(/assets/fonts/light-f591b13f7d-v2.woff) format("woff");font-display:fallback}@font-face{font-family:GDS Transport;font-style:normal;font-weight:700;src:url(/assets/fonts/bold-b542beb274-v2.woff2) format("woff2"),url(/assets/fonts/bold-affa96571d-v2.woff) format("woff");font-display:fallback}@media print{.govuk-link{font-family:sans-serif}}.govuk-link:hover{text-decoration-thickness:max(3px,.1875rem,.12em);-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;text-decoration-skip:none}.govuk-link:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-link:link{color:#1d70b8}.govuk-link:visited{color:#4c2c92}.govuk-link:hover{color:#003078}.govuk-link:active{color:#0b0c0c}.govuk-link:focus{color:#0b0c0c}@media print{[href^="/"].govuk-link:after,[href^="http://"].govuk-link:after,[href^="https://"].govuk-link:after{content:" (" attr(href) ")";font-size:90%;word-wrap:break-word}}.govuk-link--muted:link,.govuk-link--muted:visited{color:#505a5f}.govuk-link--muted:hover,.govuk-link--muted:active{color:#0b0c0c}.govuk-link--muted:focus{color:#0b0c0c}.govuk-link--text-colour:link,.govuk-link--text-colour:visited{color:#0b0c0c}@media print{.govuk-link--text-colour:link,.govuk-link--text-colour:visited{color:#000}}.govuk-link--text-colour:hover{color:rgba(11,12,12,.99)}.govuk-link--text-colour:active,.govuk-link--text-colour:focus{color:#0b0c0c}@media print{.govuk-link--text-colour:active,.govuk-link--text-colour:focus{color:#000}}.govuk-link--inverse:link,.govuk-link--inverse:visited{color:#fff}.govuk-link--inverse:hover,.govuk-link--inverse:active{color:rgba(255,255,255,.99)}.govuk-link--inverse:focus{color:#0b0c0c}.govuk-link--no-underline:not(:hover):not(:active){text-decoration:none}.govuk-link--no-visited-state:link,.govuk-link--no-visited-state:visited{color:#1d70b8}.govuk-link--no-visited-state:hover{color:#003078}.govuk-link--no-visited-state:active{color:#0b0c0c}.govuk-link--no-visited-state:focus{color:#0b0c0c}.govuk-link-image{display:inline-block;line-height:0;text-decoration:none}.govuk-link-image:focus{outline:3px solid transparent;box-shadow:0 0 0 4px #fd0,0 0 0 8px #0b0c0c}.govuk-list{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;color:#0b0c0c;margin-top:0;margin-bottom:15px;padding-left:0;list-style-type:none}@media print{.govuk-list{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-list{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-list{font-size:14pt;line-height:1.15}}@media print{.govuk-list{color:#000}}@media (min-width: 40.0625em){.govuk-list{margin-bottom:20px}}.govuk-list .govuk-list{margin-top:10px}.govuk-list>li{margin-bottom:5px}.govuk-list--bullet{padding-left:20px;list-style-type:disc}.govuk-list--number{padding-left:20px;list-style-type:decimal}.govuk-list--bullet>li,.govuk-list--number>li{margin-bottom:0}@media (min-width: 40.0625em){.govuk-list--bullet>li,.govuk-list--number>li{margin-bottom:5px}}.govuk-list--spaced>li{margin-bottom:10px}@media (min-width: 40.0625em){.govuk-list--spaced>li{margin-bottom:15px}}.govuk-heading-xl{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:2rem;line-height:1.09375;display:block;margin-top:0;margin-bottom:30px}@media print{.govuk-heading-xl{color:#000}}@media print{.govuk-heading-xl{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-heading-xl{font-size:3rem;line-height:1.0416666667}}@media print{.govuk-heading-xl{font-size:32pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-heading-xl{margin-bottom:50px}}.govuk-heading-l{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:1.5rem;line-height:1.0416666667;display:block;margin-top:0;margin-bottom:20px}@media print{.govuk-heading-l{color:#000}}@media print{.govuk-heading-l{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-heading-l{font-size:2.25rem;line-height:1.1111111111}}@media print{.govuk-heading-l{font-size:24pt;line-height:1.05}}@media (min-width: 40.0625em){.govuk-heading-l{margin-bottom:30px}}.govuk-heading-m{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:1.125rem;line-height:1.1111111111;display:block;margin-top:0;margin-bottom:15px}@media print{.govuk-heading-m{color:#000}}@media print{.govuk-heading-m{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-heading-m{font-size:1.5rem;line-height:1.25}}@media print{.govuk-heading-m{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-heading-m{margin-bottom:20px}}.govuk-heading-s{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:1rem;line-height:1.25;display:block;margin-top:0;margin-bottom:15px}@media print{.govuk-heading-s{color:#000}}@media print{.govuk-heading-s{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-heading-s{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-heading-s{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-heading-s{margin-bottom:20px}}.govuk-caption-xl{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1.125rem;line-height:1.1111111111;display:block;margin-bottom:5px;color:#505a5f}@media print{.govuk-caption-xl{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-caption-xl{font-size:1.6875rem;line-height:1.1111111111}}@media print{.govuk-caption-xl{font-size:18pt;line-height:1.15}}.govuk-caption-l{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1.125rem;line-height:1.1111111111;display:block;margin-bottom:5px;color:#505a5f}@media print{.govuk-caption-l{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-caption-l{font-size:1.5rem;line-height:1.25}}@media print{.govuk-caption-l{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-caption-l{margin-bottom:0}}.govuk-caption-m{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;display:block;color:#505a5f}@media print{.govuk-caption-m{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-caption-m{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-caption-m{font-size:14pt;line-height:1.15}}.govuk-body-lead,.govuk-body-l{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1.125rem;line-height:1.1111111111;margin-top:0;margin-bottom:20px}@media print{.govuk-body-lead,.govuk-body-l{color:#000}}@media print{.govuk-body-lead,.govuk-body-l{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-body-lead,.govuk-body-l{font-size:1.5rem;line-height:1.25}}@media print{.govuk-body-lead,.govuk-body-l{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-body-lead,.govuk-body-l{margin-bottom:30px}}.govuk-body,.govuk-body-m{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;margin-top:0;margin-bottom:15px}@media print{.govuk-body,.govuk-body-m{color:#000}}@media print{.govuk-body,.govuk-body-m{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-body,.govuk-body-m{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-body,.govuk-body-m{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-body,.govuk-body-m{margin-bottom:20px}}.govuk-body-s{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:.875rem;line-height:1.1428571429;margin-top:0;margin-bottom:15px}@media print{.govuk-body-s{color:#000}}@media print{.govuk-body-s{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-body-s{font-size:1rem;line-height:1.25}}@media print{.govuk-body-s{font-size:14pt;line-height:1.2}}@media (min-width: 40.0625em){.govuk-body-s{margin-bottom:20px}}.govuk-body-xs{color:#0b0c0c;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:.75rem;line-height:1.25;margin-top:0;margin-bottom:15px}@media print{.govuk-body-xs{color:#000}}@media print{.govuk-body-xs{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-body-xs{font-size:.875rem;line-height:1.4285714286}}@media print{.govuk-body-xs{font-size:12pt;line-height:1.2}}@media (min-width: 40.0625em){.govuk-body-xs{margin-bottom:20px}}.govuk-body-l+.govuk-heading-l,.govuk-body-lead+.govuk-heading-l{padding-top:5px}@media (min-width: 40.0625em){.govuk-body-l+.govuk-heading-l,.govuk-body-lead+.govuk-heading-l{padding-top:10px}}.govuk-body-m+.govuk-heading-l,.govuk-body+.govuk-heading-l,.govuk-body-s+.govuk-heading-l,.govuk-list+.govuk-heading-l{padding-top:15px}@media (min-width: 40.0625em){.govuk-body-m+.govuk-heading-l,.govuk-body+.govuk-heading-l,.govuk-body-s+.govuk-heading-l,.govuk-list+.govuk-heading-l{padding-top:20px}}.govuk-body-m+.govuk-heading-m,.govuk-body+.govuk-heading-m,.govuk-body-s+.govuk-heading-m,.govuk-list+.govuk-heading-m,.govuk-body-m+.govuk-heading-s,.govuk-body+.govuk-heading-s,.govuk-body-s+.govuk-heading-s,.govuk-list+.govuk-heading-s{padding-top:5px}@media (min-width: 40.0625em){.govuk-body-m+.govuk-heading-m,.govuk-body+.govuk-heading-m,.govuk-body-s+.govuk-heading-m,.govuk-list+.govuk-heading-m,.govuk-body-m+.govuk-heading-s,.govuk-body+.govuk-heading-s,.govuk-body-s+.govuk-heading-s,.govuk-list+.govuk-heading-s{padding-top:10px}}.govuk-section-break{margin:0;border:0}.govuk-section-break--xl{margin-top:30px;margin-bottom:30px}@media (min-width: 40.0625em){.govuk-section-break--xl{margin-top:50px}}@media (min-width: 40.0625em){.govuk-section-break--xl{margin-bottom:50px}}.govuk-section-break--l{margin-top:20px;margin-bottom:20px}@media (min-width: 40.0625em){.govuk-section-break--l{margin-top:30px}}@media (min-width: 40.0625em){.govuk-section-break--l{margin-bottom:30px}}.govuk-section-break--m{margin-top:15px;margin-bottom:15px}@media (min-width: 40.0625em){.govuk-section-break--m{margin-top:20px}}@media (min-width: 40.0625em){.govuk-section-break--m{margin-bottom:20px}}.govuk-section-break--visible{border-bottom:1px solid #b1b4b6}.govuk-button-group{margin-bottom:5px;display:flex;flex-direction:column;align-items:center}@media (min-width: 40.0625em){.govuk-button-group{margin-bottom:15px}}.govuk-button-group .govuk-link{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.1875;display:inline-block;max-width:100%;margin-top:5px;margin-bottom:20px;text-align:center}@media print{.govuk-button-group .govuk-link{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-button-group .govuk-link{font-size:1.1875rem;line-height:1}}@media print{.govuk-button-group .govuk-link{font-size:14pt;line-height:19px}}.govuk-button-group .govuk-button{margin-bottom:17px}@media (min-width: 40.0625em){.govuk-button-group{margin-right:-15px;flex-direction:row;flex-wrap:wrap;align-items:baseline}.govuk-button-group .govuk-button,.govuk-button-group .govuk-link{margin-right:15px}.govuk-button-group .govuk-link{text-align:left}}.govuk-form-group{margin-bottom:20px}.govuk-form-group:after{content:"";display:block;clear:both}@media (min-width: 40.0625em){.govuk-form-group{margin-bottom:30px}}.govuk-form-group .govuk-form-group:last-of-type{margin-bottom:0}.govuk-form-group--error{padding-left:15px;border-left:5px solid #d4351c}.govuk-form-group--error .govuk-form-group{padding:0;border:0}.govuk-grid-row{margin-right:-15px;margin-left:-15px}.govuk-grid-row:after{content:"";display:block;clear:both}.govuk-grid-column-one-quarter{box-sizing:border-box;width:100%;padding:0 15px}@media (min-width: 40.0625em){.govuk-grid-column-one-quarter{width:25%;float:left}}.govuk-grid-column-one-third{box-sizing:border-box;width:100%;padding:0 15px}@media (min-width: 40.0625em){.govuk-grid-column-one-third{width:33.3333333333%;float:left}}.govuk-grid-column-one-half{box-sizing:border-box;width:100%;padding:0 15px}@media (min-width: 40.0625em){.govuk-grid-column-one-half{width:50%;float:left}}.govuk-grid-column-two-thirds{box-sizing:border-box;width:100%;padding:0 15px}@media (min-width: 40.0625em){.govuk-grid-column-two-thirds{width:66.6666666667%;float:left}}.govuk-grid-column-three-quarters{box-sizing:border-box;width:100%;padding:0 15px}@media (min-width: 40.0625em){.govuk-grid-column-three-quarters{width:75%;float:left}}.govuk-grid-column-full{box-sizing:border-box;width:100%;padding:0 15px}@media (min-width: 40.0625em){.govuk-grid-column-full{width:100%;float:left}}.govuk-grid-column-one-quarter-from-desktop{box-sizing:border-box;padding:0 15px}@media (min-width: 48.0625em){.govuk-grid-column-one-quarter-from-desktop{width:25%;float:left}}.govuk-grid-column-one-third-from-desktop{box-sizing:border-box;padding:0 15px}@media (min-width: 48.0625em){.govuk-grid-column-one-third-from-desktop{width:33.3333333333%;float:left}}.govuk-grid-column-one-half-from-desktop{box-sizing:border-box;padding:0 15px}@media (min-width: 48.0625em){.govuk-grid-column-one-half-from-desktop{width:50%;float:left}}.govuk-grid-column-two-thirds-from-desktop{box-sizing:border-box;padding:0 15px}@media (min-width: 48.0625em){.govuk-grid-column-two-thirds-from-desktop{width:66.6666666667%;float:left}}.govuk-grid-column-three-quarters-from-desktop{box-sizing:border-box;padding:0 15px}@media (min-width: 48.0625em){.govuk-grid-column-three-quarters-from-desktop{width:75%;float:left}}.govuk-grid-column-full-from-desktop{box-sizing:border-box;padding:0 15px}@media (min-width: 48.0625em){.govuk-grid-column-full-from-desktop{width:100%;float:left}}.govuk-main-wrapper{display:block;padding-top:20px;padding-bottom:20px}@media (min-width: 40.0625em){.govuk-main-wrapper{padding-top:40px;padding-bottom:40px}}.govuk-main-wrapper--auto-spacing:first-child,.govuk-main-wrapper--l{padding-top:30px}@media (min-width: 40.0625em){.govuk-main-wrapper--auto-spacing:first-child,.govuk-main-wrapper--l{padding-top:50px}}.govuk-template{background-color:#f3f2f1;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}@supports (position: -webkit-sticky) or (position: sticky){.govuk-template{scroll-padding-top:60px}.govuk-template:not(:has(.govuk-exit-this-page)){scroll-padding-top:0}}@media screen{.govuk-template{overflow-y:scroll}}.govuk-template__body{margin:0;background-color:#fff}.govuk-width-container{max-width:960px;margin-right:15px;margin-left:15px}@supports (margin: max(0px)){.govuk-width-container{margin-right:max(15px,calc(15px + env(safe-area-inset-right)));margin-left:max(15px,calc(15px + env(safe-area-inset-left)))}}@media (min-width: 40.0625em){.govuk-width-container{margin-right:30px;margin-left:30px}@supports (margin: max(0px)){.govuk-width-container{margin-right:max(30px,calc(15px + env(safe-area-inset-right)));margin-left:max(30px,calc(15px + env(safe-area-inset-left)))}}}@media (min-width: 1020px){.govuk-width-container{margin-right:auto;margin-left:auto}@supports (margin: max(0px)){.govuk-width-container{margin-right:auto;margin-left:auto}}}.govuk-accordion{margin-bottom:20px}@media (min-width: 40.0625em){.govuk-accordion{margin-bottom:30px}}.govuk-accordion__section{padding-top:15px}.govuk-accordion__section-heading{margin-top:0;margin-bottom:0;padding-top:15px;padding-bottom:15px}.govuk-accordion__section-button{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:1.125rem;line-height:1.1111111111;color:#0b0c0c;display:block;margin-bottom:0;padding-top:15px}@media print{.govuk-accordion__section-button{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-accordion__section-button{font-size:1.5rem;line-height:1.25}}@media print{.govuk-accordion__section-button{font-size:18pt;line-height:1.15}}@media print{.govuk-accordion__section-button{color:#000}}.govuk-accordion__section-content>:last-child{margin-bottom:0}.govuk-frontend-supported .govuk-accordion{border-bottom:1px solid #b1b4b6}.govuk-frontend-supported .govuk-accordion__section{padding-top:0}.govuk-frontend-supported .govuk-accordion__section-content{display:none;padding-top:15px;padding-bottom:30px}@media (min-width: 40.0625em){.govuk-frontend-supported .govuk-accordion__section-content{padding-bottom:50px}}.govuk-frontend-supported .govuk-accordion__section-content[hidden]{padding-top:0;padding-bottom:0}@supports (content-visibility: hidden){.govuk-frontend-supported .govuk-accordion__section-content[hidden]{content-visibility:hidden;display:inherit}}.govuk-frontend-supported .govuk-accordion__section--expanded .govuk-accordion__section-content{display:block}.govuk-frontend-supported .govuk-accordion__show-all{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;position:relative;z-index:1;margin-bottom:9px;padding:5px 2px 5px 0;border-width:0;color:#1d70b8;background:none;cursor:pointer;-webkit-appearance:none}@media print{.govuk-frontend-supported .govuk-accordion__show-all{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-frontend-supported .govuk-accordion__show-all{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-frontend-supported .govuk-accordion__show-all{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-frontend-supported .govuk-accordion__show-all{margin-bottom:14px}}.govuk-frontend-supported .govuk-accordion__show-all::-moz-focus-inner{padding:0;border:0}.govuk-frontend-supported .govuk-accordion__show-all:hover{color:#0b0c0c;background:#f3f2f1;box-shadow:0 -2px #f3f2f1,0 4px #f3f2f1}.govuk-frontend-supported .govuk-accordion__show-all:hover .govuk-accordion__section-toggle-text{color:#0b0c0c}.govuk-frontend-supported .govuk-accordion__show-all:hover .govuk-accordion-nav__chevron{color:#0b0c0c;background:#0b0c0c}.govuk-frontend-supported .govuk-accordion__show-all:hover .govuk-accordion-nav__chevron:after{color:#f3f2f1}.govuk-frontend-supported .govuk-accordion__show-all:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-frontend-supported .govuk-accordion__show-all:focus .govuk-accordion-nav__chevron{background:#0b0c0c}.govuk-frontend-supported .govuk-accordion__show-all:focus .govuk-accordion-nav__chevron:after{color:#fd0}.govuk-frontend-supported .govuk-accordion__section-heading{padding:0}.govuk-frontend-supported .govuk-accordion-nav__chevron{box-sizing:border-box;display:inline-block;position:relative;width:1.25rem;height:1.25rem;border:.0625rem solid;border-radius:50%;vertical-align:middle}.govuk-frontend-supported .govuk-accordion-nav__chevron:after{content:"";box-sizing:border-box;display:block;position:absolute;bottom:.3125rem;left:.375rem;width:.375rem;height:.375rem;transform:rotate(-45deg);border-top:.125rem solid;border-right:.125rem solid}.govuk-frontend-supported .govuk-accordion-nav__chevron--down{transform:rotate(180deg)}.govuk-frontend-supported .govuk-accordion__section-button{width:100%;padding:10px 0 0;border:0;border-top:1px solid #b1b4b6;border-bottom:10px solid transparent;color:#0b0c0c;background:none;text-align:left;cursor:pointer;-webkit-appearance:none}@media (min-width: 40.0625em){.govuk-frontend-supported .govuk-accordion__section-button{padding-bottom:10px}}.govuk-frontend-supported .govuk-accordion__section-button:active{color:#0b0c0c;background:none}.govuk-frontend-supported .govuk-accordion__section-button:hover{color:#0b0c0c;background:#f3f2f1}.govuk-frontend-supported .govuk-accordion__section-button:hover .govuk-accordion__section-toggle-text{color:#0b0c0c}.govuk-frontend-supported .govuk-accordion__section-button:hover .govuk-accordion-nav__chevron{color:#0b0c0c;background:#0b0c0c}.govuk-frontend-supported .govuk-accordion__section-button:hover .govuk-accordion-nav__chevron:after{color:#f3f2f1}.govuk-frontend-supported .govuk-accordion__section-button:focus{outline:0}.govuk-frontend-supported .govuk-accordion__section-button:focus .govuk-accordion__section-heading-text-focus,.govuk-frontend-supported .govuk-accordion__section-button:focus .govuk-accordion__section-summary-focus,.govuk-frontend-supported .govuk-accordion__section-button:focus .govuk-accordion__section-toggle-focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-frontend-supported .govuk-accordion__section-button:focus .govuk-accordion-nav__chevron{color:#0b0c0c;background:#0b0c0c}.govuk-frontend-supported .govuk-accordion__section-button:focus .govuk-accordion-nav__chevron:after{color:#fd0}.govuk-frontend-supported .govuk-accordion__section-button::-moz-focus-inner{padding:0;border:0}.govuk-frontend-supported .govuk-accordion__section--expanded .govuk-accordion__section-button{padding-bottom:15px;border-bottom:0}@media (min-width: 40.0625em){.govuk-frontend-supported .govuk-accordion__section--expanded .govuk-accordion__section-button{padding-bottom:20px}}.govuk-frontend-supported .govuk-accordion__section-button:focus .govuk-accordion__section-toggle-focus{padding-bottom:3px}@media (min-width: 48.0625em){.govuk-frontend-supported .govuk-accordion__section-button:focus .govuk-accordion__section-toggle-focus{padding-bottom:2px}}.govuk-frontend-supported .govuk-accordion__section-toggle,.govuk-frontend-supported .govuk-accordion__section-heading-text,.govuk-frontend-supported .govuk-accordion__section-summary{display:block;margin-bottom:13px}.govuk-frontend-supported .govuk-accordion__section-toggle .govuk-accordion__section-heading-text-focus,.govuk-frontend-supported .govuk-accordion__section-toggle .govuk-accordion__section-summary-focus,.govuk-frontend-supported .govuk-accordion__section-toggle .govuk-accordion__section-toggle-focus,.govuk-frontend-supported .govuk-accordion__section-heading-text .govuk-accordion__section-heading-text-focus,.govuk-frontend-supported .govuk-accordion__section-heading-text .govuk-accordion__section-summary-focus,.govuk-frontend-supported .govuk-accordion__section-heading-text .govuk-accordion__section-toggle-focus,.govuk-frontend-supported .govuk-accordion__section-summary .govuk-accordion__section-heading-text-focus,.govuk-frontend-supported .govuk-accordion__section-summary .govuk-accordion__section-summary-focus,.govuk-frontend-supported .govuk-accordion__section-summary .govuk-accordion__section-toggle-focus{display:inline}.govuk-frontend-supported .govuk-accordion__section-toggle{font-size:1rem;line-height:1.25;font-weight:400;color:#1d70b8}@media (min-width: 40.0625em){.govuk-frontend-supported .govuk-accordion__section-toggle{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-frontend-supported .govuk-accordion__section-toggle{font-size:14pt;line-height:1.15}}.govuk-frontend-supported .govuk-accordion__show-all-text,.govuk-frontend-supported .govuk-accordion__section-toggle-text{margin-left:5px;vertical-align:middle}@media screen and (forced-colors: active){.govuk-frontend-supported .govuk-accordion__show-all:hover .govuk-accordion-nav__chevron,.govuk-frontend-supported .govuk-accordion__section-button:hover .govuk-accordion-nav__chevron{background-color:transparent}.govuk-frontend-supported .govuk-accordion__show-all:focus .govuk-accordion__section-heading-text-focus,.govuk-frontend-supported .govuk-accordion__show-all:focus .govuk-accordion__section-summary-focus,.govuk-frontend-supported .govuk-accordion__show-all:focus .govuk-accordion__section-toggle-focus,.govuk-frontend-supported .govuk-accordion__show-all:focus .govuk-accordion-nav__chevron,.govuk-frontend-supported .govuk-accordion__section-button:focus .govuk-accordion__section-heading-text-focus,.govuk-frontend-supported .govuk-accordion__section-button:focus .govuk-accordion__section-summary-focus,.govuk-frontend-supported .govuk-accordion__section-button:focus .govuk-accordion__section-toggle-focus,.govuk-frontend-supported .govuk-accordion__section-button:focus .govuk-accordion-nav__chevron{background:transparent;background-color:transparent}}@media (hover: none){.govuk-frontend-supported .govuk-accordion__section-header:hover{border-top-color:#b1b4b6;box-shadow:inset 0 3px #1d70b8}.govuk-frontend-supported .govuk-accordion__section-header:hover .govuk-accordion__section-button{border-top-color:#b1b4b6}}.govuk-back-link{font-size:.875rem;line-height:1.1428571429;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em;display:inline-block;position:relative;margin-top:15px;margin-bottom:15px;padding-left:.875em}@media (min-width: 40.0625em){.govuk-back-link{font-size:1rem;line-height:1.25}}@media print{.govuk-back-link{font-size:14pt;line-height:1.2}}@media print{.govuk-back-link{font-family:sans-serif}}.govuk-back-link:hover{text-decoration-thickness:max(3px,.1875rem,.12em);-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;text-decoration-skip:none}.govuk-back-link:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-back-link:link,.govuk-back-link:visited{color:#0b0c0c}@media print{.govuk-back-link:link,.govuk-back-link:visited{color:#000}}.govuk-back-link:hover{color:rgba(11,12,12,.99)}.govuk-back-link:active,.govuk-back-link:focus{color:#0b0c0c}@media print{.govuk-back-link:active,.govuk-back-link:focus{color:#000}}.govuk-back-link:before{content:"";display:block;position:absolute;top:0;bottom:0;left:.1875em;width:.4375em;height:.4375em;margin:auto 0;transform:rotate(225deg);border:solid;border-width:1px 1px 0 0;border-color:#505a5f}@supports (border-width: max(0px)){.govuk-back-link:before{border-width:max(1px,.0625em) max(1px,.0625em) 0 0;font-size:max(16px,1em)}}.govuk-back-link:focus:before{border-color:#0b0c0c}.govuk-back-link:after{content:"";position:absolute;top:-14px;right:0;bottom:-14px;left:0}.govuk-back-link--inverse:link,.govuk-back-link--inverse:visited{color:#fff}.govuk-back-link--inverse:hover,.govuk-back-link--inverse:active{color:rgba(255,255,255,.99)}.govuk-back-link--inverse:focus{color:#0b0c0c}.govuk-back-link--inverse:before{border-color:currentcolor}.govuk-breadcrumbs{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:.875rem;line-height:1.1428571429;color:#0b0c0c;margin-top:15px;margin-bottom:10px}@media print{.govuk-breadcrumbs{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-breadcrumbs{font-size:1rem;line-height:1.25}}@media print{.govuk-breadcrumbs{font-size:14pt;line-height:1.2}}@media print{.govuk-breadcrumbs{color:#000}}.govuk-breadcrumbs__list{margin:0;padding:0;list-style-type:none}.govuk-breadcrumbs__list:after{content:"";display:block;clear:both}.govuk-breadcrumbs__list-item{display:inline-block;position:relative;margin-bottom:5px;margin-left:.625em;padding-left:.9784375em;float:left}.govuk-breadcrumbs__list-item:before{content:"";display:block;position:absolute;top:0;bottom:0;left:-.206875em;width:.4375em;height:.4375em;margin:auto 0;transform:rotate(45deg);border:solid;border-width:1px 1px 0 0;border-color:#505a5f}@supports (border-width: max(0px)){.govuk-breadcrumbs__list-item:before{border-width:max(1px,.0625em) max(1px,.0625em) 0 0;font-size:max(16px,1em)}}.govuk-breadcrumbs__list-item:first-child{margin-left:0;padding-left:0}.govuk-breadcrumbs__list-item:first-child:before{content:none;display:none}.govuk-breadcrumbs__link{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em}@media print{.govuk-breadcrumbs__link{font-family:sans-serif}}.govuk-breadcrumbs__link:hover{text-decoration-thickness:max(3px,.1875rem,.12em);-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;text-decoration-skip:none}.govuk-breadcrumbs__link:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-breadcrumbs__link:link,.govuk-breadcrumbs__link:visited{color:#0b0c0c}@media print{.govuk-breadcrumbs__link:link,.govuk-breadcrumbs__link:visited{color:#000}}.govuk-breadcrumbs__link:hover{color:rgba(11,12,12,.99)}.govuk-breadcrumbs__link:active,.govuk-breadcrumbs__link:focus{color:#0b0c0c}@media print{.govuk-breadcrumbs__link:active,.govuk-breadcrumbs__link:focus{color:#000}}@media (max-width: 40.0525em){.govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list-item{display:none}.govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list-item:first-child,.govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list-item:last-child{display:inline-block}.govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list-item:before{top:.375em;margin:0}.govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list{display:flex}}.govuk-breadcrumbs--inverse,.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:link,.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:visited{color:#fff}.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:hover,.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:active{color:rgba(255,255,255,.99)}.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:focus{color:#0b0c0c}.govuk-breadcrumbs--inverse .govuk-breadcrumbs__list-item:before{border-color:currentcolor}.govuk-button{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.1875;box-sizing:border-box;display:inline-block;position:relative;width:100%;margin:0 0 22px;padding:8px 10px 7px;border:2px solid transparent;border-radius:0;color:#fff;background-color:#00703c;box-shadow:0 2px #002d18;text-align:center;vertical-align:top;cursor:pointer;-webkit-appearance:none}@media print{.govuk-button{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-button{font-size:1.1875rem;line-height:1}}@media print{.govuk-button{font-size:14pt;line-height:19px}}@media (min-width: 40.0625em){.govuk-button{margin-bottom:32px}}@media (min-width: 40.0625em){.govuk-button{width:auto}}.govuk-button:link,.govuk-button:visited,.govuk-button:active,.govuk-button:hover{color:#fff;text-decoration:none}.govuk-button::-moz-focus-inner{padding:0;border:0}.govuk-button:hover{background-color:#005a30}.govuk-button:active{top:2px}.govuk-button:focus{border-color:#fd0;outline:3px solid transparent;box-shadow:inset 0 0 0 1px #fd0}.govuk-button:focus:not(:active):not(:hover){border-color:#fd0;color:#0b0c0c;background-color:#fd0;box-shadow:0 2px #0b0c0c}.govuk-button:before{content:"";display:block;position:absolute;top:-2px;right:-2px;bottom:-4px;left:-2px;background:transparent}.govuk-button:active:before{top:-4px}.govuk-button[disabled]{opacity:.5}.govuk-button[disabled]:hover{background-color:#00703c;cursor:not-allowed}.govuk-button[disabled]:active{top:0;box-shadow:0 2px #002d18}.govuk-button--secondary{background-color:#f3f2f1;box-shadow:0 2px #929191}.govuk-button--secondary,.govuk-button--secondary:link,.govuk-button--secondary:visited,.govuk-button--secondary:active,.govuk-button--secondary:hover{color:#0b0c0c}.govuk-button--secondary:hover{background-color:#dbdad9}.govuk-button--secondary:hover[disabled]{background-color:#f3f2f1}.govuk-button--warning{background-color:#d4351c;box-shadow:0 2px #55150b}.govuk-button--warning,.govuk-button--warning:link,.govuk-button--warning:visited,.govuk-button--warning:active,.govuk-button--warning:hover{color:#fff}.govuk-button--warning:hover{background-color:#aa2a16}.govuk-button--warning:hover[disabled]{background-color:#d4351c}.govuk-button--inverse{background-color:#fff;box-shadow:0 2px #144e81}.govuk-button--inverse,.govuk-button--inverse:link,.govuk-button--inverse:visited,.govuk-button--inverse:active,.govuk-button--inverse:hover{color:#1d70b8}.govuk-button--inverse:hover{background-color:#e8f1f8}.govuk-button--inverse:hover[disabled]{background-color:#fff}.govuk-button--start{font-weight:700;font-size:1.125rem;line-height:1;display:inline-flex;min-height:auto;justify-content:center}@media (min-width: 40.0625em){.govuk-button--start{font-size:1.5rem;line-height:1}}@media print{.govuk-button--start{font-size:18pt;line-height:1}}.govuk-button__start-icon{margin-left:5px;vertical-align:middle;flex-shrink:0;align-self:center;forced-color-adjust:auto}@media (min-width: 48.0625em){.govuk-button__start-icon{margin-left:10px}}.govuk-error-message{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:1rem;line-height:1.25;display:block;margin-top:0;margin-bottom:15px;clear:both;color:#d4351c}@media print{.govuk-error-message{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-error-message{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-error-message{font-size:14pt;line-height:1.15}}.govuk-hint{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;margin-bottom:15px;color:#505a5f}@media print{.govuk-hint{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-hint{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-hint{font-size:14pt;line-height:1.15}}.govuk-label:not(.govuk-label--m):not(.govuk-label--l):not(.govuk-label--xl)+.govuk-hint{margin-bottom:10px}.govuk-fieldset__legend:not(.govuk-fieldset__legend--m):not(.govuk-fieldset__legend--l):not(.govuk-fieldset__legend--xl)+.govuk-hint{margin-bottom:10px}.govuk-fieldset__legend+.govuk-hint{margin-top:-5px}.govuk-label{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;color:#0b0c0c;display:block;margin-bottom:5px}@media print{.govuk-label{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-label{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-label{font-size:14pt;line-height:1.15}}@media print{.govuk-label{color:#000}}.govuk-label--xl,.govuk-label--l,.govuk-label--m{font-weight:700;margin-bottom:15px}.govuk-label--xl{font-size:2rem;line-height:1.09375}@media (min-width: 40.0625em){.govuk-label--xl{font-size:3rem;line-height:1.0416666667}}@media print{.govuk-label--xl{font-size:32pt;line-height:1.15}}.govuk-label--l{font-size:1.5rem;line-height:1.0416666667}@media (min-width: 40.0625em){.govuk-label--l{font-size:2.25rem;line-height:1.1111111111}}@media print{.govuk-label--l{font-size:24pt;line-height:1.05}}.govuk-label--m{font-size:1.125rem;line-height:1.1111111111}@media (min-width: 40.0625em){.govuk-label--m{font-size:1.5rem;line-height:1.25}}@media print{.govuk-label--m{font-size:18pt;line-height:1.15}}.govuk-label--s{font-weight:700}.govuk-label-wrapper{margin:0}.govuk-textarea{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;box-sizing:border-box;display:block;width:100%;min-height:40px;margin-bottom:20px;padding:5px;resize:vertical;border:2px solid #0b0c0c;border-radius:0;-webkit-appearance:none}@media print{.govuk-textarea{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-textarea{font-size:1.1875rem;line-height:1.25}}@media print{.govuk-textarea{font-size:14pt;line-height:1.25}}@media (min-width: 40.0625em){.govuk-textarea{margin-bottom:30px}}.govuk-textarea:focus{outline:3px solid #ffdd00;outline-offset:0;box-shadow:inset 0 0 0 2px}.govuk-textarea:disabled{opacity:.5;color:inherit;background-color:transparent;cursor:not-allowed}.govuk-textarea--error{border-color:#d4351c}.govuk-textarea--error:focus{border-color:#0b0c0c}.govuk-character-count{margin-bottom:20px}@media (min-width: 40.0625em){.govuk-character-count{margin-bottom:30px}}.govuk-character-count .govuk-form-group,.govuk-character-count .govuk-textarea{margin-bottom:5px}.govuk-character-count__message{font-variant-numeric:tabular-nums;margin-top:0;margin-bottom:0}.govuk-character-count__message:after{content:"\200b"}.govuk-character-count__message--disabled{visibility:hidden}.govuk-fieldset{min-width:0;margin:0;padding:0;border:0}.govuk-fieldset:after{content:"";display:block;clear:both}@supports not (caret-color: auto){.govuk-fieldset,x:-moz-any-link{display:table-cell}}.govuk-fieldset__legend{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;color:#0b0c0c;box-sizing:border-box;display:table;max-width:100%;margin-bottom:10px;padding:0;white-space:normal}@media print{.govuk-fieldset__legend{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-fieldset__legend{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-fieldset__legend{font-size:14pt;line-height:1.15}}@media print{.govuk-fieldset__legend{color:#000}}.govuk-fieldset__legend--xl,.govuk-fieldset__legend--l,.govuk-fieldset__legend--m{font-weight:700;margin-bottom:15px}.govuk-fieldset__legend--xl{font-size:2rem;line-height:1.09375}@media (min-width: 40.0625em){.govuk-fieldset__legend--xl{font-size:3rem;line-height:1.0416666667}}@media print{.govuk-fieldset__legend--xl{font-size:32pt;line-height:1.15}}.govuk-fieldset__legend--l{font-size:1.5rem;line-height:1.0416666667}@media (min-width: 40.0625em){.govuk-fieldset__legend--l{font-size:2.25rem;line-height:1.1111111111}}@media print{.govuk-fieldset__legend--l{font-size:24pt;line-height:1.05}}.govuk-fieldset__legend--m{font-size:1.125rem;line-height:1.1111111111}@media (min-width: 40.0625em){.govuk-fieldset__legend--m{font-size:1.5rem;line-height:1.25}}@media print{.govuk-fieldset__legend--m{font-size:18pt;line-height:1.15}}.govuk-fieldset__legend--s{font-weight:700}.govuk-fieldset__heading{margin:0;font-size:inherit;font-weight:inherit}.govuk-checkboxes__item{display:flex;flex-wrap:wrap;position:relative;margin-bottom:10px}.govuk-checkboxes__item:last-child,.govuk-checkboxes__item:last-of-type{margin-bottom:0}.govuk-checkboxes__input{width:44px;height:44px;margin:0;opacity:0;cursor:pointer}.govuk-checkboxes__label{align-self:center;max-width:calc(100% - 74px);margin-bottom:0;padding:7px 15px;cursor:pointer;touch-action:manipulation}.govuk-checkboxes__label:before{content:"";box-sizing:border-box;position:absolute;top:2px;left:2px;width:40px;height:40px;border:2px solid currentcolor;background:transparent}.govuk-checkboxes__label:after{content:"";box-sizing:border-box;position:absolute;top:13px;left:10px;width:23px;height:12px;transform:rotate(-45deg);border:solid;border-width:0 0 5px 5px;border-top-color:transparent;opacity:0;background:transparent}.govuk-checkboxes__hint{display:block;width:100%;margin-top:-5px;padding-right:15px;padding-left:59px}.govuk-label:not(.govuk-label--m):not(.govuk-label--l):not(.govuk-label--xl)+.govuk-checkboxes__hint{margin-bottom:0}.govuk-checkboxes__input:focus+.govuk-checkboxes__label:before{border-width:4px;outline:3px solid transparent;outline-offset:1px;box-shadow:0 0 0 3px #fd0}@media screen and (forced-colors: active),(-ms-high-contrast: active){.govuk-checkboxes__input:focus+.govuk-checkboxes__label:before{outline-color:Highlight}}.govuk-checkboxes__input:checked+.govuk-checkboxes__label:after{opacity:1}.govuk-checkboxes__input:disabled,.govuk-checkboxes__input:disabled+.govuk-checkboxes__label{cursor:not-allowed}.govuk-checkboxes__input:disabled+.govuk-checkboxes__label,.govuk-checkboxes__input:disabled~.govuk-hint{opacity:.5}.govuk-checkboxes__divider{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;color:#0b0c0c;width:40px;margin-bottom:10px;text-align:center}@media print{.govuk-checkboxes__divider{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-checkboxes__divider{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-checkboxes__divider{font-size:14pt;line-height:1.15}}@media print{.govuk-checkboxes__divider{color:#000}}.govuk-checkboxes__conditional{margin-bottom:15px;margin-left:18px;padding-left:33px;border-left:4px solid #b1b4b6}@media (min-width: 40.0625em){.govuk-checkboxes__conditional{margin-bottom:20px}}.govuk-frontend-supported .govuk-checkboxes__conditional--hidden{display:none}.govuk-checkboxes__conditional>:last-child{margin-bottom:0}.govuk-checkboxes--small .govuk-checkboxes__item{margin-bottom:0}.govuk-checkboxes--small .govuk-checkboxes__input{margin-left:-10px}.govuk-checkboxes--small .govuk-checkboxes__label{padding-left:1px}.govuk-checkboxes--small .govuk-checkboxes__label:before{top:10px;left:0;width:24px;height:24px}.govuk-checkboxes--small .govuk-checkboxes__label:after{top:17px;left:6px;width:12px;height:6.5px;border-width:0 0 3px 3px}.govuk-checkboxes--small .govuk-checkboxes__hint{padding-left:34px}.govuk-checkboxes--small .govuk-checkboxes__conditional{margin-left:10px;padding-left:20px}.govuk-checkboxes--small .govuk-checkboxes__item:hover .govuk-checkboxes__input:not(:disabled)+.govuk-checkboxes__label:before{outline:3px dashed transparent;outline-offset:1px;box-shadow:0 0 0 10px #b1b4b6}.govuk-checkboxes--small .govuk-checkboxes__item:hover .govuk-checkboxes__input:focus+.govuk-checkboxes__label:before{box-shadow:0 0 0 3px #fd0,0 0 0 10px #b1b4b6}@media screen and (forced-colors: active),(-ms-high-contrast: active){.govuk-checkboxes--small .govuk-checkboxes__item:hover .govuk-checkboxes__input:focus+.govuk-checkboxes__label:before{outline-color:Highlight}}@media (hover: none),(pointer: coarse){.govuk-checkboxes--small .govuk-checkboxes__item:hover .govuk-checkboxes__input:not(:disabled)+.govuk-checkboxes__label:before{box-shadow:initial}.govuk-checkboxes--small .govuk-checkboxes__item:hover .govuk-checkboxes__input:focus+.govuk-checkboxes__label:before{box-shadow:0 0 0 3px #fd0}}.govuk-cookie-banner{padding-top:20px;border-bottom:10px solid transparent;background-color:#f3f2f1}.govuk-cookie-banner[hidden]{display:none}.govuk-cookie-banner__message{margin-bottom:-10px}.govuk-cookie-banner__message[hidden]{display:none}.govuk-cookie-banner__message:focus{outline:none}.govuk-input{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;box-sizing:border-box;width:100%;height:2.5rem;margin-top:0;padding:5px;border:2px solid #0b0c0c;border-radius:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media print{.govuk-input{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-input{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-input{font-size:14pt;line-height:1.15}}.govuk-input:focus{outline:3px solid #ffdd00;outline-offset:0;box-shadow:inset 0 0 0 2px}.govuk-input:disabled{opacity:.5;color:inherit;background-color:transparent;cursor:not-allowed}.govuk-input::-webkit-outer-spin-button,.govuk-input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.govuk-input[type=number]{-moz-appearance:textfield}.govuk-input--error{border-color:#d4351c}.govuk-input--error:focus{border-color:#0b0c0c}.govuk-input--extra-letter-spacing{font-variant-numeric:tabular-nums;letter-spacing:.05em}.govuk-input--width-30{max-width:29.5em}.govuk-input--width-20{max-width:20.5em}.govuk-input--width-10{max-width:11.5em}.govuk-input--width-5{max-width:5.5em}.govuk-input--width-4{max-width:4.5em}.govuk-input--width-3{max-width:3.75em}.govuk-input--width-2{max-width:2.75em}.govuk-input__wrapper{display:flex}.govuk-input__wrapper .govuk-input{flex:0 1 auto}.govuk-input__wrapper .govuk-input:focus{z-index:1}@media (max-width: 19.99em){.govuk-input__wrapper{display:block}.govuk-input__wrapper .govuk-input{max-width:100%}}.govuk-input__prefix,.govuk-input__suffix{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;box-sizing:border-box;display:flex;align-items:center;justify-content:center;min-width:2.5rem;height:2.5rem;padding:5px;border:2px solid #0b0c0c;background-color:#f3f2f1;text-align:center;white-space:nowrap;cursor:default;flex:0 0 auto}@media print{.govuk-input__prefix,.govuk-input__suffix{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-input__prefix,.govuk-input__suffix{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-input__prefix,.govuk-input__suffix{font-size:14pt;line-height:1.15}}@media (max-width: 19.99em){.govuk-input__prefix,.govuk-input__suffix{display:block;height:100%;white-space:normal}}@media (max-width: 19.99em){.govuk-input__prefix{border-bottom:0}}@media (min-width: 20em){.govuk-input__prefix{border-right:0}}@media (max-width: 19.99em){.govuk-input__suffix{border-top:0}}@media (min-width: 20em){.govuk-input__suffix{border-left:0}}.govuk-date-input{font-size:0}.govuk-date-input:after{content:"";display:block;clear:both}.govuk-date-input__item{display:inline-block;margin-right:20px;margin-bottom:0}.govuk-date-input__label{display:block}.govuk-date-input__input{margin-bottom:0}.govuk-details{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;color:#0b0c0c;margin-bottom:20px;display:block}@media print{.govuk-details{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-details{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-details{font-size:14pt;line-height:1.15}}@media print{.govuk-details{color:#000}}@media (min-width: 40.0625em){.govuk-details{margin-bottom:30px}}.govuk-details__summary{display:inline-block;margin-bottom:5px}.govuk-details__summary-text>:first-child{margin-top:0}.govuk-details__summary-text>:only-child,.govuk-details__summary-text>:last-child{margin-bottom:0}.govuk-details__text{padding-top:15px;padding-bottom:15px;padding-left:20px}.govuk-details__text p{margin-top:0;margin-bottom:20px}.govuk-details__text>:last-child{margin-bottom:0}@media screen\fffd{.govuk-details{border-left:10px solid #b1b4b6}.govuk-details__summary{margin-top:15px}.govuk-details__summary-text{font-weight:700;margin-bottom:15px;padding-left:20px}}@media screen\fffd and (min-width: 40.0625em){.govuk-details__summary-text{margin-bottom:20px}}@supports not (-ms-ime-align: auto){.govuk-details__summary{position:relative;padding-left:25px;color:#1d70b8;cursor:pointer}.govuk-details__summary:hover{color:#003078}.govuk-details__summary:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-details__summary-text{text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em}.govuk-details__summary:hover .govuk-details__summary-text{text-decoration-thickness:max(3px,.1875rem,.12em);-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;text-decoration-skip:none}.govuk-details__summary:focus .govuk-details__summary-text{text-decoration:none}.govuk-details__summary::-webkit-details-marker{display:none}.govuk-details__summary:before{content:"";position:absolute;top:-1px;bottom:0;left:0;margin:auto;display:block;width:0;height:0;border-style:solid;border-color:transparent;-webkit-clip-path:polygon(0% 0%,100% 50%,0% 100%);clip-path:polygon(0% 0%,100% 50%,0% 100%);border-width:7px 0 7px 12.124px;border-left-color:inherit}.govuk-details[open]>.govuk-details__summary:before{display:block;width:0;height:0;border-style:solid;border-color:transparent;-webkit-clip-path:polygon(0% 0%,50% 100%,100% 0%);clip-path:polygon(0% 0%,50% 100%,100% 0%);border-width:12.124px 7px 0 7px;border-top-color:inherit}.govuk-details__text{border-left:5px solid #b1b4b6}}.govuk-error-summary{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;color:#0b0c0c;padding:15px;margin-bottom:30px;border:5px solid #d4351c}@media print{.govuk-error-summary{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-error-summary{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-error-summary{font-size:14pt;line-height:1.15}}@media print{.govuk-error-summary{color:#000}}@media (min-width: 40.0625em){.govuk-error-summary{padding:20px}}@media (min-width: 40.0625em){.govuk-error-summary{margin-bottom:50px}}.govuk-error-summary:focus{outline:3px solid #ffdd00}.govuk-error-summary__title{font-size:1.125rem;line-height:1.1111111111;font-weight:700;margin-top:0;margin-bottom:15px}@media (min-width: 40.0625em){.govuk-error-summary__title{font-size:1.5rem;line-height:1.25}}@media print{.govuk-error-summary__title{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-error-summary__title{margin-bottom:20px}}.govuk-error-summary__body p{margin-top:0;margin-bottom:15px}@media (min-width: 40.0625em){.govuk-error-summary__body p{margin-bottom:20px}}.govuk-error-summary__list{margin-top:0;margin-bottom:0}.govuk-error-summary__list a{font-weight:700;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em}@media print{.govuk-error-summary__list a{font-family:sans-serif}}.govuk-error-summary__list a:hover{text-decoration-thickness:max(3px,.1875rem,.12em);-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;text-decoration-skip:none}.govuk-error-summary__list a:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-error-summary__list a:link,.govuk-error-summary__list a:visited{color:#d4351c}.govuk-error-summary__list a:hover{color:#942514}.govuk-error-summary__list a:active{color:#d4351c}.govuk-error-summary__list a:focus{color:#0b0c0c}.govuk-exit-this-page{margin-bottom:30px;position:-webkit-sticky;position:-webkit-sticky;position:sticky;z-index:1000;top:0;left:0;width:100%}@media (min-width: 40.0625em){.govuk-exit-this-page{margin-bottom:50px}}@media (min-width: 40.0625em){.govuk-exit-this-page{display:inline-block;right:0;left:auto;width:auto;float:right}}.govuk-exit-this-page__button{margin-bottom:0}.govuk-exit-this-page__indicator{padding:10px 10px 0;display:none;color:inherit;line-height:0;text-align:center;pointer-events:none}.govuk-exit-this-page__indicator--visible{display:block}.govuk-exit-this-page__indicator-light{box-sizing:border-box;display:inline-block;width:.75em;height:.75em;margin:0 .125em;border-width:2px;border-style:solid;border-radius:50%;border-color:currentcolor}.govuk-exit-this-page__indicator-light--on{border-width:.375em}@media only print{.govuk-exit-this-page{display:none}}.govuk-exit-this-page-overlay{position:fixed;z-index:9999;top:0;right:0;bottom:0;left:0;background-color:#fff}.govuk-exit-this-page-hide-content *{display:none!important}.govuk-exit-this-page-hide-content .govuk-exit-this-page-overlay{display:block!important}.govuk-file-upload{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;color:#0b0c0c;max-width:100%;margin-left:-5px;padding:5px}@media print{.govuk-file-upload{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-file-upload{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-file-upload{font-size:14pt;line-height:1.15}}@media print{.govuk-file-upload{color:#000}}.govuk-file-upload::-webkit-file-upload-button{-webkit-appearance:button;color:inherit;font:inherit}.govuk-file-upload:focus{outline:3px solid #ffdd00;box-shadow:inset 0 0 0 4px #0b0c0c}.govuk-file-upload:focus-within{outline:3px solid #ffdd00;box-shadow:inset 0 0 0 4px #0b0c0c}.govuk-file-upload:disabled{opacity:.5;cursor:not-allowed}.govuk-footer{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:.875rem;line-height:1.1428571429;padding-top:25px;padding-bottom:15px;border-top:1px solid #b1b4b6;color:#0b0c0c;background:#f3f2f1}@media print{.govuk-footer{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-footer{font-size:1rem;line-height:1.25}}@media print{.govuk-footer{font-size:14pt;line-height:1.2}}@media (min-width: 40.0625em){.govuk-footer{padding-top:40px}}@media (min-width: 40.0625em){.govuk-footer{padding-bottom:25px}}.govuk-footer__link{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em}@media print{.govuk-footer__link{font-family:sans-serif}}.govuk-footer__link:hover{text-decoration-thickness:max(3px,.1875rem,.12em);-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;text-decoration-skip:none}.govuk-footer__link:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-footer__link:link,.govuk-footer__link:visited{color:#0b0c0c}@media print{.govuk-footer__link:link,.govuk-footer__link:visited{color:#000}}.govuk-footer__link:hover{color:rgba(11,12,12,.99)}.govuk-footer__link:active,.govuk-footer__link:focus{color:#0b0c0c}@media print{.govuk-footer__link:active,.govuk-footer__link:focus{color:#000}}.govuk-footer__section-break{margin:0 0 30px;border:0;border-bottom:1px solid #b1b4b6}@media (min-width: 40.0625em){.govuk-footer__section-break{margin-bottom:50px}}.govuk-footer__meta{display:flex;margin-right:-15px;margin-left:-15px;flex-wrap:wrap;align-items:flex-end;justify-content:center}.govuk-footer__meta-item{margin-right:15px;margin-bottom:25px;margin-left:15px}.govuk-footer__meta-item--grow{flex:1}@media (max-width: 40.0525em){.govuk-footer__meta-item--grow{flex-basis:320px}}.govuk-footer__licence-logo{display:inline-block;margin-right:10px;vertical-align:top;forced-color-adjust:auto}@media (max-width: 48.0525em){.govuk-footer__licence-logo{margin-bottom:15px}}.govuk-footer__licence-description{display:inline-block}.govuk-footer__copyright-logo{display:inline-block;min-width:125px;padding-top:112px;background-image:url(/assets/images/govuk-crest.png);background-repeat:no-repeat;background-position:50% 0%;background-size:125px 102px;text-align:center;white-space:nowrap}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.govuk-footer__copyright-logo{background-image:url(/assets/images/govuk-crest-2x.png)}}.govuk-footer__inline-list{margin-top:0;margin-bottom:15px;padding:0}.govuk-footer__meta-custom{margin-bottom:20px}.govuk-footer__inline-list-item{display:inline-block;margin-right:15px;margin-bottom:5px}.govuk-footer__heading{margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #b1b4b6}@media (max-width: 40.0525em){.govuk-footer__heading{padding-bottom:10px}}.govuk-footer__navigation{margin-right:-15px;margin-left:-15px}.govuk-footer__navigation:after{content:"";display:block;clear:both}.govuk-footer__section{display:inline-block;margin-bottom:30px;vertical-align:top}.govuk-footer__list{margin:0;padding:0;list-style:none;column-gap:30px}@media (min-width: 48.0625em){.govuk-footer__list--columns-2{column-count:2}.govuk-footer__list--columns-3{column-count:3}}.govuk-footer__list-item{margin-bottom:15px}@media (min-width: 40.0625em){.govuk-footer__list-item{margin-bottom:20px}}.govuk-footer__list-item:last-child{margin-bottom:0}.govuk-header{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:.875rem;line-height:1;border-bottom:10px solid #ffffff;color:#fff;background:#0b0c0c}@media print{.govuk-header{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-header{font-size:1rem;line-height:1}}@media print{.govuk-header{font-size:14pt;line-height:1}}.govuk-header__container--full-width{padding:0 15px;border-color:#1d70b8}.govuk-header__container--full-width .govuk-header__menu-button{right:15px}.govuk-header__container{position:relative;margin-bottom:-10px;padding-top:10px;border-bottom:10px solid #1d70b8}.govuk-header__container:after{content:"";display:block;clear:both}.govuk-header__logotype{display:inline-block;position:relative;top:-3px;margin-right:5px;fill:currentcolor;vertical-align:top}@media (forced-colors: active){.govuk-header__logotype{forced-color-adjust:none;color:linktext}}.govuk-header__logotype:last-child{margin-right:0}.govuk-header__product-name{font-size:1.125rem;line-height:1;font-weight:400;display:inline-table;margin-top:10px;vertical-align:top}@media (min-width: 40.0625em){.govuk-header__product-name{font-size:1.5rem;line-height:1}}@media print{.govuk-header__product-name{font-size:18pt;line-height:1}}@-moz-document url-prefix(){.govuk-header__product-name{margin-top:9.5px}}@media (min-width: 40.0625em){.govuk-header__product-name{margin-top:5px}@-moz-document url-prefix(){.govuk-header__product-name{margin-top:4.5px}}}.govuk-header__link{text-decoration:none}.govuk-header__link:link,.govuk-header__link:visited{color:#fff}.govuk-header__link:hover,.govuk-header__link:active{color:rgba(255,255,255,.99)}.govuk-header__link:focus{color:#0b0c0c}.govuk-header__link:hover{text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:.1578em}.govuk-header__link:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-header__link--homepage{display:inline-block;margin-right:10px;font-size:30px}@media (min-width: 48.0625em){.govuk-header__link--homepage{display:inline}.govuk-header__link--homepage:focus{box-shadow:0 0 #fd0}}.govuk-header__link--homepage:link,.govuk-header__link--homepage:visited{text-decoration:none}.govuk-header__link--homepage:hover,.govuk-header__link--homepage:active{margin-bottom:-3px;border-bottom:3px solid}.govuk-header__link--homepage:focus{margin-bottom:0;border-bottom:0}.govuk-header__service-name{display:inline-block;margin-bottom:10px;font-size:1.125rem;line-height:1.1111111111;font-weight:700}@media (min-width: 40.0625em){.govuk-header__service-name{font-size:1.5rem;line-height:1.25}}@media print{.govuk-header__service-name{font-size:18pt;line-height:1.15}}.govuk-header__logo,.govuk-header__content{box-sizing:border-box}.govuk-header__logo{margin-bottom:10px;padding-right:80px}@media (min-width: 48.0625em){.govuk-header__logo{width:33.33%;padding-right:15px;float:left;vertical-align:top}.govuk-header__logo:last-child{width:auto;padding-right:0;float:none}}@media (min-width: 48.0625em){.govuk-header__content{width:66.66%;padding-left:15px;float:left}}.govuk-header__menu-button{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:.875rem;line-height:1.1428571429;position:absolute;top:13px;right:0;max-width:80px;min-height:24px;margin:0;padding:0;border:0;color:#fff;background:none;word-break:break-all;cursor:pointer}@media print{.govuk-header__menu-button{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-header__menu-button{font-size:1rem;line-height:1.25}}@media print{.govuk-header__menu-button{font-size:14pt;line-height:1.2}}.govuk-header__menu-button:hover{-webkit-text-decoration:solid underline 3px;text-decoration:solid underline 3px;text-underline-offset:.1578em}.govuk-header__menu-button:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-header__menu-button:after{display:inline-block;width:0;height:0;border-style:solid;border-color:transparent;-webkit-clip-path:polygon(0% 0%,50% 100%,100% 0%);clip-path:polygon(0% 0%,50% 100%,100% 0%);border-width:8.66px 5px 0 5px;border-top-color:inherit;content:"";margin-left:5px}.govuk-header__menu-button[aria-expanded=true]:after{display:inline-block;width:0;height:0;border-style:solid;border-color:transparent;-webkit-clip-path:polygon(50% 0%,0% 100%,100% 100%);clip-path:polygon(50% 0%,0% 100%,100% 100%);border-width:0 5px 8.66px 5px;border-bottom-color:inherit}@media (min-width: 40.0625em){.govuk-header__menu-button{top:15px}}.govuk-frontend-supported .govuk-header__menu-button{display:block}.govuk-header__menu-button[hidden],.govuk-frontend-supported .govuk-header__menu-button[hidden]{display:none}@media (min-width: 48.0625em){.govuk-header__navigation{margin-bottom:10px}}.govuk-header__navigation-list{margin:0;padding:0;list-style:none}.govuk-header__navigation-list[hidden]{display:none}@media (min-width: 48.0625em){.govuk-header__navigation--end{margin:0;padding:5px 0;text-align:right}}.govuk-header__navigation-item{padding:10px 0;border-bottom:1px solid #2e3133}@media (min-width: 48.0625em){.govuk-header__navigation-item{display:inline-block;margin-right:15px;padding:5px 0;border:0}}.govuk-header__navigation-item a{font-size:.875rem;line-height:1.1428571429;font-weight:700;white-space:nowrap}@media (min-width: 40.0625em){.govuk-header__navigation-item a{font-size:1rem;line-height:1.25}}@media print{.govuk-header__navigation-item a{font-size:14pt;line-height:1.2}}.govuk-header__navigation-item--active a:link,.govuk-header__navigation-item--active a:hover,.govuk-header__navigation-item--active a:visited{color:#1d8feb}@media print{.govuk-header__navigation-item--active a{color:#1d70b8}}.govuk-header__navigation-item--active a:focus{color:#0b0c0c}.govuk-header__navigation-item:last-child{margin-right:0;border-bottom:0}@media print{.govuk-header{border-bottom-width:0;color:#0b0c0c;background:transparent}.govuk-header__link:link,.govuk-header__link:visited{color:#0b0c0c}.govuk-header__link:after{display:none}}.govuk-inset-text{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;color:#0b0c0c;padding:15px;margin-top:20px;margin-bottom:20px;clear:both;border-left:10px solid #b1b4b6}@media print{.govuk-inset-text{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-inset-text{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-inset-text{font-size:14pt;line-height:1.15}}@media print{.govuk-inset-text{color:#000}}@media (min-width: 40.0625em){.govuk-inset-text{margin-top:30px}}@media (min-width: 40.0625em){.govuk-inset-text{margin-bottom:30px}}.govuk-inset-text>:first-child{margin-top:0}.govuk-inset-text>:only-child,.govuk-inset-text>:last-child{margin-bottom:0}.govuk-notification-banner{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;margin-bottom:30px;border:5px solid #1d70b8;background-color:#1d70b8}@media print{.govuk-notification-banner{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-notification-banner{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-notification-banner{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-notification-banner{margin-bottom:50px}}.govuk-notification-banner:focus{outline:3px solid #ffdd00}.govuk-notification-banner__header{padding:2px 15px 5px;border-bottom:1px solid transparent}@media (min-width: 40.0625em){.govuk-notification-banner__header{padding:2px 20px 5px}}.govuk-notification-banner__title{font-size:1rem;line-height:1.25;font-weight:700;margin:0;padding:0;color:#fff}@media (min-width: 40.0625em){.govuk-notification-banner__title{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-notification-banner__title{font-size:14pt;line-height:1.15}}.govuk-notification-banner__content{color:#0b0c0c;padding:15px;background-color:#fff}@media print{.govuk-notification-banner__content{color:#000}}@media (min-width: 40.0625em){.govuk-notification-banner__content{padding:20px}}.govuk-notification-banner__content>*{box-sizing:border-box;max-width:605px}.govuk-notification-banner__content>:last-child{margin-bottom:0}.govuk-notification-banner__heading{font-size:1.125rem;line-height:1.1111111111;font-weight:700;margin:0 0 15px;padding:0}@media (min-width: 40.0625em){.govuk-notification-banner__heading{font-size:1.5rem;line-height:1.25}}@media print{.govuk-notification-banner__heading{font-size:18pt;line-height:1.15}}.govuk-notification-banner__link{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em}@media print{.govuk-notification-banner__link{font-family:sans-serif}}.govuk-notification-banner__link:hover{text-decoration-thickness:max(3px,.1875rem,.12em);-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;text-decoration-skip:none}.govuk-notification-banner__link:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-notification-banner__link:link,.govuk-notification-banner__link:visited{color:#1d70b8}.govuk-notification-banner__link:hover{color:#003078}.govuk-notification-banner__link:active{color:#0b0c0c}.govuk-notification-banner__link:focus{color:#0b0c0c}.govuk-notification-banner--success{border-color:#00703c;background-color:#00703c}.govuk-notification-banner--success .govuk-notification-banner__link:link,.govuk-notification-banner--success .govuk-notification-banner__link:visited{color:#00703c}.govuk-notification-banner--success .govuk-notification-banner__link:hover{color:#004e2a}.govuk-notification-banner--success .govuk-notification-banner__link:active{color:#00703c}.govuk-notification-banner--success .govuk-notification-banner__link:focus{color:#0b0c0c}.govuk-pagination{margin-bottom:20px;display:flex;flex-direction:column;align-items:center;flex-wrap:wrap}@media (min-width: 40.0625em){.govuk-pagination{margin-bottom:30px}}@media (min-width: 40.0625em){.govuk-pagination{flex-direction:row;align-items:flex-start}}.govuk-pagination__list{margin:0;padding:0;list-style:none}.govuk-pagination__item,.govuk-pagination__next,.govuk-pagination__prev{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;box-sizing:border-box;position:relative;min-width:45px;min-height:45px;padding:10px 15px;float:left}@media print{.govuk-pagination__item,.govuk-pagination__next,.govuk-pagination__prev{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-pagination__item,.govuk-pagination__next,.govuk-pagination__prev{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-pagination__item,.govuk-pagination__next,.govuk-pagination__prev{font-size:14pt;line-height:1.15}}.govuk-pagination__item:hover,.govuk-pagination__next:hover,.govuk-pagination__prev:hover{background-color:#f3f2f1}.govuk-pagination__item{display:none;text-align:center}@media (min-width: 40.0625em){.govuk-pagination__item{display:block}}.govuk-pagination__prev,.govuk-pagination__next{font-weight:700}.govuk-pagination__prev .govuk-pagination__link,.govuk-pagination__next .govuk-pagination__link{display:flex;align-items:center}.govuk-pagination__prev{padding-left:0}.govuk-pagination__next{padding-right:0}.govuk-pagination__item--current,.govuk-pagination__item--ellipses,.govuk-pagination__item:first-child,.govuk-pagination__item:last-child{display:block}.govuk-pagination__item--current{font-weight:700;outline:1px solid transparent;background-color:#1d70b8}.govuk-pagination__item--current:hover{background-color:#1d70b8}.govuk-pagination__item--current .govuk-pagination__link:link,.govuk-pagination__item--current .govuk-pagination__link:visited{color:#fff}.govuk-pagination__item--current .govuk-pagination__link:hover,.govuk-pagination__item--current .govuk-pagination__link:active{color:rgba(255,255,255,.99)}.govuk-pagination__item--current .govuk-pagination__link:focus{color:#0b0c0c}.govuk-pagination__item--ellipses{font-weight:700;color:#505a5f}.govuk-pagination__item--ellipses:hover{background-color:transparent}.govuk-pagination__link{display:block;min-width:15px}@media screen{.govuk-pagination__link:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}}.govuk-pagination__link:hover .govuk-pagination__link-title--decorated,.govuk-pagination__link:active .govuk-pagination__link-title--decorated{text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em}.govuk-pagination__link:hover .govuk-pagination__link-label,.govuk-pagination__link:hover .govuk-pagination__link-title--decorated,.govuk-pagination__link:active .govuk-pagination__link-label,.govuk-pagination__link:active .govuk-pagination__link-title--decorated{text-decoration-thickness:max(3px,.1875rem,.12em);-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;text-decoration-skip:none}.govuk-pagination__link:focus .govuk-pagination__icon{color:#0b0c0c}.govuk-pagination__link:focus .govuk-pagination__link-label{text-decoration:none}.govuk-pagination__link:focus .govuk-pagination__link-title--decorated{text-decoration:none}.govuk-pagination__link-label{font-weight:400;text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em;display:inline-block;padding-left:30px}.govuk-pagination__icon{width:.9375rem;height:.8125rem;color:#505a5f;fill:currentcolor;forced-color-adjust:auto}.govuk-pagination__icon--prev{margin-right:15px}.govuk-pagination__icon--next{margin-left:15px}.govuk-pagination--block{display:block}.govuk-pagination--block .govuk-pagination__item{padding:15px;float:none}.govuk-pagination--block .govuk-pagination__next,.govuk-pagination--block .govuk-pagination__prev{padding-left:0;float:none}.govuk-pagination--block .govuk-pagination__next{padding-right:15px}.govuk-pagination--block .govuk-pagination__next .govuk-pagination__icon{margin-left:0}.govuk-pagination--block .govuk-pagination__prev+.govuk-pagination__next{border-top:1px solid #b1b4b6}.govuk-pagination--block .govuk-pagination__link,.govuk-pagination--block .govuk-pagination__link-title{display:inline}.govuk-pagination--block .govuk-pagination__link-title:after{content:"";display:block}.govuk-pagination--block .govuk-pagination__link{text-align:left}.govuk-pagination--block .govuk-pagination__link:focus .govuk-pagination__link-label{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-pagination--block .govuk-pagination__link:not(:focus){text-decoration:none}.govuk-pagination--block .govuk-pagination__icon{margin-right:10px}.govuk-panel{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1.5rem;line-height:1.0416666667;box-sizing:border-box;margin-bottom:15px;padding:35px;border:5px solid transparent;text-align:center}@media print{.govuk-panel{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-panel{font-size:2.25rem;line-height:1.1111111111}}@media print{.govuk-panel{font-size:24pt;line-height:1.05}}@media (max-width: 40.0525em){.govuk-panel{padding:10px;overflow-wrap:break-word;word-wrap:break-word}}.govuk-panel--confirmation{color:#fff;background:#00703c}@media print{.govuk-panel--confirmation{border-color:currentcolor;color:#000;background:none}}.govuk-panel__title{font-size:2rem;line-height:1.09375;font-weight:700;margin-top:0;margin-bottom:30px}@media (min-width: 40.0625em){.govuk-panel__title{font-size:3rem;line-height:1.0416666667}}@media print{.govuk-panel__title{font-size:32pt;line-height:1.15}}.govuk-panel__title:last-child{margin-bottom:0}.govuk-tag{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;display:inline-block;max-width:160px;margin-top:-2px;margin-bottom:-3px;padding:2px 8px 3px;color:#0c2d4a;background-color:#bbd4ea;text-decoration:none;overflow-wrap:break-word}@media print{.govuk-tag{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-tag{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-tag{font-size:14pt;line-height:1.15}}@media screen and (forced-colors: active){.govuk-tag{font-weight:700}}.govuk-tag--grey{color:#282d30;background-color:#e5e6e7}.govuk-tag--purple{color:#491644;background-color:#efdfed}.govuk-tag--turquoise{color:#10403c;background-color:#d4ecea}.govuk-tag--blue{color:#0c2d4a;background-color:#bbd4ea}.govuk-tag--light-blue{color:#0c2d4a;background-color:#e8f1f8}.govuk-tag--yellow{color:#594d00;background-color:#fff7bf}.govuk-tag--orange{color:#6e3619;background-color:#fcd6c3}.govuk-tag--red{color:#2a0b06;background-color:#f4cdc6}.govuk-tag--pink{color:#6b1c40;background-color:#f9e1ec}.govuk-tag--green{color:#005a30;background-color:#cce2d8}.govuk-phase-banner{padding-top:10px;padding-bottom:10px;border-bottom:1px solid #b1b4b6}.govuk-phase-banner__content{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:.875rem;line-height:1.1428571429;color:#0b0c0c;display:table;margin:0}@media print{.govuk-phase-banner__content{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-phase-banner__content{font-size:1rem;line-height:1.25}}@media print{.govuk-phase-banner__content{font-size:14pt;line-height:1.2}}@media print{.govuk-phase-banner__content{color:#000}}.govuk-phase-banner__content__tag{font-size:.875rem;line-height:1.1428571429;margin-right:10px}@media (min-width: 40.0625em){.govuk-phase-banner__content__tag{font-size:1rem;line-height:1.25}}@media print{.govuk-phase-banner__content__tag{font-size:14pt;line-height:1.2}}@media screen and (forced-colors: active){.govuk-phase-banner__content__tag{font-weight:700}}.govuk-phase-banner__text{display:table-cell;vertical-align:middle}.govuk-radios__item{display:flex;flex-wrap:wrap;position:relative;margin-bottom:10px}.govuk-radios__item:last-child,.govuk-radios__item:last-of-type{margin-bottom:0}.govuk-radios__input{width:44px;height:44px;margin:0;opacity:0;cursor:pointer}.govuk-radios__label{align-self:center;max-width:calc(100% - 74px);margin-bottom:0;padding:7px 15px;cursor:pointer;touch-action:manipulation}.govuk-radios__label:before{content:"";box-sizing:border-box;position:absolute;top:2px;left:2px;width:40px;height:40px;border:2px solid currentcolor;border-radius:50%;background:transparent}.govuk-radios__label:after{content:"";position:absolute;top:12px;left:12px;width:0;height:0;border:10px solid currentcolor;border-radius:50%;opacity:0;background:currentcolor}.govuk-radios__hint{display:block;width:100%;margin-top:-5px;padding-right:15px;padding-left:59px}.govuk-label:not(.govuk-label--m):not(.govuk-label--l):not(.govuk-label--xl)+.govuk-radios__hint{margin-bottom:0}.govuk-radios__input:focus+.govuk-radios__label:before{border-width:4px;outline:3px solid transparent;outline-offset:1px;box-shadow:0 0 0 4px #fd0}@media screen and (forced-colors: active),(-ms-high-contrast: active){.govuk-radios__input:focus+.govuk-radios__label:before{outline-color:Highlight}}.govuk-radios__input:checked+.govuk-radios__label:after{opacity:1}.govuk-radios__input:disabled,.govuk-radios__input:disabled+.govuk-radios__label{cursor:not-allowed}.govuk-radios__input:disabled+.govuk-radios__label,.govuk-radios__input:disabled~.govuk-hint{opacity:.5}@media (min-width: 40.0625em){.govuk-radios--inline{display:flex;flex-wrap:wrap;align-items:flex-start}.govuk-radios--inline .govuk-radios__item{margin-right:20px}}.govuk-radios__divider{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;color:#0b0c0c;width:40px;margin-bottom:10px;text-align:center}@media print{.govuk-radios__divider{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-radios__divider{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-radios__divider{font-size:14pt;line-height:1.15}}@media print{.govuk-radios__divider{color:#000}}.govuk-radios__conditional{margin-bottom:15px;margin-left:18px;padding-left:33px;border-left:4px solid #b1b4b6}@media (min-width: 40.0625em){.govuk-radios__conditional{margin-bottom:20px}}.govuk-frontend-supported .govuk-radios__conditional--hidden{display:none}.govuk-radios__conditional>:last-child{margin-bottom:0}.govuk-radios--small .govuk-radios__item{margin-bottom:0}.govuk-radios--small .govuk-radios__input{margin-left:-10px}.govuk-radios--small .govuk-radios__label{padding-left:1px}.govuk-radios--small .govuk-radios__label:before{top:10px;left:0;width:24px;height:24px}.govuk-radios--small .govuk-radios__label:after{top:17px;left:7px;border-width:5px}.govuk-radios--small .govuk-radios__hint{padding-left:34px}.govuk-radios--small .govuk-radios__conditional{margin-left:10px;padding-left:20px}.govuk-radios--small .govuk-radios__divider{width:24px;margin-bottom:5px}.govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:not(:disabled)+.govuk-radios__label:before{outline:4px dashed transparent;outline-offset:1px;box-shadow:0 0 0 10px #b1b4b6}.govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:focus+.govuk-radios__label:before{box-shadow:0 0 0 4px #fd0 0 0 0 10px #b1b4b6}@media screen and (forced-colors: active),(-ms-high-contrast: active){.govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:focus+.govuk-radios__label:before{outline-color:Highlight}}@media (hover: none),(pointer: coarse){.govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:not(:disabled)+.govuk-radios__label:before{box-shadow:initial}.govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:focus+.govuk-radios__label:before{box-shadow:0 0 0 4px #fd0}}.govuk-select{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;box-sizing:border-box;min-width:11.5em;max-width:100%;height:2.5rem;padding:5px;border:2px solid #0b0c0c;color:#0b0c0c;background-color:#fff}@media print{.govuk-select{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-select{font-size:1.1875rem;line-height:1.25}}@media print{.govuk-select{font-size:14pt;line-height:1.25}}.govuk-select:focus{outline:3px solid #ffdd00;outline-offset:0;box-shadow:inset 0 0 0 2px}.govuk-select:disabled{opacity:.5;color:inherit;cursor:not-allowed}.govuk-select option:active,.govuk-select option:checked,.govuk-select:focus::-ms-value{color:#fff;background-color:#1d70b8}.govuk-select--error{border-color:#d4351c}.govuk-select--error:focus{border-color:#0b0c0c}.govuk-skip-link{position:absolute!important;width:1px!important;height:1px!important;margin:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;white-space:nowrap!important;-webkit-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;user-select:none;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em;font-size:.875rem;line-height:1.1428571429;display:block;padding:10px 15px}.govuk-skip-link:active,.govuk-skip-link:focus{position:static!important;width:auto!important;height:auto!important;margin:inherit!important;overflow:visible!important;clip:auto!important;-webkit-clip-path:none!important;clip-path:none!important;white-space:inherit!important;-webkit-user-select:text;-ms-user-select:text;-moz-user-select:text;user-select:text}@media print{.govuk-skip-link{font-family:sans-serif}}.govuk-skip-link:link,.govuk-skip-link:visited{color:#0b0c0c}@media print{.govuk-skip-link:link,.govuk-skip-link:visited{color:#000}}.govuk-skip-link:hover{color:rgba(11,12,12,.99)}.govuk-skip-link:active,.govuk-skip-link:focus{color:#0b0c0c}@media print{.govuk-skip-link:active,.govuk-skip-link:focus{color:#000}}@media (min-width: 40.0625em){.govuk-skip-link{font-size:1rem;line-height:1.25}}@media print{.govuk-skip-link{font-size:14pt;line-height:1.2}}@supports (padding: max(0px)){.govuk-skip-link{padding-right:max(15px,calc(15px + env(safe-area-inset-right)));padding-left:max(15px,calc(15px + env(safe-area-inset-left)))}}.govuk-skip-link:focus{outline:3px solid #ffdd00;outline-offset:0;background-color:#fd0}.govuk-skip-link-focused-element:focus{outline:none}.govuk-summary-list{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;color:#0b0c0c;margin:0 0 20px}@media print{.govuk-summary-list{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-summary-list{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-summary-list{font-size:14pt;line-height:1.15}}@media print{.govuk-summary-list{color:#000}}@media (min-width: 40.0625em){.govuk-summary-list{display:table;width:100%;table-layout:fixed;border-collapse:collapse}}@media (min-width: 40.0625em){.govuk-summary-list{margin-bottom:30px}}.govuk-summary-list__row{border-bottom:1px solid #b1b4b6}@media (max-width: 40.0525em){.govuk-summary-list__row{margin-bottom:15px}}@media (min-width: 40.0625em){.govuk-summary-list__row{display:table-row}}.govuk-summary-list__row:not(.govuk-summary-list__row--no-actions)>:last-child{padding-right:0}@media (min-width: 40.0625em){.govuk-summary-list__row--no-actions:after{content:"";display:table-cell;width:20%}}.govuk-summary-list__key,.govuk-summary-list__value,.govuk-summary-list__actions{margin:0}@media (min-width: 40.0625em){.govuk-summary-list__key,.govuk-summary-list__value,.govuk-summary-list__actions{display:table-cell;padding-top:10px;padding-right:20px;padding-bottom:10px}}.govuk-summary-list__actions{margin-bottom:15px}@media (min-width: 40.0625em){.govuk-summary-list__actions{width:20%;text-align:right}}.govuk-summary-list__key,.govuk-summary-list__value{word-wrap:break-word;overflow-wrap:break-word}.govuk-summary-list__key{margin-bottom:5px;font-weight:700}@media (min-width: 40.0625em){.govuk-summary-list__key{width:30%}}@media (max-width: 40.0525em){.govuk-summary-list__value{margin-bottom:15px}}.govuk-summary-list__value>p{margin-bottom:10px}.govuk-summary-list__value>:last-child{margin-bottom:0}.govuk-summary-list__actions-list{width:100%;margin:0;padding:0}.govuk-summary-list__actions-list-item{display:inline-block}@media (max-width: 40.0525em){.govuk-summary-list__actions-list-item{margin-right:10px;padding-right:10px;border-right:1px solid #b1b4b6}.govuk-summary-list__actions-list-item:last-child{margin-right:0;padding-right:0;border:0}}@media (min-width: 40.0625em){.govuk-summary-list__actions-list-item{margin-left:10px;padding-left:10px}.govuk-summary-list__actions-list-item:not(:first-child){border-left:1px solid #b1b4b6}.govuk-summary-list__actions-list-item:first-child{margin-left:0;padding-left:0;border:0}}.govuk-summary-list__actions-list-item .govuk-link:focus{isolation:isolate}.govuk-summary-list--no-border .govuk-summary-list__row{border:0}@media (min-width: 40.0625em){.govuk-summary-list--no-border .govuk-summary-list__key,.govuk-summary-list--no-border .govuk-summary-list__value,.govuk-summary-list--no-border .govuk-summary-list__actions{padding-bottom:11px}}.govuk-summary-list__row--no-border{border:0}@media (min-width: 40.0625em){.govuk-summary-list__row--no-border .govuk-summary-list__key,.govuk-summary-list__row--no-border .govuk-summary-list__value,.govuk-summary-list__row--no-border .govuk-summary-list__actions{padding-bottom:11px}}.govuk-summary-card{margin-bottom:20px;border:1px solid #b1b4b6}@media (min-width: 40.0625em){.govuk-summary-card{margin-bottom:30px}}.govuk-summary-card__title-wrapper{padding:15px;border-bottom:1px solid transparent;background-color:#f3f2f1}@media (min-width: 40.0625em){.govuk-summary-card__title-wrapper{display:flex;justify-content:space-between;flex-wrap:nowrap;padding:15px 20px}}.govuk-summary-card__title{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:1rem;line-height:1.25;color:#0b0c0c;margin:5px 20px 10px 0}@media print{.govuk-summary-card__title{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-summary-card__title{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-summary-card__title{font-size:14pt;line-height:1.15}}@media print{.govuk-summary-card__title{color:#000}}@media (min-width: 40.0625em){.govuk-summary-card__title{margin-bottom:5px}}.govuk-summary-card__actions{font-size:1rem;line-height:1.25;font-weight:700;display:flex;flex-wrap:wrap;row-gap:10px;margin:5px 0;padding:0;list-style:none}@media (min-width: 40.0625em){.govuk-summary-card__actions{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-summary-card__actions{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-summary-card__actions{justify-content:right;text-align:right}}.govuk-summary-card__action{display:inline;margin:0 10px 0 0;padding-right:10px;border-right:1px solid #b1b4b6}@media (min-width: 40.0625em){.govuk-summary-card__action{margin-right:0}}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.govuk-summary-card__action{margin-bottom:5px}}.govuk-summary-card__action:last-child{margin:0;padding-right:0;border-right:none}@media (min-width: 40.0625em){.govuk-summary-card__action:last-child{padding-left:10px}}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.govuk-summary-card__action:last-child{margin-bottom:0}}.govuk-summary-card__content{padding:15px 15px 0}@media (min-width: 40.0625em){.govuk-summary-card__content{padding:15px 20px}}.govuk-summary-card__content .govuk-summary-list{margin-bottom:0}.govuk-summary-card__content .govuk-summary-list__row:last-of-type{margin-bottom:0;border-bottom:none}.govuk-table{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;color:#0b0c0c;width:100%;margin-bottom:20px;border-spacing:0;border-collapse:collapse}@media print{.govuk-table{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-table{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-table{font-size:14pt;line-height:1.15}}@media print{.govuk-table{color:#000}}@media (min-width: 40.0625em){.govuk-table{margin-bottom:30px}}.govuk-table__header{font-weight:700}.govuk-table__header,.govuk-table__cell{padding:10px 20px 10px 0;border-bottom:1px solid #b1b4b6;text-align:left;vertical-align:top}.govuk-table__cell--numeric{font-variant-numeric:tabular-nums}.govuk-table__header--numeric,.govuk-table__cell--numeric{text-align:right}.govuk-table__header:last-child,.govuk-table__cell:last-child{padding-right:0}.govuk-table__caption{font-weight:700;display:table-caption;text-align:left}.govuk-table__caption--xl,.govuk-table__caption--l,.govuk-table__caption--m{margin-bottom:15px}.govuk-table__caption--xl{font-size:2rem;line-height:1.09375}@media (min-width: 40.0625em){.govuk-table__caption--xl{font-size:3rem;line-height:1.0416666667}}@media print{.govuk-table__caption--xl{font-size:32pt;line-height:1.15}}.govuk-table__caption--l{font-size:1.5rem;line-height:1.0416666667}@media (min-width: 40.0625em){.govuk-table__caption--l{font-size:2.25rem;line-height:1.1111111111}}@media print{.govuk-table__caption--l{font-size:24pt;line-height:1.05}}.govuk-table__caption--m{font-size:1.125rem;line-height:1.1111111111}@media (min-width: 40.0625em){.govuk-table__caption--m{font-size:1.5rem;line-height:1.25}}@media print{.govuk-table__caption--m{font-size:18pt;line-height:1.15}}.govuk-tabs{margin-top:5px;margin-bottom:20px;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25}@media (min-width: 40.0625em){.govuk-tabs{margin-bottom:30px}}@media print{.govuk-tabs{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-tabs{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-tabs{font-size:14pt;line-height:1.15}}.govuk-tabs__title{font-size:1rem;line-height:1.25;font-weight:400;color:#0b0c0c;margin-bottom:10px}@media (min-width: 40.0625em){.govuk-tabs__title{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-tabs__title{font-size:14pt;line-height:1.15}}@media print{.govuk-tabs__title{color:#000}}.govuk-tabs__list{margin:0 0 20px;padding:0;list-style:none}@media (min-width: 40.0625em){.govuk-tabs__list{margin-bottom:30px}}.govuk-tabs__list-item{margin-left:25px}.govuk-tabs__list-item:before{color:#0b0c0c;content:"\2014";margin-left:-25px;padding-right:5px}@media print{.govuk-tabs__list-item:before{color:#000}}.govuk-tabs__tab{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em;display:inline-block;margin-bottom:10px}@media print{.govuk-tabs__tab{font-family:sans-serif}}.govuk-tabs__tab:hover{text-decoration-thickness:max(3px,.1875rem,.12em);-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;text-decoration-skip:none}.govuk-tabs__tab:focus{outline:3px solid transparent;color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;-webkit-box-decoration-break:clone;box-decoration-break:clone}.govuk-tabs__tab:link{color:#1d70b8}.govuk-tabs__tab:visited{color:#4c2c92}.govuk-tabs__tab:hover{color:#003078}.govuk-tabs__tab:active{color:#0b0c0c}.govuk-tabs__tab:focus{color:#0b0c0c}.govuk-tabs__panel{margin-bottom:30px}@media (min-width: 40.0625em){.govuk-tabs__panel{margin-bottom:50px}}@media (min-width: 40.0625em){.govuk-frontend-supported .govuk-tabs__list{margin-bottom:0;border-bottom:1px solid #b1b4b6}.govuk-frontend-supported .govuk-tabs__list:after{content:"";display:block;clear:both}.govuk-frontend-supported .govuk-tabs__title{display:none}.govuk-frontend-supported .govuk-tabs__list-item{position:relative;margin-right:5px;margin-bottom:0;margin-left:0;padding:10px 20px;float:left;background-color:#f3f2f1;text-align:center}.govuk-frontend-supported .govuk-tabs__list-item:before{content:none}.govuk-frontend-supported .govuk-tabs__list-item--selected{position:relative;margin-top:-5px;margin-bottom:-1px;padding:14px 19px 16px;border:1px solid #b1b4b6;border-bottom:0;background-color:#fff}.govuk-frontend-supported .govuk-tabs__list-item--selected .govuk-tabs__tab{text-decoration:none}.govuk-frontend-supported .govuk-tabs__tab{margin-bottom:0}.govuk-frontend-supported .govuk-tabs__tab:link,.govuk-frontend-supported .govuk-tabs__tab:visited{color:#0b0c0c}}@media print and (min-width: 40.0625em){.govuk-frontend-supported .govuk-tabs__tab:link,.govuk-frontend-supported .govuk-tabs__tab:visited{color:#000}}@media (min-width: 40.0625em){.govuk-frontend-supported .govuk-tabs__tab:hover{color:rgba(11,12,12,.99)}.govuk-frontend-supported .govuk-tabs__tab:active,.govuk-frontend-supported .govuk-tabs__tab:focus{color:#0b0c0c}}@media print and (min-width: 40.0625em){.govuk-frontend-supported .govuk-tabs__tab:active,.govuk-frontend-supported .govuk-tabs__tab:focus{color:#000}}@media (min-width: 40.0625em){.govuk-frontend-supported .govuk-tabs__tab:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}.govuk-frontend-supported .govuk-tabs__panel{margin-bottom:0;padding:30px 20px;border:1px solid #b1b4b6;border-top:0}.govuk-frontend-supported .govuk-tabs__panel>:last-child{margin-bottom:0}.govuk-frontend-supported .govuk-tabs__panel--hidden{display:none}}.govuk-task-list{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;margin-top:0;margin-bottom:20px;padding:0;list-style-type:none}@media print{.govuk-task-list{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-task-list{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-task-list{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-task-list{margin-bottom:30px}}.govuk-task-list__item{display:table;position:relative;width:100%;margin-bottom:0;padding-top:10px;padding-bottom:10px;border-bottom:1px solid #b1b4b6}.govuk-task-list__item:first-child{border-top:1px solid #b1b4b6}.govuk-task-list__item--with-link:hover{background:#f3f2f1}.govuk-task-list__name-and-hint{display:table-cell;vertical-align:top;color:#0b0c0c}@media print{.govuk-task-list__name-and-hint{color:#000}}.govuk-task-list__status{display:table-cell;padding-left:10px;text-align:right;vertical-align:top;color:#0b0c0c}@media print{.govuk-task-list__status{color:#000}}.govuk-task-list__status--cannot-start-yet{color:#505a5f}.govuk-task-list__link:after{content:"";display:block;position:absolute;top:0;right:0;bottom:0;left:0}.govuk-task-list__hint{margin-top:5px;color:#505a5f}.govuk-warning-text{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;margin-bottom:20px;position:relative;padding:10px 0}@media print{.govuk-warning-text{font-family:sans-serif}}@media (min-width: 40.0625em){.govuk-warning-text{font-size:1.1875rem;line-height:1.3157894737}}@media print{.govuk-warning-text{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.govuk-warning-text{margin-bottom:30px}}.govuk-warning-text__icon{font-weight:700;box-sizing:border-box;display:inline-block;position:absolute;left:0;min-width:35px;min-height:35px;margin-top:-7px;border:3px solid #0b0c0c;border-radius:50%;color:#fff;background:#0b0c0c;font-size:30px;line-height:29px;text-align:center;-webkit-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;user-select:none;forced-color-adjust:none}@media (min-width: 40.0625em){.govuk-warning-text__icon{margin-top:-5px}}@media screen and (forced-colors: active){.govuk-warning-text__icon{border-color:windowText;color:windowText;background:transparent}}.govuk-warning-text__text{color:#0b0c0c;display:block;padding-left:45px}@media print{.govuk-warning-text__text{color:#000}}.govuk-clearfix:after{content:"";display:block;clear:both}.govuk-visually-hidden{position:absolute!important;width:1px!important;height:1px!important;margin:0!important;padding:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;border:0!important;white-space:nowrap!important;-webkit-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;user-select:none}.govuk-visually-hidden:before{content:"\a0"}.govuk-visually-hidden:after{content:"\a0"}.govuk-visually-hidden-focusable{position:absolute!important;width:1px!important;height:1px!important;margin:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;white-space:nowrap!important;-webkit-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;user-select:none}.govuk-visually-hidden-focusable:active,.govuk-visually-hidden-focusable:focus{position:static!important;width:auto!important;height:auto!important;margin:inherit!important;overflow:visible!important;clip:auto!important;-webkit-clip-path:none!important;clip-path:none!important;white-space:inherit!important;-webkit-user-select:text;-ms-user-select:text;-moz-user-select:text;user-select:text}.govuk-\!-display-inline{display:inline!important}.govuk-\!-display-inline-block{display:inline-block!important}.govuk-\!-display-block{display:block!important}.govuk-\!-display-none{display:none!important}@media print{.govuk-\!-display-none-print{display:none!important}}.govuk-\!-margin-0{margin:0!important}.govuk-\!-margin-top-0{margin-top:0!important}.govuk-\!-margin-right-0{margin-right:0!important}.govuk-\!-margin-bottom-0{margin-bottom:0!important}.govuk-\!-margin-left-0{margin-left:0!important}.govuk-\!-margin-1{margin:5px!important}.govuk-\!-margin-top-1{margin-top:5px!important}.govuk-\!-margin-right-1{margin-right:5px!important}.govuk-\!-margin-bottom-1{margin-bottom:5px!important}.govuk-\!-margin-left-1{margin-left:5px!important}.govuk-\!-margin-2{margin:10px!important}.govuk-\!-margin-top-2{margin-top:10px!important}.govuk-\!-margin-right-2{margin-right:10px!important}.govuk-\!-margin-bottom-2{margin-bottom:10px!important}.govuk-\!-margin-left-2{margin-left:10px!important}.govuk-\!-margin-3{margin:15px!important}.govuk-\!-margin-top-3{margin-top:15px!important}.govuk-\!-margin-right-3{margin-right:15px!important}.govuk-\!-margin-bottom-3{margin-bottom:15px!important}.govuk-\!-margin-left-3{margin-left:15px!important}.govuk-\!-margin-4{margin:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-4{margin:20px!important}}.govuk-\!-margin-top-4{margin-top:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-top-4{margin-top:20px!important}}.govuk-\!-margin-right-4{margin-right:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-right-4{margin-right:20px!important}}.govuk-\!-margin-bottom-4{margin-bottom:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-bottom-4{margin-bottom:20px!important}}.govuk-\!-margin-left-4{margin-left:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-left-4{margin-left:20px!important}}.govuk-\!-margin-5{margin:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-5{margin:25px!important}}.govuk-\!-margin-top-5{margin-top:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-top-5{margin-top:25px!important}}.govuk-\!-margin-right-5{margin-right:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-right-5{margin-right:25px!important}}.govuk-\!-margin-bottom-5{margin-bottom:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-bottom-5{margin-bottom:25px!important}}.govuk-\!-margin-left-5{margin-left:15px!important}@media (min-width: 40.0625em){.govuk-\!-margin-left-5{margin-left:25px!important}}.govuk-\!-margin-6{margin:20px!important}@media (min-width: 40.0625em){.govuk-\!-margin-6{margin:30px!important}}.govuk-\!-margin-top-6{margin-top:20px!important}@media (min-width: 40.0625em){.govuk-\!-margin-top-6{margin-top:30px!important}}.govuk-\!-margin-right-6{margin-right:20px!important}@media (min-width: 40.0625em){.govuk-\!-margin-right-6{margin-right:30px!important}}.govuk-\!-margin-bottom-6{margin-bottom:20px!important}@media (min-width: 40.0625em){.govuk-\!-margin-bottom-6{margin-bottom:30px!important}}.govuk-\!-margin-left-6{margin-left:20px!important}@media (min-width: 40.0625em){.govuk-\!-margin-left-6{margin-left:30px!important}}.govuk-\!-margin-7{margin:25px!important}@media (min-width: 40.0625em){.govuk-\!-margin-7{margin:40px!important}}.govuk-\!-margin-top-7{margin-top:25px!important}@media (min-width: 40.0625em){.govuk-\!-margin-top-7{margin-top:40px!important}}.govuk-\!-margin-right-7{margin-right:25px!important}@media (min-width: 40.0625em){.govuk-\!-margin-right-7{margin-right:40px!important}}.govuk-\!-margin-bottom-7{margin-bottom:25px!important}@media (min-width: 40.0625em){.govuk-\!-margin-bottom-7{margin-bottom:40px!important}}.govuk-\!-margin-left-7{margin-left:25px!important}@media (min-width: 40.0625em){.govuk-\!-margin-left-7{margin-left:40px!important}}.govuk-\!-margin-8{margin:30px!important}@media (min-width: 40.0625em){.govuk-\!-margin-8{margin:50px!important}}.govuk-\!-margin-top-8{margin-top:30px!important}@media (min-width: 40.0625em){.govuk-\!-margin-top-8{margin-top:50px!important}}.govuk-\!-margin-right-8{margin-right:30px!important}@media (min-width: 40.0625em){.govuk-\!-margin-right-8{margin-right:50px!important}}.govuk-\!-margin-bottom-8{margin-bottom:30px!important}@media (min-width: 40.0625em){.govuk-\!-margin-bottom-8{margin-bottom:50px!important}}.govuk-\!-margin-left-8{margin-left:30px!important}@media (min-width: 40.0625em){.govuk-\!-margin-left-8{margin-left:50px!important}}.govuk-\!-margin-9{margin:40px!important}@media (min-width: 40.0625em){.govuk-\!-margin-9{margin:60px!important}}.govuk-\!-margin-top-9{margin-top:40px!important}@media (min-width: 40.0625em){.govuk-\!-margin-top-9{margin-top:60px!important}}.govuk-\!-margin-right-9{margin-right:40px!important}@media (min-width: 40.0625em){.govuk-\!-margin-right-9{margin-right:60px!important}}.govuk-\!-margin-bottom-9{margin-bottom:40px!important}@media (min-width: 40.0625em){.govuk-\!-margin-bottom-9{margin-bottom:60px!important}}.govuk-\!-margin-left-9{margin-left:40px!important}@media (min-width: 40.0625em){.govuk-\!-margin-left-9{margin-left:60px!important}}.govuk-\!-padding-0{padding:0!important}.govuk-\!-padding-top-0{padding-top:0!important}.govuk-\!-padding-right-0{padding-right:0!important}.govuk-\!-padding-bottom-0{padding-bottom:0!important}.govuk-\!-padding-left-0{padding-left:0!important}.govuk-\!-padding-1{padding:5px!important}.govuk-\!-padding-top-1{padding-top:5px!important}.govuk-\!-padding-right-1{padding-right:5px!important}.govuk-\!-padding-bottom-1{padding-bottom:5px!important}.govuk-\!-padding-left-1{padding-left:5px!important}.govuk-\!-padding-2{padding:10px!important}.govuk-\!-padding-top-2{padding-top:10px!important}.govuk-\!-padding-right-2{padding-right:10px!important}.govuk-\!-padding-bottom-2{padding-bottom:10px!important}.govuk-\!-padding-left-2{padding-left:10px!important}.govuk-\!-padding-3{padding:15px!important}.govuk-\!-padding-top-3{padding-top:15px!important}.govuk-\!-padding-right-3{padding-right:15px!important}.govuk-\!-padding-bottom-3{padding-bottom:15px!important}.govuk-\!-padding-left-3{padding-left:15px!important}.govuk-\!-padding-4{padding:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-4{padding:20px!important}}.govuk-\!-padding-top-4{padding-top:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-top-4{padding-top:20px!important}}.govuk-\!-padding-right-4{padding-right:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-right-4{padding-right:20px!important}}.govuk-\!-padding-bottom-4{padding-bottom:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-bottom-4{padding-bottom:20px!important}}.govuk-\!-padding-left-4{padding-left:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-left-4{padding-left:20px!important}}.govuk-\!-padding-5{padding:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-5{padding:25px!important}}.govuk-\!-padding-top-5{padding-top:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-top-5{padding-top:25px!important}}.govuk-\!-padding-right-5{padding-right:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-right-5{padding-right:25px!important}}.govuk-\!-padding-bottom-5{padding-bottom:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-bottom-5{padding-bottom:25px!important}}.govuk-\!-padding-left-5{padding-left:15px!important}@media (min-width: 40.0625em){.govuk-\!-padding-left-5{padding-left:25px!important}}.govuk-\!-padding-6{padding:20px!important}@media (min-width: 40.0625em){.govuk-\!-padding-6{padding:30px!important}}.govuk-\!-padding-top-6{padding-top:20px!important}@media (min-width: 40.0625em){.govuk-\!-padding-top-6{padding-top:30px!important}}.govuk-\!-padding-right-6{padding-right:20px!important}@media (min-width: 40.0625em){.govuk-\!-padding-right-6{padding-right:30px!important}}.govuk-\!-padding-bottom-6{padding-bottom:20px!important}@media (min-width: 40.0625em){.govuk-\!-padding-bottom-6{padding-bottom:30px!important}}.govuk-\!-padding-left-6{padding-left:20px!important}@media (min-width: 40.0625em){.govuk-\!-padding-left-6{padding-left:30px!important}}.govuk-\!-padding-7{padding:25px!important}@media (min-width: 40.0625em){.govuk-\!-padding-7{padding:40px!important}}.govuk-\!-padding-top-7{padding-top:25px!important}@media (min-width: 40.0625em){.govuk-\!-padding-top-7{padding-top:40px!important}}.govuk-\!-padding-right-7{padding-right:25px!important}@media (min-width: 40.0625em){.govuk-\!-padding-right-7{padding-right:40px!important}}.govuk-\!-padding-bottom-7{padding-bottom:25px!important}@media (min-width: 40.0625em){.govuk-\!-padding-bottom-7{padding-bottom:40px!important}}.govuk-\!-padding-left-7{padding-left:25px!important}@media (min-width: 40.0625em){.govuk-\!-padding-left-7{padding-left:40px!important}}.govuk-\!-padding-8{padding:30px!important}@media (min-width: 40.0625em){.govuk-\!-padding-8{padding:50px!important}}.govuk-\!-padding-top-8{padding-top:30px!important}@media (min-width: 40.0625em){.govuk-\!-padding-top-8{padding-top:50px!important}}.govuk-\!-padding-right-8{padding-right:30px!important}@media (min-width: 40.0625em){.govuk-\!-padding-right-8{padding-right:50px!important}}.govuk-\!-padding-bottom-8{padding-bottom:30px!important}@media (min-width: 40.0625em){.govuk-\!-padding-bottom-8{padding-bottom:50px!important}}.govuk-\!-padding-left-8{padding-left:30px!important}@media (min-width: 40.0625em){.govuk-\!-padding-left-8{padding-left:50px!important}}.govuk-\!-padding-9{padding:40px!important}@media (min-width: 40.0625em){.govuk-\!-padding-9{padding:60px!important}}.govuk-\!-padding-top-9{padding-top:40px!important}@media (min-width: 40.0625em){.govuk-\!-padding-top-9{padding-top:60px!important}}.govuk-\!-padding-right-9{padding-right:40px!important}@media (min-width: 40.0625em){.govuk-\!-padding-right-9{padding-right:60px!important}}.govuk-\!-padding-bottom-9{padding-bottom:40px!important}@media (min-width: 40.0625em){.govuk-\!-padding-bottom-9{padding-bottom:60px!important}}.govuk-\!-padding-left-9{padding-left:40px!important}@media (min-width: 40.0625em){.govuk-\!-padding-left-9{padding-left:60px!important}}.govuk-\!-static-margin-0{margin:0!important}.govuk-\!-static-margin-top-0{margin-top:0!important}.govuk-\!-static-margin-right-0{margin-right:0!important}.govuk-\!-static-margin-bottom-0{margin-bottom:0!important}.govuk-\!-static-margin-left-0{margin-left:0!important}.govuk-\!-static-margin-1{margin:5px!important}.govuk-\!-static-margin-top-1{margin-top:5px!important}.govuk-\!-static-margin-right-1{margin-right:5px!important}.govuk-\!-static-margin-bottom-1{margin-bottom:5px!important}.govuk-\!-static-margin-left-1{margin-left:5px!important}.govuk-\!-static-margin-2{margin:10px!important}.govuk-\!-static-margin-top-2{margin-top:10px!important}.govuk-\!-static-margin-right-2{margin-right:10px!important}.govuk-\!-static-margin-bottom-2{margin-bottom:10px!important}.govuk-\!-static-margin-left-2{margin-left:10px!important}.govuk-\!-static-margin-3{margin:15px!important}.govuk-\!-static-margin-top-3{margin-top:15px!important}.govuk-\!-static-margin-right-3{margin-right:15px!important}.govuk-\!-static-margin-bottom-3{margin-bottom:15px!important}.govuk-\!-static-margin-left-3{margin-left:15px!important}.govuk-\!-static-margin-4{margin:20px!important}.govuk-\!-static-margin-top-4{margin-top:20px!important}.govuk-\!-static-margin-right-4{margin-right:20px!important}.govuk-\!-static-margin-bottom-4{margin-bottom:20px!important}.govuk-\!-static-margin-left-4{margin-left:20px!important}.govuk-\!-static-margin-5{margin:25px!important}.govuk-\!-static-margin-top-5{margin-top:25px!important}.govuk-\!-static-margin-right-5{margin-right:25px!important}.govuk-\!-static-margin-bottom-5{margin-bottom:25px!important}.govuk-\!-static-margin-left-5{margin-left:25px!important}.govuk-\!-static-margin-6{margin:30px!important}.govuk-\!-static-margin-top-6{margin-top:30px!important}.govuk-\!-static-margin-right-6{margin-right:30px!important}.govuk-\!-static-margin-bottom-6{margin-bottom:30px!important}.govuk-\!-static-margin-left-6{margin-left:30px!important}.govuk-\!-static-margin-7{margin:40px!important}.govuk-\!-static-margin-top-7{margin-top:40px!important}.govuk-\!-static-margin-right-7{margin-right:40px!important}.govuk-\!-static-margin-bottom-7{margin-bottom:40px!important}.govuk-\!-static-margin-left-7{margin-left:40px!important}.govuk-\!-static-margin-8{margin:50px!important}.govuk-\!-static-margin-top-8{margin-top:50px!important}.govuk-\!-static-margin-right-8{margin-right:50px!important}.govuk-\!-static-margin-bottom-8{margin-bottom:50px!important}.govuk-\!-static-margin-left-8{margin-left:50px!important}.govuk-\!-static-margin-9{margin:60px!important}.govuk-\!-static-margin-top-9{margin-top:60px!important}.govuk-\!-static-margin-right-9{margin-right:60px!important}.govuk-\!-static-margin-bottom-9{margin-bottom:60px!important}.govuk-\!-static-margin-left-9{margin-left:60px!important}.govuk-\!-static-padding-0{padding:0!important}.govuk-\!-static-padding-top-0{padding-top:0!important}.govuk-\!-static-padding-right-0{padding-right:0!important}.govuk-\!-static-padding-bottom-0{padding-bottom:0!important}.govuk-\!-static-padding-left-0{padding-left:0!important}.govuk-\!-static-padding-1{padding:5px!important}.govuk-\!-static-padding-top-1{padding-top:5px!important}.govuk-\!-static-padding-right-1{padding-right:5px!important}.govuk-\!-static-padding-bottom-1{padding-bottom:5px!important}.govuk-\!-static-padding-left-1{padding-left:5px!important}.govuk-\!-static-padding-2{padding:10px!important}.govuk-\!-static-padding-top-2{padding-top:10px!important}.govuk-\!-static-padding-right-2{padding-right:10px!important}.govuk-\!-static-padding-bottom-2{padding-bottom:10px!important}.govuk-\!-static-padding-left-2{padding-left:10px!important}.govuk-\!-static-padding-3{padding:15px!important}.govuk-\!-static-padding-top-3{padding-top:15px!important}.govuk-\!-static-padding-right-3{padding-right:15px!important}.govuk-\!-static-padding-bottom-3{padding-bottom:15px!important}.govuk-\!-static-padding-left-3{padding-left:15px!important}.govuk-\!-static-padding-4{padding:20px!important}.govuk-\!-static-padding-top-4{padding-top:20px!important}.govuk-\!-static-padding-right-4{padding-right:20px!important}.govuk-\!-static-padding-bottom-4{padding-bottom:20px!important}.govuk-\!-static-padding-left-4{padding-left:20px!important}.govuk-\!-static-padding-5{padding:25px!important}.govuk-\!-static-padding-top-5{padding-top:25px!important}.govuk-\!-static-padding-right-5{padding-right:25px!important}.govuk-\!-static-padding-bottom-5{padding-bottom:25px!important}.govuk-\!-static-padding-left-5{padding-left:25px!important}.govuk-\!-static-padding-6{padding:30px!important}.govuk-\!-static-padding-top-6{padding-top:30px!important}.govuk-\!-static-padding-right-6{padding-right:30px!important}.govuk-\!-static-padding-bottom-6{padding-bottom:30px!important}.govuk-\!-static-padding-left-6{padding-left:30px!important}.govuk-\!-static-padding-7{padding:40px!important}.govuk-\!-static-padding-top-7{padding-top:40px!important}.govuk-\!-static-padding-right-7{padding-right:40px!important}.govuk-\!-static-padding-bottom-7{padding-bottom:40px!important}.govuk-\!-static-padding-left-7{padding-left:40px!important}.govuk-\!-static-padding-8{padding:50px!important}.govuk-\!-static-padding-top-8{padding-top:50px!important}.govuk-\!-static-padding-right-8{padding-right:50px!important}.govuk-\!-static-padding-bottom-8{padding-bottom:50px!important}.govuk-\!-static-padding-left-8{padding-left:50px!important}.govuk-\!-static-padding-9{padding:60px!important}.govuk-\!-static-padding-top-9{padding-top:60px!important}.govuk-\!-static-padding-right-9{padding-right:60px!important}.govuk-\!-static-padding-bottom-9{padding-bottom:60px!important}.govuk-\!-static-padding-left-9{padding-left:60px!important}.govuk-\!-text-align-left{text-align:left!important}.govuk-\!-text-align-centre{text-align:center!important}.govuk-\!-text-align-right{text-align:right!important}.govuk-\!-font-size-80{font-size:3.3125rem!important;line-height:1.0377358491!important}@media (min-width: 40.0625em){.govuk-\!-font-size-80{font-size:5rem!important;line-height:1!important}}@media print{.govuk-\!-font-size-80{font-size:53pt!important;line-height:1.1!important}}.govuk-\!-font-size-48{font-size:2rem!important;line-height:1.09375!important}@media (min-width: 40.0625em){.govuk-\!-font-size-48{font-size:3rem!important;line-height:1.0416666667!important}}@media print{.govuk-\!-font-size-48{font-size:32pt!important;line-height:1.15!important}}.govuk-\!-font-size-36{font-size:1.5rem!important;line-height:1.0416666667!important}@media (min-width: 40.0625em){.govuk-\!-font-size-36{font-size:2.25rem!important;line-height:1.1111111111!important}}@media print{.govuk-\!-font-size-36{font-size:24pt!important;line-height:1.05!important}}.govuk-\!-font-size-27{font-size:1.125rem!important;line-height:1.1111111111!important}@media (min-width: 40.0625em){.govuk-\!-font-size-27{font-size:1.6875rem!important;line-height:1.1111111111!important}}@media print{.govuk-\!-font-size-27{font-size:18pt!important;line-height:1.15!important}}.govuk-\!-font-size-24{font-size:1.125rem!important;line-height:1.1111111111!important}@media (min-width: 40.0625em){.govuk-\!-font-size-24{font-size:1.5rem!important;line-height:1.25!important}}@media print{.govuk-\!-font-size-24{font-size:18pt!important;line-height:1.15!important}}.govuk-\!-font-size-19{font-size:1rem!important;line-height:1.25!important}@media (min-width: 40.0625em){.govuk-\!-font-size-19{font-size:1.1875rem!important;line-height:1.3157894737!important}}@media print{.govuk-\!-font-size-19{font-size:14pt!important;line-height:1.15!important}}.govuk-\!-font-size-16{font-size:.875rem!important;line-height:1.1428571429!important}@media (min-width: 40.0625em){.govuk-\!-font-size-16{font-size:1rem!important;line-height:1.25!important}}@media print{.govuk-\!-font-size-16{font-size:14pt!important;line-height:1.2!important}}.govuk-\!-font-size-14{font-size:.75rem!important;line-height:1.25!important}@media (min-width: 40.0625em){.govuk-\!-font-size-14{font-size:.875rem!important;line-height:1.4285714286!important}}@media print{.govuk-\!-font-size-14{font-size:12pt!important;line-height:1.2!important}}.govuk-\!-font-weight-regular{font-weight:400!important}.govuk-\!-font-weight-bold{font-weight:700!important}.govuk-\!-width-full,.govuk-\!-width-three-quarters{width:100%!important}@media (min-width: 40.0625em){.govuk-\!-width-three-quarters{width:75%!important}}.govuk-\!-width-two-thirds{width:100%!important}@media (min-width: 40.0625em){.govuk-\!-width-two-thirds{width:66.66%!important}}.govuk-\!-width-one-half{width:100%!important}@media (min-width: 40.0625em){.govuk-\!-width-one-half{width:50%!important}}.govuk-\!-width-one-third{width:100%!important}@media (min-width: 40.0625em){.govuk-\!-width-one-third{width:33.33%!important}}.govuk-\!-width-one-quarter{width:100%!important}@media (min-width: 40.0625em){.govuk-\!-width-one-quarter{width:25%!important}}.app-task-list{list-style-type:none;padding-left:0;margin-top:0;margin-bottom:0}@media (min-width: 40.0625em){.app-task-list{min-width:550px}}.app-task-list__items{width:44em}.app-task-list__section{display:table;font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:18px;font-size:1.125rem;line-height:1.1111111111}@media print{.app-task-list__section{font-family:sans-serif}}@media (min-width: 40.0625em){.app-task-list__section{font-size:24px;font-size:1.5rem;line-height:1.25}}@media print{.app-task-list__section{font-size:18pt;line-height:1.15}}.app-task-list__section-number{display:table-cell}@media (min-width: 40.0625em){.app-task-list__section-number{min-width:30px;padding-right:0}}.app-task-list__items{font-family:GDS Transport,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:16px;font-size:1rem;line-height:1.25;margin-bottom:40px;list-style:none;padding-left:0}@media print{.app-task-list__items{font-family:sans-serif}}@media (min-width: 40.0625em){.app-task-list__items{font-size:19px;font-size:1.1875rem;line-height:1.3157894737}}@media print{.app-task-list__items{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.app-task-list__items{margin-bottom:60px}}.app-task-list__item{border-bottom:1px solid #b1b4b6;margin-bottom:0!important;padding-top:10px;padding-bottom:10px}.app-task-list__item:after{content:"";display:block;clear:both}.app-task-list__item:first-child{border-top:1px solid #b1b4b6}.app-task-list__task-name{display:block}@media (min-width: 28.125em){.app-task-list__task-name{float:left}}.app-task-list__tag,.app-task-list__task-completed{margin-top:10px;margin-bottom:5px}@media (min-width: 28.125em){.app-task-list__tag,.app-task-list__task-completed{float:right;margin-top:0;margin-bottom:0}}#checkYourAnswers-page .spacer{content:" "!important;display:block!important}@media (min-width: 40.0625em){#checkYourAnswers-page .govuk-summary-list__key{width:100%}#checkYourAnswers-page .govuk-summary-list__actions{width:0}}#checkYourAnswers-page dl.govuk-summary-list.govuk-\!-margin-bottom-9{border-top:1px solid #b1b4b6}#checkYourAnswers-page h3.govuk-body-l{color:gray;margin-bottom:5px}#checkYourAnswers-page .govuk-heading-xl{font-size:2.5rem;margin-bottom:25px}.app-related-items{border-top:2px solid #347ca9;padding-top:10px}.app-related-items .govuk-list>li{margin-bottom:10px}.dfe-section-card{padding:16px;margin-bottom:20px;flex:1;background-color:#f3f2f1}.dfe-section-card__container{display:flex;width:100}@media (max-width: 40.0525em){.dfe-section-card__container{display:grid;width:100}}strong.app-task-list__task-name>p.govuk-error-message{margin-bottom:0}rich-text>p.govuk-body{margin-top:15px;margin-bottom:15px}@media (min-width: 40.0625em){.govuk-body,.govuk-body-m{margin-bottom:10px}h2,.dfe-heading-l,.govuk-heading-l{margin-top:45px}h3,.dfe-heading-s,.govuk-heading-s,.dfe-headin-m{padding-top:10px;margin-top:35px}rich-text>p.govuk-body{margin-top:20px;margin-bottom:20px}}.govuk-header{background-color:#003a69}.govuk-header__container{position:relative;margin-bottom:-10px;padding-top:25px;padding-bottom:15px;border-bottom:10px solid #347ca9}.govuk-header__product-name,.govuk-header__logotype-text{line-height:2.5rem!important;font-size:1.2rem}.app-header .govuk-header__logo{width:85%}.app-header .govuk-header__content{width:0}.govuk-header__logotype-crown-fallback-image{height:45px;width:45px}.govuk-header__logotype-text:after{content:"|"}.govuk-header__logotype{margin-right:0}.govuk-header__navigation-item--active a:link,.govuk-header__navigation-item--active a:hover,.govuk-header__navigation-item--active a:visited{color:#f3f2f1;text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:.1em}.edf-hero-banner{margin-top:-10px!important;margin-bottom:40px}@media (max-width: 40.0625em){.govuk-header__product-name{max-width:80%;line-height:1.2rem!important;font-size:1rem}.govuk-header__logotype-text{min-width:100%;line-height:2.2rem!important;font-size:1rem}.edf-hero-banner{margin-top:0!important;margin-bottom:20px}}.app-section-beta{padding:30px 0}.app-section-beta__blue{background-color:#347ca9}.body-header-font{color:#fff}button,input,select,textarea{font-family:inherit}html{background-color:#fff;overflow-y:scroll;font-family:BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",Sans-serif}body{background-color:#fff;color:#0b0c0c;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:1.33333;margin:0;min-height:100%}table{margin-bottom:40px;border-spacing:0;vertical-align:top;width:100%}@media (min-width: 40.0625em){table{margin-bottom:48px}}@media print{table{page-break-inside:avoid}}thead th{border-bottom:2px solid #f3f2f1}th,td{font-size:16px;font-size:1;line-height:1.33333;padding-bottom:8px;padding-right:16px;padding-top:8px;border-bottom:1px solid #f3f2f1;text-align:left;vertical-align:top}@media (min-width: 40.0625em){th,td{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{th,td{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){th,td{padding-bottom:16px}}@media (min-width: 40.0625em){th,td{padding-right:24px}}@media (min-width: 40.0625em){th,td{padding-top:16px}}th:last-child,td:last-child{padding-right:0}th{font-weight:700}caption{font-weight:700;font-size:18px;font-size:1.125;line-height:1.33333;text-align:left}@media (min-width: 40.0625em){caption{font-size:22px;font-size:1.375;line-height:1.33333}}@media print{caption{font-size:18pt;line-height:1.15}}.dfe-form-group{margin-bottom:16px}@media (min-width: 40.0625em){.dfe-form-group{margin-bottom:24px}}.dfe-form-group .dfe-form-group:last-of-type{margin-bottom:0}.dfe-form-group--wrapper{margin-bottom:24px}@media (min-width: 40.0625em){.dfe-form-group--wrapper{margin-bottom:32px}}.dfe-form-group--error{border-left:4px solid #d4351c;padding-left:16px}.dfe-form-group--error .dfe-form-group{border:0;padding:0}.dfe-grid-row{margin-left:-16px;margin-right:-16px}.dfe-grid-row:after{clear:both;content:"";display:block}.dfe-grid-column-one-quarter{box-sizing:border-box;padding:0 16px}@media (min-width: 48.0625em){.dfe-grid-column-one-quarter{float:left;width:25%}}.dfe-grid-column-one-third{box-sizing:border-box;padding:0 16px}@media (min-width: 48.0625em){.dfe-grid-column-one-third{float:left;width:33.3333%}}.dfe-grid-column-one-half{box-sizing:border-box;padding:0 16px}@media (min-width: 48.0625em){.dfe-grid-column-one-half{float:left;width:50%}}.dfe-grid-column-two-thirds{box-sizing:border-box;padding:0 16px}@media (min-width: 48.0625em){.dfe-grid-column-two-thirds{float:left;width:66.6666%}}.dfe-grid-column-three-quarters{box-sizing:border-box;padding:0 16px}@media (min-width: 48.0625em){.dfe-grid-column-three-quarters{float:left;width:75%}}.dfe-grid-column-full{box-sizing:border-box;padding:0 16px}@media (min-width: 48.0625em){.dfe-grid-column-full{float:left;width:100%}}.dfe-main-wrapper{padding-top:40px;padding-bottom:40px;display:block}@media (min-width: 40.0625em){.dfe-main-wrapper{padding-top:48px}}@media (min-width: 40.0625em){.dfe-main-wrapper{padding-bottom:48px}}.dfe-main-wrapper>*:first-child{margin-top:0}.dfe-main-wrapper>*:last-child{margin-bottom:0}.dfe-main-wrapper--l{padding-top:48px}@media (min-width: 40.0625em){.dfe-main-wrapper--l{padding-top:56px}}.dfe-main-wrapper--s{padding-bottom:24px;padding-top:24px}@media (min-width: 40.0625em){.dfe-main-wrapper--s{padding-bottom:32px}}@media (min-width: 40.0625em){.dfe-main-wrapper--s{padding-top:32px}}.dfe-width-container,div.govuk-width-container{margin:0 16px;max-width:1200px}@media (min-width: 48.0625em){.dfe-width-container,div.govuk-width-container{margin:0 32px}}@media (min-width: 1264px){.dfe-width-container,div.govuk-width-container{margin:0 auto}}.dfe-width-container-fluid{margin:0 16px;max-width:100%}@media (min-width: 48.0625em){.dfe-width-container-fluid{margin:0 32px}}.dfe-icon{height:34px;width:34px}.dfe-icon__search,.dfe-icon__chevron-left,.dfe-icon__chevron-right,.dfe-icon__close{fill:#003a69}.dfe-icon__cross{fill:#d4351c}.dfe-icon__tick{stroke:#00703c}.dfe-icon__arrow-right,.dfe-icon__arrow-left{fill:#003a69}.dfe-icon__arrow-right-circle{fill:#00703c}.dfe-icon__chevron-down{fill:#003a69;-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dfe-icon__chevron-down path{fill:#fff}.dfe-icon__chevron-up{fill:#003a69}.dfe-icon__chevron-up path{fill:#fff}.dfe-icon__emdash path{fill:#aeb7bd}.dfe-icon__plus,.dfe-icon__minus{fill:#003a69}.dfe-icon--size-25{height:42.5px;width:42.5px}.dfe-icon--size-50{height:51px;width:51px}.dfe-icon--size-75{height:59.5px;width:59.5px}.dfe-icon--size-100{height:68px;width:68px}ol,ul,.dfe-list{font-size:16px;font-size:1;line-height:1.33333;margin-bottom:16px;list-style-type:none;margin-top:0;padding-left:0}@media (min-width: 40.0625em){ol,ul,.dfe-list{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{ol,ul,.dfe-list{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){ol,ul,.dfe-list{margin-bottom:24px}}ol>li,ul>li,.dfe-list>li{margin-bottom:8px}@media (min-width: 40.0625em){ol>li,ul>li,.dfe-list>li{margin-bottom:8px}}ol>li:last-child,ul>li:last-child,.dfe-list>li:last-child{margin-bottom:0}ul,.dfe-list--bullet{list-style-type:disc;padding-left:20px}ol,.dfe-list--number{list-style-type:decimal;padding-left:20px}.dfe-list--tick,.dfe-list--cross{list-style:none;margin-top:0;padding-left:40px;position:relative}.dfe-list--tick svg,.dfe-list--cross svg{left:-4px;margin-top:-5px;position:absolute}h1,.dfe-heading-xl,.govuk-heading-xl{font-size:32px;font-size:2;line-height:1.33333;display:block;font-weight:700;margin-top:0;margin-bottom:40px}@media (min-width: 40.0625em){h1,.dfe-heading-xl,.govuk-heading-xl{font-size:48px;font-size:3;line-height:1.33333}}@media print{h1,.dfe-heading-xl,.govuk-heading-xl{font-size:32pt;line-height:1.15}}@media (min-width: 40.0625em){h1,.dfe-heading-xl,.govuk-heading-xl{margin-bottom:48px}}h2,.dfe-heading-l,.govuk-heading-l{font-size:24px;font-size:1.5;line-height:1.33333;display:block;font-weight:700;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){h2,.dfe-heading-l,.govuk-heading-l{font-size:32px;font-size:2;line-height:1.33333}}@media print{h2,.dfe-heading-l,.govuk-heading-l{font-size:24pt;line-height:1.05}}@media (min-width: 40.0625em){h2,.dfe-heading-l,.govuk-heading-l{margin-bottom:24px}}h3,.dfe-heading-m,.govuk-heading-m{font-size:20px;font-size:1.25;line-height:1.33333;display:block;font-weight:700;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){h3,.dfe-heading-m,.govuk-heading-m{font-size:24px;font-size:1.5;line-height:1.33333}}@media print{h3,.dfe-heading-m,.govuk-heading-m{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){h3,.dfe-heading-m,.govuk-heading-m{margin-bottom:24px}}h4,.dfe-heading-s,.govuk-heading-s{font-size:16px;font-size:1;line-height:1.33333;display:block;font-weight:700;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){h4,.dfe-heading-s,.govuk-heading-s{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{h4,.dfe-heading-s,.govuk-heading-s{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){h4,.dfe-heading-s,.govuk-heading-s{margin-bottom:24px}}h5,.dfe-heading-xs{font-size:16px;font-size:1;line-height:1.33333;display:block;font-weight:700;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){h5,.dfe-heading-xs{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{h5,.dfe-heading-xs{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){h5,.dfe-heading-xs{margin-bottom:24px}}h6,.dfe-heading-xxs{font-size:16px;font-size:1;line-height:1.33333;display:block;font-weight:700;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){h6,.dfe-heading-xxs{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{h6,.dfe-heading-xxs{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){h6,.dfe-heading-xxs{margin-bottom:24px}}.dfe-caption-xl{font-weight:400;font-size:24px;font-size:1.5;line-height:1.33333;color:#505a5f;display:block;margin-bottom:4px}@media (min-width: 40.0625em){.dfe-caption-xl{font-size:32px;font-size:2;line-height:1.33333}}@media print{.dfe-caption-xl{font-size:24pt;line-height:1.05}}.dfe-caption-l{font-weight:400;font-size:20px;font-size:1.25;line-height:1.33333;color:#505a5f;display:block;margin-bottom:4px}@media (min-width: 40.0625em){.dfe-caption-l{font-size:24px;font-size:1.5;line-height:1.33333}}@media print{.dfe-caption-l{font-size:18pt;line-height:1.15}}.dfe-caption-m{font-weight:400;font-size:16px;font-size:1;line-height:1.33333;color:#505a5f;display:block}@media (min-width: 40.0625em){.dfe-caption-m{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{.dfe-caption-m{font-size:14pt;line-height:1.15}}.dfe-caption--bottom{margin-bottom:0;margin-top:4px}.dfe-body-l{font-size:20px;font-size:1.25;line-height:1.33333;display:block;margin-top:0;margin-bottom:24px}@media (min-width: 40.0625em){.dfe-body-l{font-size:24px;font-size:1.5;line-height:1.33333}}@media print{.dfe-body-l{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){.dfe-body-l{margin-bottom:32px}}address,p,.dfe-body-m{font-size:16px;font-size:1;line-height:1.33333;display:block;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){address,p,.dfe-body-m{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{address,p,.dfe-body-m{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){address,p,.dfe-body-m{margin-bottom:24px}}p,.dfe-body-m{color:inherit}.dfe-body-s{font-size:14px;font-size:.875;line-height:1.33333;display:block;margin-top:0;margin-bottom:16px}@media (min-width: 40.0625em){.dfe-body-s{font-size:16px;font-size:1;line-height:1.33333}}@media print{.dfe-body-s{font-size:14pt;line-height:1.2}}@media (min-width: 40.0625em){.dfe-body-s{margin-bottom:24px}}address{font-style:normal}.dfe-lede-text{font-weight:400;font-size:20px;font-size:1.25;line-height:1.33333;margin-bottom:40px}@media (min-width: 40.0625em){.dfe-lede-text{font-size:24px;font-size:1.5;line-height:1.33333}}@media print{.dfe-lede-text{font-size:18pt;line-height:1.15}}@media (min-width: 40.0625em){.dfe-lede-text{margin-bottom:48px}}.dfe-lede-text p,.dfe-lede-text ul{font-weight:400;font-size:20px;font-size:1.25;line-height:1.33333}@media (min-width: 40.0625em){.dfe-lede-text p,.dfe-lede-text ul{font-size:24px;font-size:1.5;line-height:1.33333}}@media print{.dfe-lede-text p,.dfe-lede-text ul{font-size:18pt;line-height:1.15}}.dfe-lede-text--small{font-weight:400;font-size:16px;font-size:1;line-height:1.33333;margin-bottom:24px}@media (min-width: 40.0625em){.dfe-lede-text--small{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{.dfe-lede-text--small{font-size:14pt;line-height:1.15}}@media (min-width: 40.0625em){.dfe-lede-text--small{margin-bottom:32px}}h1+.dfe-lede-text,h1+.dfe-lede-text--small{margin-top:-8px}.dfe-body-l+h2,.dfe-body-l+.dfe-heading-l,.dfe-body-l+.govuk-heading-l{padding-top:4px}@media (min-width: 40.0625em){.dfe-body-l+h2,.dfe-body-l+.dfe-heading-l,.dfe-body-l+.govuk-heading-l{padding-top:8px}}p+h2,.dfe-body-m+h2,address+h2,p+.dfe-heading-l,.dfe-body-m+.dfe-heading-l,address+.dfe-heading-l,p+.govuk-heading-l,.dfe-body-m+.govuk-heading-l,address+.govuk-heading-l,.dfe-body-s+h2,.dfe-body-s+.dfe-heading-l,.dfe-body-s+.govuk-heading-l,.dfe-list+h2,ul+h2,ol+h2,.dfe-list+.dfe-heading-l,ul+.dfe-heading-l,ol+.dfe-heading-l,.dfe-list+.govuk-heading-l,ul+.govuk-heading-l,ol+.govuk-heading-l{padding-top:16px}@media (min-width: 40.0625em){p+h2,.dfe-body-m+h2,address+h2,p+.dfe-heading-l,.dfe-body-m+.dfe-heading-l,address+.dfe-heading-l,p+.govuk-heading-l,.dfe-body-m+.govuk-heading-l,address+.govuk-heading-l,.dfe-body-s+h2,.dfe-body-s+.dfe-heading-l,.dfe-body-s+.govuk-heading-l,.dfe-list+h2,ul+h2,ol+h2,.dfe-list+.dfe-heading-l,ul+.dfe-heading-l,ol+.dfe-heading-l,.dfe-list+.govuk-heading-l,ul+.govuk-heading-l,ol+.govuk-heading-l{padding-top:24px}}p+h3,.dfe-body-m+h3,address+h3,p+.dfe-heading-m,.dfe-body-m+.dfe-heading-m,address+.dfe-heading-m,p+.govuk-heading-m,.dfe-body-m+.govuk-heading-m,address+.govuk-heading-m,.dfe-body-s+h3,.dfe-body-s+.dfe-heading-m,.dfe-body-s+.govuk-heading-m,.dfe-list+h3,ul+h3,ol+h3,.dfe-list+.dfe-heading-m,ul+.dfe-heading-m,ol+.dfe-heading-m,.dfe-list+.govuk-heading-m,ul+.govuk-heading-m,ol+.govuk-heading-m,p+h4,.dfe-body-m+h4,address+h4,p+.dfe-heading-s,.dfe-body-m+.dfe-heading-s,address+.dfe-heading-s,p+.govuk-heading-s,.dfe-body-m+.govuk-heading-s,address+.govuk-heading-s,.dfe-body-s+h4,.dfe-body-s+.dfe-heading-s,.dfe-body-s+.govuk-heading-s,.dfe-list+h4,ul+h4,ol+h4,.dfe-list+.dfe-heading-s,ul+.dfe-heading-s,ol+.dfe-heading-s,.dfe-list+.govuk-heading-s,ul+.govuk-heading-s,ol+.govuk-heading-s{padding-top:4px}@media (min-width: 40.0625em){p+h3,.dfe-body-m+h3,address+h3,p+.dfe-heading-m,.dfe-body-m+.dfe-heading-m,address+.dfe-heading-m,p+.govuk-heading-m,.dfe-body-m+.govuk-heading-m,address+.govuk-heading-m,.dfe-body-s+h3,.dfe-body-s+.dfe-heading-m,.dfe-body-s+.govuk-heading-m,.dfe-list+h3,ul+h3,ol+h3,.dfe-list+.dfe-heading-m,ul+.dfe-heading-m,ol+.dfe-heading-m,.dfe-list+.govuk-heading-m,ul+.govuk-heading-m,ol+.govuk-heading-m,p+h4,.dfe-body-m+h4,address+h4,p+.dfe-heading-s,.dfe-body-m+.dfe-heading-s,address+.dfe-heading-s,p+.govuk-heading-s,.dfe-body-m+.govuk-heading-s,address+.govuk-heading-s,.dfe-body-s+h4,.dfe-body-s+.dfe-heading-s,.dfe-body-s+.govuk-heading-s,.dfe-list+h4,ul+h4,ol+h4,.dfe-list+.dfe-heading-s,ul+.dfe-heading-s,ol+.dfe-heading-s,.dfe-list+.govuk-heading-s,ul+.govuk-heading-s,ol+.govuk-heading-s{padding-top:8px}}.dfe-lede-text+h2,.dfe-lede-text+.dfe-heading-l,.dfe-lede-text+.govuk-heading-l{padding-top:0}strong,b{font-weight:700}.dfe-u-font-size-64{font-size:48px!important;font-size:3!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-64{font-size:64px!important;font-size:4!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-64{font-size:53pt!important;line-height:1.1!important}}.dfe-u-font-size-48{font-size:32px!important;font-size:2!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-48{font-size:48px!important;font-size:3!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-48{font-size:32pt!important;line-height:1.15!important}}.dfe-u-font-size-32{font-size:24px!important;font-size:1.5!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-32{font-size:32px!important;font-size:2!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-32{font-size:24pt!important;line-height:1.05!important}}.dfe-u-font-size-24{font-size:20px!important;font-size:1.25!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-24{font-size:24px!important;font-size:1.5!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-24{font-size:18pt!important;line-height:1.15!important}}.dfe-u-font-size-22{font-size:18px!important;font-size:1.125!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-22{font-size:22px!important;font-size:1.375!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-22{font-size:18pt!important;line-height:1.15!important}}.dfe-u-font-size-19{font-size:16px!important;font-size:1!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-19{font-size:19px!important;font-size:1.1875!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-19{font-size:14pt!important;line-height:1.15!important}}.dfe-u-font-size-16{font-size:14px!important;font-size:.875!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-16{font-size:16px!important;font-size:1!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-16{font-size:14pt!important;line-height:1.2!important}}.dfe-u-font-size-14{font-size:12px!important;font-size:.75!important;line-height:1.33333!important}@media (min-width: 40.0625em){.dfe-u-font-size-14{font-size:14px!important;font-size:.875!important;line-height:1.33333!important}}@media print{.dfe-u-font-size-14{font-size:12pt!important;line-height:1.2!important}}.dfe-u-font-weight-normal{font-weight:400!important}.dfe-u-font-weight-bold{font-weight:700!important}.dfe-u-secondary-text-color{color:#505a5f!important}p,.govuk-body{max-width:44em}.dfe-header{background-color:#003a69;border-bottom:10px solid #347ca9}.dfe-header:after{clear:both;content:"";display:block}.dfe-header__container{padding:20px 0}.dfe-header__container:after{clear:both;content:"";display:block}@media (max-width: 40.0525em){.dfe-header__container{margin:0;padding:16px}}.dfe-header__logo{float:left}@media (max-width: 40.0525em){.dfe-header__logo{position:relative;z-index:1}}.dfe-header__logo .dfe-logo__background{fill:#fff}@media print{.dfe-header__logo .dfe-logo__background{fill:#003a69}}.dfe-header__logo .dfe-logo__text{fill:#003a69}@media print{.dfe-header__logo .dfe-logo__text{fill:#fff}}@media (min-width: 40.0625em){.dfe-header__logo{padding-left:0}}.dfe-header__logo .dfe-logo{height:90px;width:153px;border:0}@media (max-width: 48.0525em){.dfe-header__logo{max-width:60%}}@media (max-width: 450px){.dfe-header__logo{max-width:50%}}.dfe-header__link{height:90px;width:153px;display:block}.dfe-header__link .dfe-logo-hover{display:none}.dfe-header__link .dfe-logo{width:136px!important;height:80px!important}.dfe-header__link:focus .dfe-logo-hover{display:none}.dfe-header__link:focus .dfe-logo{display:none}.dfe-header__link:focus .dfe-logo+.dfe-logo-hover{display:inline-block;width:136px!important;height:80px!important}.dfe-header__link:focus{box-shadow:none}.dfe-header__link:focus .dfe-logo{box-shadow:0 0 0 4px #fd0,0 4px 0 4px #0b0c0c}@media print{.dfe-header__link:after{content:""}}.dfe-header__link:hover,.dfe-header__link:active,.dfe-header__link:focus{background-color:transparent}.dfe-header__content{position:relative}.dfe-header__content:after{clear:both;content:"";display:block}@media print{.dfe-header__content{display:none}}.dfe-header__content.js-show{border-bottom:4px solid #f0f4f5}@media (min-width: 40.0625em){.dfe-header__content{float:right}.dfe-header__content.js-show{border-bottom:0}}.dfe-header__action-links{display:flex;gap:20px;justify-content:flex-end;margin-bottom:10px}.dfe-header__action-links li{list-style:none;color:#fff;font-size:16px}.dfe-header__search{position:relative;text-align:right}.dfe-header__search:after{clear:both;content:"";display:block}@media (min-width: 40.0625em){.dfe-header__search{float:left;margin-left:8px}}.dfe-header__search-toggle{background-color:transparent;border:1px solid #ffffff;border-radius:4px;color:#fff;cursor:pointer;min-height:40px;padding:4px 8px 0;position:absolute;right:0;top:0}.dfe-header__search-toggle::-moz-focus-inner{border:0}.dfe-header__search-toggle:hover{background-color:#002644;border-color:#f0f4f5;box-shadow:none}.dfe-header__search-toggle:focus{border:1px solid #ffdd00!important}.dfe-header__search-toggle:active,.dfe-header__search-toggle.is-active{background-color:#001d35;border-color:#f0f4f5;color:#f0f4f5}.dfe-header__search-toggle .dfe-icon__search{fill:#fff;height:21px;width:21px}.dfe-header__search-toggle:focus{background-color:#fd0;border:0;box-shadow:0 4px #0b0c0c;color:#0b0c0c;outline:4px solid transparent;outline-offset:4px;box-shadow:0 0 0 2px #fd0,0 4px 0 2px #0b0c0c}.dfe-header__search-toggle:focus .dfe-icon{fill:#0b0c0c}@media (min-width: 40.0625em){.dfe-header__search-toggle{display:none}}.dfe-header__search-form{height:100%;overflow:visible}@media (max-width: 40.0525em){.dfe-header__search-form{background-color:#fff;display:flex;padding:16px;width:100%}}@media (max-width: 40.0525em){.dfe-header__search-wrap{display:none}.dfe-header__search-wrap.js-show{clear:both;display:flex;margin-bottom:-20px;margin-left:-16px;margin-right:-16px;padding-top:16px;text-align:left}}@media (min-width: 40.0625em){.dfe-header__search-wrap{display:block;line-height:0}}.dfe-search__input{-webkit-appearance:listbox;border-radius:4px 0 0 4px;padding:0 16px}.dfe-search__input:focus{border:4px solid #0b0c0c;box-shadow:0 0 0 4px #fd0;outline:4px solid transparent;outline-offset:4px;padding:0 9px}.dfe-search__input::placeholder{color:#505a5f;font-size:16px}.dfe-search__input:-ms-input-placeholder{color:#505a5f;font-size:16px}.dfe-search__input::-webkit-input-placeholder{color:#505a5f;font-size:16px}@media (max-width: 40.0525em){.dfe-search__input{border-bottom:1px solid #aeb7bd;border-left:1px solid #aeb7bd;border-right:0;border-top:1px solid #aeb7bd;flex-grow:2;-ms-flex-positive:2;font-size:inherit;height:52px;margin:0;outline:none;width:100%;z-index:1}}@media (min-width: 40.0625em){.dfe-search__input{border:1px solid #ffffff;font-size:16px;height:40px;width:200px}}@media (min-width: 48.0625em){.dfe-search__input{width:235px}}.dfe-search__submit{border:0;border-radius:0 4px 4px 0;float:right;font-size:inherit;line-height:inherit;outline:none;padding:0}.dfe-search__submit::-moz-focus-inner{border:0}.dfe-search__submit:hover{cursor:pointer}@media (max-width: 40.0525em){.dfe-search__submit{background-color:#003a69;height:52px;margin:0;padding:8px 8px 0}.dfe-search__submit .dfe-icon__search{fill:#fff;height:38px;width:38px}.dfe-search__submit:hover{background-color:#002644}.dfe-search__submit:focus{background-color:#fd0;box-shadow:0 -4px #fd0,0 4px #0b0c0c;outline:4px solid transparent;outline-offset:4px}.dfe-search__submit:focus:hover{background-color:#fd0}.dfe-search__submit:focus:hover .dfe-icon{fill:#0b0c0c}.dfe-search__submit:focus .dfe-icon{fill:#0b0c0c}}@media (min-width: 40.0625em){.dfe-search__submit{background-color:#f0f4f5;display:block;height:40px;width:44px}.dfe-search__submit .dfe-icon__search{height:27px;width:27px}.dfe-search__submit:hover{background-color:#002644;border:1px solid #ffffff}.dfe-search__submit:hover .dfe-icon__search{fill:#fff}.dfe-search__submit:focus{background-color:#fd0;border:0;box-shadow:0 4px #0b0c0c;color:#0b0c0c;outline:4px solid transparent;outline-offset:4px;box-shadow:0 -2px #fd0,0 4px #0b0c0c}.dfe-search__submit:focus .dfe-icon{fill:#0b0c0c}.dfe-search__submit:active{background-color:#001d35;border:0}.dfe-search__submit:active .dfe-icon__search{fill:#fff}}@media (max-width: 40.0525em){.dfe-search__close{background-color:transparent;border:0;cursor:pointer;height:40px;padding:0;width:40px;margin-left:8px;margin-right:-8px;margin-top:8px}.dfe-search__close .dfe-icon__close{fill:#003a69;height:40px;width:40px}.dfe-search__close::-moz-focus-inner{border:0}.dfe-search__close:hover .dfe-icon__close{fill:#40484c}.dfe-search__close:focus{background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;color:#0b0c0c;outline:4px solid transparent;text-decoration:none}.dfe-search__close:focus .dfe-icon__close{fill:#0b0c0c}}@media (min-width: 40.0625em){.dfe-search__close{display:none}}.dfe-search__input--withdropdown{border-bottom-left-radius:0}.dfe-search__submit--withdropdown{border-bottom-right-radius:0}.dfe-header__menu{float:right}@media (min-width: 40.0625em){.dfe-header__menu{float:left}}.dfe-header__menu-toggle{background-color:transparent;border:1px solid #ffffff;border-radius:4px;color:#fff;cursor:pointer;display:block;font-size:16px;font-weight:400;line-height:24px;margin-right:0;padding:7px 16px;position:relative;text-decoration:none;z-index:1}.dfe-header__menu-toggle::-moz-focus-inner{border:0}.dfe-header__menu-toggle:hover{background-color:#002644;border-color:#f0f4f5;box-shadow:none}.dfe-header__menu-toggle:focus{border:1px solid #ffdd00!important}.dfe-header__menu-toggle:active,.dfe-header__menu-toggle.is-active{background-color:#001d35;border-color:#f0f4f5;color:#f0f4f5}@media (max-width: 40.0525em){.dfe-header__menu-toggle{right:48px}}@media (min-width: 40.0625em) and (max-width: 61.865em){.dfe-header__menu-toggle{margin-top:0}}@media (min-width: 61.875em){.dfe-header__menu-toggle{display:none}}.dfe-header__menu-toggle:focus{background-color:#fd0;border:0;box-shadow:0 4px #0b0c0c;color:#0b0c0c;outline:4px solid transparent;outline-offset:4px;box-shadow:0 0 0 2px #fd0,0 4px 0 2px #0b0c0c}.dfe-header__menu-toggle:focus .dfe-icon{fill:#0b0c0c}@media (max-width: 40.0525em){.dfe-header__menu--only .dfe-header__menu-toggle{position:relative;right:auto;top:auto}}.dfe-header__navigation{background-color:#fff;clear:both;display:none;overflow:hidden}@media print{.dfe-header__navigation{display:none}}.dfe-header__navigation.js-show{display:block}@media (max-width: 61.865em){.dfe-header__navigation.js-show{border-bottom:4px solid #f0f4f5;border-top:4px solid #f0f4f5}.dfe-header__navigation.js-show .dfe-width-container,.dfe-header__navigation.js-show div.govuk-width-container{margin:0 16px}}@media (max-width: 48.0525em){.dfe-header__navigation.js-show .dfe-width-container,.dfe-header__navigation.js-show div.govuk-width-container{margin:0}}@media (min-width: 61.875em){.dfe-header__navigation{background-color:#003a69;display:block;margin:0 auto;max-width:1264px}}.dfe-header__navigation-title{font-weight:700;margin-bottom:0;padding:16px;position:relative}@media (min-width: 61.875em){.dfe-header__navigation-title{display:none}}.dfe-header__navigation-close{background-color:transparent;border:0;cursor:pointer;height:40px;padding:0;width:40px;overflow:hidden;position:absolute;right:8px;top:8px;white-space:nowrap}.dfe-header__navigation-close .dfe-icon__close{fill:#003a69;height:40px;width:40px}.dfe-header__navigation-close::-moz-focus-inner{border:0}.dfe-header__navigation-close:hover .dfe-icon__close{fill:#40484c}.dfe-header__navigation-close:focus{background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;color:#0b0c0c;outline:4px solid transparent;text-decoration:none}.dfe-header__navigation-close:focus .dfe-icon__close{fill:#0b0c0c}.dfe-header__navigation-list{list-style:none;margin:0;padding-left:0}@media (min-width: 61.875em){.dfe-header__navigation-list{border-top:1px solid rgba(255,255,255,.2);display:flex;justify-content:flex-start;padding:0;width:100%}}.dfe-header__navigation-item{border-top:1px solid #f0f4f5;margin-bottom:0;position:relative}.dfe-header__navigation-item.dfe-header__navigation-item--current{box-shadow:inset 0 52px #347ca9!important}.dfe-header__navigation-item.dfe-header__navigation-item--current a{font-weight:700;color:#fff}@media (min-width: 61.875em){.dfe-header__navigation-item{border-top:0;margin:0;text-align:center}.dfe-header__navigation-item a{color:#fff}.dfe-header__navigation-item .dfe-icon__chevron-right{display:none}}.dfe-header__navigation-link{font-weight:400;font-size:14px;font-size:.875;line-height:1.33333;border-bottom:4px solid transparent;border-top:4px solid transparent;color:#003a69;display:block;padding:12px 15px;text-decoration:none}@media (min-width: 40.0625em){.dfe-header__navigation-link{font-size:16px;font-size:1;line-height:1.33333}}@media print{.dfe-header__navigation-link{font-size:14pt;line-height:1.2}}@media (min-width: 61.875em){.dfe-header__navigation-link{color:#fff;line-height:normal}}.dfe-header__navigation-link .dfe-icon__chevron-right{fill:#aeb7bd;position:absolute;right:4px;top:11px}.dfe-header__navigation-link:visited{color:#003a69}@media (min-width: 61.875em){.dfe-header__navigation-link:visited{color:#fff}}.dfe-header__navigation-link:hover{box-shadow:none;color:#003a69;text-decoration:underline}@media (min-width: 61.875em){.dfe-header__navigation-link:hover{color:#fff}}.dfe-header__navigation-link:hover .dfe-icon__chevron-right{fill:#003a69}.dfe-header__navigation-link:active,.dfe-header__navigation-link:focus{background-color:#fd0;border-bottom:4px solid #0b0c0c;box-shadow:none;color:#0b0c0c;outline:4px solid transparent;outline-offset:4px;text-decoration:none}.dfe-header__navigation-link:active:hover,.dfe-header__navigation-link:focus:hover{background-color:#fd0;color:#0b0c0c}.dfe-header__navigation-link:active:hover .dfe-icon__chevron-right,.dfe-header__navigation-link:focus:hover .dfe-icon__chevron-right{fill:#0b0c0c}.dfe-header__navigation-link:active:visited,.dfe-header__navigation-link:focus:visited{background-color:#fd0;color:#0b0c0c}@media (min-width: 61.875em){.dfe-header__navigation-item--for-mobile{display:none}}@media (min-width: 61.875em){.dfe-header__navigation-list--small{justify-content:flex-start}}.dfe-header__transactional-service-name{float:left;padding-left:16px;padding-top:3px}@media (max-width: 61.865em){.dfe-header__transactional-service-name{padding-left:0;padding-top:8px;width:100%}}.dfe-header__transactional-service-name--link{color:#fff;font-weight:400;font-size:16px;font-size:1;line-height:1.33333;text-decoration:none}.dfe-header__transactional-service-name--link:visited{color:#fff}.dfe-header__transactional-service-name--link:hover{color:#fff;text-decoration:none}.dfe-header__transactional-service-name--link:focus{color:#0b0c0c;outline:4px solid transparent;outline-offset:4px;text-decoration:none}.dfe-header__transactional-service-name--link:active{color:#001d35}@media (min-width: 40.0625em){.dfe-header__transactional-service-name--link{font-size:19px;font-size:1.1875;line-height:1.33333}}@media print{.dfe-header__transactional-service-name--link{font-size:14pt;line-height:1.15}}.dfe-header__transactional-service-name--link:hover{text-decoration:underline}.dfe-header--transactional .dfe-header__link{height:60px;width:100px;display:block}.dfe-header--transactional .dfe-logo{height:60px;width:100px}.dfe-header--transactional .dfe-header__transactional-service-name{float:left}.dfe-header__link--service{height:auto;margin-top:-4px;text-decoration:none;width:auto}@media (min-width: 61.875em){.dfe-header__link--service{align-items:center;display:flex;-ms-flex-align:center;margin-bottom:0;width:auto}.dfe-header__link--service .dfe-header__service-name{margin-top:61px;font-weight:400;font-size:18px;font-size:1.125;line-height:1.33333;display:block;font-weight:500;letter-spacing:-.2px;line-height:23px;margin-left:12px}}@media (min-width: 61.875em) and (min-width: 40.0625em){.dfe-header__link--service .dfe-header__service-name{font-size:22px;font-size:1.375;line-height:1.33333}}@media print and (min-width: 61.875em){.dfe-header__link--service .dfe-header__service-name{font-size:18pt;line-height:1.15}}.dfe-header__link--service:hover{background:none}.dfe-header__link--service:hover .dfe-header__service-name{text-decoration:underline}.dfe-header__link--service:focus{background:#ffdd00;box-shadow:0 0 0 4px #fd0,0 4px 0 4px #0b0c0c}.dfe-header__link--service:focus .dfe-header__service-name{color:#0b0c0c;text-decoration:none}.dfe-header__link--service:focus .dfe-logo{box-shadow:none}.dfe-header__service-name{font-weight:400;font-size:18px;font-size:1.125;line-height:1.33333;color:#fff;display:block;padding-left:0;padding-right:0}@media (min-width: 40.0625em){.dfe-header__service-name{font-size:22px;font-size:1.375;line-height:1.33333}}@media print{.dfe-header__service-name{font-size:18pt;line-height:1.15}}@media (min-width: 61.875em){.dfe-header__service-name{padding-left:16px}}@media (max-width: 61.865em){.dfe-header__service-name{max-width:220px}}.dfe-header__logo--only{max-width:100%}@media (min-width: 40.0625em){.dfe-header__logo--only .dfe-header__link--service{align-items:center;display:flex;-ms-flex-align:center;margin-bottom:0;width:auto}.dfe-header__logo--only .dfe-header__service-name{padding-left:16px}}.dfeuk-header__username{padding-bottom:20px;margin:0;text-align:right;color:#fff}.dfeuk-header__username a{color:#fff;text-decoration:none}.dfeuk-header__username a:hover{text-decoration:underline}*{font-family:BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif!important}.logo{display:block;max-height:32px;max-width:100%}.govuk-table{margin-top:30px;margin-bottom:30px}a.govuk-home-link{position:relative;display:inline-block;margin-top:15px;margin-bottom:15px}li p.govuk-body{margin-top:0;margin-bottom:0}strong.govuk-tag{text-transform:lowercase}strong.govuk-tag:first-letter{text-transform:uppercase} /*! Copyright (c) 2011 by Margaret Calvert & Henrik Kubel. All rights reserved. The font has been customised for exclusive use on gov.uk. This cut is not commercially available. */ /*# sourceMappingURL=application.css.map */ diff --git a/src/Dfe.PlanTech.Web/wwwroot/css/application.css.map b/src/Dfe.PlanTech.Web/wwwroot/css/application.css.map index 0dccb22bd..c13f31c12 100644 --- a/src/Dfe.PlanTech.Web/wwwroot/css/application.css.map +++ b/src/Dfe.PlanTech.Web/wwwroot/css/application.css.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../node_modules/govuk-frontend/govuk/core/_govuk-frontend-version.scss", "../../node_modules/govuk-frontend/govuk/core/_links.scss", "../../node_modules/govuk-frontend/govuk/helpers/_typography.scss", "../../node_modules/govuk-frontend/govuk/settings/_typography-font.scss", "../../node_modules/govuk-frontend/govuk/helpers/_links.scss", "../../node_modules/govuk-frontend/govuk/helpers/_font-faces.scss", "../../node_modules/govuk-frontend/govuk/vendor/_sass-mq.scss", "../../node_modules/govuk-frontend/govuk/helpers/_focused.scss", "../../node_modules/govuk-frontend/govuk/settings/_colours-applied.scss", "../../node_modules/govuk-frontend/govuk/core/_lists.scss", "../../node_modules/govuk-frontend/govuk/helpers/_spacing.scss", "../../node_modules/govuk-frontend/govuk/core/_typography.scss", "../../node_modules/govuk-frontend/govuk/core/_section-break.scss", "../../node_modules/govuk-frontend/govuk/objects/_button-group.scss", "../../node_modules/govuk-frontend/govuk/objects/_form-group.scss", "../../node_modules/govuk-frontend/govuk/helpers/_clearfix.scss", "../../node_modules/govuk-frontend/govuk/objects/_grid.scss", "../../node_modules/govuk-frontend/govuk/helpers/_grid.scss", "../../node_modules/govuk-frontend/govuk/objects/_main-wrapper.scss", "../../node_modules/govuk-frontend/govuk/objects/_template.scss", "../../node_modules/govuk-frontend/govuk/objects/_width-container.scss", "../../node_modules/govuk-frontend/govuk/settings/_measurements.scss", "../../node_modules/govuk-frontend/govuk/components/accordion/_index.scss", "../../node_modules/govuk-frontend/govuk/components/back-link/_index.scss", "../../node_modules/govuk-frontend/govuk/components/breadcrumbs/_index.scss", "../../node_modules/govuk-frontend/govuk/components/button/_index.scss", "../../node_modules/govuk-frontend/govuk/components/error-message/_index.scss", "../../node_modules/govuk-frontend/govuk/components/fieldset/_index.scss", "../../node_modules/govuk-frontend/govuk/components/hint/_index.scss", "../../node_modules/govuk-frontend/govuk/components/label/_index.scss", "../../node_modules/govuk-frontend/govuk/components/checkboxes/_index.scss", "../../node_modules/govuk-frontend/govuk/components/textarea/_index.scss", "../../node_modules/govuk-frontend/govuk/components/character-count/_index.scss", "../../node_modules/govuk-frontend/govuk/components/cookie-banner/_index.scss", "../../node_modules/govuk-frontend/govuk/components/input/_index.scss", "../../node_modules/govuk-frontend/govuk/components/date-input/_index.scss", "../../node_modules/govuk-frontend/govuk/components/details/_index.scss", "../../node_modules/govuk-frontend/govuk/helpers/_shape-arrow.scss", "../../node_modules/govuk-frontend/govuk/components/error-summary/_index.scss", "../../node_modules/govuk-frontend/govuk/components/exit-this-page/_index.scss", "../../node_modules/govuk-frontend/govuk/components/file-upload/_index.scss", "../../node_modules/govuk-frontend/govuk/components/footer/_index.scss", "../../node_modules/govuk-frontend/govuk/helpers/_device-pixels.scss", "../../node_modules/govuk-frontend/govuk/components/header/_index.scss", "../../node_modules/govuk-frontend/govuk/settings/_links.scss", "../../node_modules/govuk-frontend/govuk/components/inset-text/_index.scss", "../../node_modules/govuk-frontend/govuk/components/notification-banner/_index.scss", "../../node_modules/govuk-frontend/govuk/components/pagination/_index.scss", "../../node_modules/govuk-frontend/govuk/components/panel/_index.scss", "../../node_modules/govuk-frontend/govuk/components/tag/_index.scss", "../../node_modules/govuk-frontend/govuk/components/phase-banner/_index.scss", "../../node_modules/govuk-frontend/govuk/components/tabs/_index.scss", "../../node_modules/govuk-frontend/govuk/components/radios/_index.scss", "../../node_modules/govuk-frontend/govuk/components/select/_index.scss", "../../node_modules/govuk-frontend/govuk/components/skip-link/_index.scss", "../../node_modules/govuk-frontend/govuk/helpers/_visually-hidden.scss", "../../node_modules/govuk-frontend/govuk/components/summary-list/_index.scss", "../../node_modules/govuk-frontend/govuk/components/table/_index.scss", "../../node_modules/govuk-frontend/govuk/components/warning-text/_index.scss", "../../node_modules/govuk-frontend/govuk/utilities/_visually-hidden.scss", "../../node_modules/govuk-frontend/govuk/overrides/_display.scss", "../../node_modules/govuk-frontend/govuk/overrides/_spacing.scss", "../../node_modules/govuk-frontend/govuk/overrides/_text-align.scss", "../../node_modules/govuk-frontend/govuk/overrides/_typography.scss", "../../node_modules/govuk-frontend/govuk/overrides/_width.scss", "../../node_modules/dfe-frontend-alpha/packages/core/settings/_colours.scss", "../../node_modules/dfe-frontend-alpha/packages/core/tools/_shape-arrow.scss", "../../node_modules/dfe-frontend-alpha/packages/core/vendor/sass-mq.scss", "../../node_modules/dfe-frontend-alpha/packages/core/elements/_forms.scss", "../../node_modules/dfe-frontend-alpha/packages/core/elements/_page.scss", "../../node_modules/dfe-frontend-alpha/packages/core/settings/_globals.scss", "../../node_modules/dfe-frontend-alpha/packages/core/elements/_table.scss", "../../node_modules/dfe-frontend-alpha/packages/core/tools/_spacing.scss", "../../node_modules/dfe-frontend-alpha/packages/core/tools/_typography.scss", "../../node_modules/dfe-frontend-alpha/packages/core/objects/_form-group.scss", "../../node_modules/dfe-frontend-alpha/packages/core/objects/_grid.scss", "../../node_modules/dfe-frontend-alpha/packages/core/tools/_grid.scss", "../../node_modules/dfe-frontend-alpha/packages/core/tools/_mixins.scss", "../../node_modules/dfe-frontend-alpha/packages/core/objects/_main-wrapper.scss", "../../node_modules/dfe-frontend-alpha/packages/core/objects/_width-container.scss", "../../node_modules/dfe-frontend-alpha/packages/core/styles/_icons.scss", "../../node_modules/dfe-frontend-alpha/packages/core/styles/_lists.scss", "../../node_modules/dfe-frontend-alpha/packages/core/styles/_typography.scss", "../../node_modules/dfe-frontend-alpha/packages/core/utilities/_typography.scss", "../../node_modules/dfe-frontend-alpha/packages/core/all.scss", "../../node_modules/dfe-frontend-alpha/packages/components/header/_header.scss", "../../node_modules/dfe-frontend-alpha/packages/core/tools/_focused.scss", "../../node_modules/dfe-frontend-alpha/packages/core/tools/_links.scss", "../../styles/scss/overrides.scss", "../../styles/scss/app-task-list.scss"], - "sourcesContent": [":root {\n // This variable is automatically overwritten during builds and releases.\n // It doesn't need to be updated manually.\n --govuk-frontend-version: \"4.7.0\";\n}\n", "@include govuk-exports(\"govuk/core/links\") {\n\n %govuk-link {\n @include govuk-link-common;\n @include govuk-link-style-default;\n @include govuk-link-print-friendly;\n }\n\n .govuk-link {\n @extend %govuk-link;\n }\n\n // Variant classes should always be used in conjunction with the .govuk-link\n // class, so we do not need the common link styles as they will be inherited.\n\n .govuk-link--muted {\n @include govuk-link-style-muted;\n }\n\n .govuk-link--text-colour {\n @include govuk-link-style-text;\n }\n\n .govuk-link--inverse {\n @include govuk-link-style-inverse;\n }\n\n .govuk-link--no-underline {\n @include govuk-link-style-no-underline;\n }\n\n .govuk-link--no-visited-state {\n @include govuk-link-style-no-visited-state;\n }\n}\n", "////\n/// @group helpers/typography\n////\n\n@import \"../tools/px-to-rem\";\n\n/// 'Common typography' helper\n///\n/// Sets the font family and associated properties, such as font smoothing. Also\n/// overrides the font for print.\n///\n/// @param {List} $font-family [$govuk-font-family] Font family to use\n/// @access public\n\n@mixin govuk-typography-common($font-family: $govuk-font-family) {\n font-family: $font-family;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n // If the user is using the default GDS Transport font we need to include\n // the font-face declarations.\n //\n // We do not need to include the GDS Transport font-face declarations if\n // alphagov/govuk_template is being used since nta will already be included by\n // default.\n @if $govuk-include-default-font-face {\n @include _govuk-font-face-gds-transport;\n }\n\n @include govuk-media-query($media-type: print) {\n font-family: $govuk-font-family-print;\n }\n}\n\n/// Text colour helper\n///\n/// Sets the text colour, including a suitable override for print.\n///\n/// @access public\n\n@mixin govuk-text-colour {\n color: $govuk-text-colour;\n\n @include govuk-media-query($media-type: print) {\n color: $govuk-print-text-colour;\n }\n}\n\n/// Regular font weight helper\n///\n/// @param {Boolean} $important [false] - Whether to mark declarations as\n/// `!important`. Generally Used to create override classes.\n/// @access public\n\n@mixin govuk-typography-weight-regular($important: false) {\n font-weight: $govuk-font-weight-regular if($important, !important, null);\n}\n\n/// Bold font weight helper\n///\n/// @param {Boolean} $important [false] - Whether to mark declarations as\n/// `!important`. Generally Used to create override classes.\n/// @access public\n\n@mixin govuk-typography-weight-bold($important: false) {\n font-weight: $govuk-font-weight-bold if($important, !important, null);\n}\n\n/// Convert line-heights specified in pixels into a relative value, unless\n/// they are already unit-less (and thus already treated as relative values)\n/// or the units do not match the units used for the font size.\n///\n/// @param {Number} $line-height Line height\n/// @param {Number} $font-size Font size\n/// @return {Number} The line height as either a relative value or unmodified\n///\n/// @access private\n\n@function _govuk-line-height($line-height, $font-size) {\n @if not unitless($line-height) and unit($line-height) == unit($font-size) {\n $line-height: $line-height / $font-size;\n }\n\n @return $line-height;\n}\n\n/// Responsive typography helper\n///\n/// Takes a point from the responsive 'font map' as an argument (the size as it\n/// would appear on tablet and above), and uses it to create font-size and\n/// line-height declarations for different breakpoints, and print.\n///\n/// Example font map:\n///\n/// 19: (\n/// null: (\n/// font-size: 16px,\n/// line-height: 20px\n/// ),\n/// tablet: (\n/// font-size: 19px,\n/// line-height: 25px\n/// ),\n/// print: (\n/// font-size: 14pt,\n/// line-height: 1.15\n/// )\n/// );\n///\n/// @param {Number} $size - Point from the spacing scale (the size as it would\n/// appear on tablet and above)\n/// @param {Number} $override-line-height [false] - Non responsive custom line\n/// height. Omit to use the line height from the font map.\n/// @param {Boolean} $important [false] - Whether to mark declarations as\n/// `!important`.\n///\n/// @throw if `$size` is not a valid point from the spacing scale\n///\n/// @access public\n\n@mixin govuk-typography-responsive($size, $override-line-height: false, $important: false) {\n\n @if not map-has-key($govuk-typography-scale, $size) {\n @error \"Unknown font size `#{$size}` - expected a point from the typography scale.\";\n }\n\n $font-map: map-get($govuk-typography-scale, $size);\n\n @each $breakpoint, $breakpoint-map in $font-map {\n $font-size: map-get($breakpoint-map, \"font-size\");\n $font-size-rem: govuk-px-to-rem($font-size);\n\n $line-height: _govuk-line-height(\n $line-height: if(\n $override-line-height,\n $override-line-height,\n map-get($breakpoint-map, \"line-height\")\n ),\n $font-size: $font-size\n );\n\n // Mark rules as !important if $important is true - this will result in\n // these variables becoming strings, so this needs to happen *after* they\n // are used in calculations\n $font-size: $font-size if($important, !important, null);\n $font-size-rem: $font-size-rem if($important, !important, null);\n $line-height: $line-height if($important, !important, null);\n\n @if not $breakpoint {\n font-size: $font-size;\n @if $govuk-typography-use-rem {\n font-size: $font-size-rem;\n }\n line-height: $line-height;\n } @else if $breakpoint == \"print\" {\n @include govuk-media-query($media-type: print) {\n font-size: $font-size;\n line-height: $line-height;\n }\n } @else {\n @include govuk-media-query($from: $breakpoint) {\n font-size: $font-size;\n @if $govuk-typography-use-rem {\n font-size: $font-size-rem;\n }\n line-height: $line-height;\n }\n }\n }\n}\n\n/// Font helper\n///\n/// @param {Number | Boolean} $size Point from the spacing scale (the size as it\n/// would appear on tablet and above). Use `false` to avoid setting a size.\n/// @param {String} $weight [regular] - Weight: `bold` or `regular`\n/// @param {Boolean} $tabular [false] - Whether to use tabular numbers or not\n/// @param {Number} $line-height [false] - Line-height, if overriding the\n/// default\n///\n/// @throw if `$size` is not a valid point from the spacing scale (or false)\n///\n/// @access public\n\n@mixin govuk-font($size, $weight: regular, $tabular: false, $line-height: false) {\n @if $tabular {\n // if govuk-font-family-tabular is set use $govuk-font-family-tabular\n @if $govuk-font-family-tabular {\n @include govuk-typography-common($font-family: $govuk-font-family-tabular);\n } @else {\n @include govuk-typography-common;\n -webkit-font-feature-settings: \"tnum\" 1;\n font-feature-settings: \"tnum\" 1;\n\n @supports (font-variant-numeric: tabular-nums) {\n -webkit-font-feature-settings: normal;\n font-feature-settings: normal;\n font-variant-numeric: tabular-nums;\n }\n }\n } @else {\n @include govuk-typography-common;\n }\n\n @if $weight == regular {\n @include govuk-typography-weight-regular;\n } @else if $weight == bold {\n @include govuk-typography-weight-bold;\n }\n\n @if $size {\n @include govuk-typography-responsive($size, $override-line-height: $line-height);\n }\n}\n", "@import \"compatibility\";\n@import \"typography-font-families\";\n\n////\n/// @group settings/typography\n////\n\n/// Use 'legacy' fonts\n///\n/// Whether or not to use v1 nta font from GOV.UK Elements / Frontend\n/// Toolkit, for teams that are migrating to GOV.UK Frontend and may be using\n/// components from both places in a single application.\n///\n/// @type Boolean\n/// @access public\n/// @deprecated Will be removed in v5.0 with the rest of the compatibility mode\n/// suite of tools and settings\n\n$govuk-use-legacy-font: if(\n (\n $govuk-compatibility-govukfrontendtoolkit or\n $govuk-compatibility-govuktemplate or\n $govuk-compatibility-govukelements\n ),\n true,\n false\n) !default;\n\n// Only show the deprecation warning if user is setting $govuk-use-legacy-font\n// manually instead of automatically via compatibility variables\n@if $govuk-use-legacy-font == true and\n $govuk-compatibility-govukfrontendtoolkit == false and\n $govuk-compatibility-govuktemplate == false and\n $govuk-compatibility-govukelements == false {\n @include _warning(legacy-font, \"$govuk-use-legacy-font is deprecated. \" +\n \"From version 5.0, GOV.UK Frontend will only support the included version \" +\n \"of GDS Transport.\");\n}\n\n// =========================================================\n// Font families\n// =========================================================\n\n/// Font families to use for all typography on screen media\n///\n/// @type List\n/// @access public\n\n$govuk-font-family: if(\n $govuk-use-legacy-font,\n $govuk-font-family-nta,\n $govuk-font-family-gds-transport\n) !default;\n\n/// Font families to use when displaying tabular numbers\n///\n/// @type List\n/// @access public\n/// @deprecated Will be removed in v5.0 with the rest of the compatibility mode\n/// suite of tools and settings\n\n$govuk-font-family-tabular: if(\n $govuk-use-legacy-font,\n $govuk-font-family-nta-tabular,\n false\n) !default;\n\n// Only show the deprecation warning if user is setting $govuk-font-family-tabular\n// manually instead of automatically via $govuk-use-legacy-font\n@if $govuk-font-family-tabular != false and $govuk-use-legacy-font == false {\n @include _warning(tabular-font-face, \"$govuk-font-family-tabular is deprecated. \" +\n \"From version 5.0, GOV.UK Frontend will not support using a separate \" +\n \"font-face for tabular numbers.\");\n}\n\n/// Font families to use for print media\n///\n/// We recommend that you use system fonts when printing. This will avoid issues\n/// with some printer drivers and operating systems.\n///\n/// @type List\n/// @access public\n\n$govuk-font-family-print: sans-serif !default;\n\n/// Include the default @font-face declarations\n///\n/// If you have set $govuk-font-family to something other than\n/// `$govuk-font-family-gds-transport` this option is disabled by default.\n///\n/// @type Boolean\n/// @access public\n\n$govuk-include-default-font-face: (\n $govuk-font-family == $govuk-font-family-gds-transport\n) !default;\n\n// =========================================================\n// Font weights\n// =========================================================\n\n/// Font weight for regular typography\n///\n/// @type Number\n/// @access public\n$govuk-font-weight-regular: 400 !default;\n\n/// Font weight for bold typography\n///\n/// @type Number\n/// @access public\n$govuk-font-weight-bold: 700 !default;\n", "////\n/// @group helpers/links\n////\n\n/// Common link styles\n///\n/// Provides the typography and focus state, regardless of link style.\n///\n/// @access public\n\n@mixin govuk-link-common {\n @include govuk-typography-common;\n @include govuk-link-decoration;\n\n &:hover {\n @include govuk-link-hover-decoration;\n }\n\n &:focus {\n @include govuk-focused-text;\n }\n}\n\n/// Link decoration\n///\n/// Provides the text decoration for links, including thickness and underline\n/// offset. Use this mixin only if you cannot use the `govuk-link-common` mixin.\n///\n/// @access public\n@mixin govuk-link-decoration {\n text-decoration: underline;\n\n @if $govuk-new-link-styles {\n @if $govuk-link-underline-thickness {\n text-decoration-thickness: $govuk-link-underline-thickness;\n }\n\n @if $govuk-link-underline-offset {\n text-underline-offset: $govuk-link-underline-offset;\n }\n }\n}\n\n/// Link hover decoration\n///\n/// Provides the text decoration for links in their hover state, for you to use\n/// within a `:hover` pseudo-selector. Use this mixin only if you cannot use the\n/// `govuk-link-common` mixin.\n///\n/// @access public\n\n@mixin govuk-link-hover-decoration {\n @if $govuk-new-link-styles and $govuk-link-hover-underline-thickness {\n text-decoration-thickness: $govuk-link-hover-underline-thickness;\n // Disable ink skipping on underlines on hover. Browsers haven't\n // standardised on this part of the spec yet, so set both properties\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none; // Chromium, Firefox\n -webkit-text-decoration-skip: none;\n text-decoration-skip: none; // Safari\n }\n}\n\n/// Default link styles\n///\n/// Makes links use the default unvisited, visited, hover and active colours.\n///\n/// If you use this mixin in a component, you must also include the\n/// `govuk-link-common` mixin to get the correct focus and hover states.\n///\n/// @example scss\n/// .govuk-component__link {\n/// @include govuk-link-common;\n/// @include govuk-link-style-default;\n/// }\n///\n/// @access public\n\n@mixin govuk-link-style-default {\n &:link {\n color: $govuk-link-colour;\n }\n\n &:visited {\n color: $govuk-link-visited-colour;\n }\n\n &:hover {\n color: $govuk-link-hover-colour;\n }\n\n &:active {\n color: $govuk-link-active-colour;\n }\n\n // When focussed, the text colour needs to be darker to ensure that colour\n // contrast is still acceptable\n &:focus {\n color: $govuk-focus-text-colour;\n }\n\n // alphagov/govuk_template includes a specific a:link:focus selector\n // designed to make unvisited link s a slightly darker blue when focussed, so\n // we need to override the text colour for that combination of selectors so\n // so that unvisited links styled as buttons do not end up with dark blue\n // text when focussed.\n @include _govuk-compatibility(govuk_template) {\n &:link:focus {\n color: $govuk-focus-text-colour;\n }\n }\n}\n\n/// Error link styles\n///\n/// Makes links use the error colour. The link will darken if it's active or a\n/// user hovers their cursor over it.\n///\n/// If you use this mixin in a component, you must also include the\n/// `govuk-link-common` mixin to get the correct focus and hover states.\n///\n/// @example scss\n/// .govuk-component__link {\n/// @include govuk-link-common;\n/// @include govuk-link-style-error;\n/// }\n///\n/// @access public\n\n@mixin govuk-link-style-error {\n &:link,\n &:visited {\n color: $govuk-error-colour;\n }\n\n &:hover {\n color: scale-color($govuk-error-colour, $lightness: -30%);\n }\n\n &:active {\n color: $govuk-error-colour;\n }\n\n // When focussed, the text colour needs to be darker to ensure that colour\n // contrast is still acceptable\n &:focus {\n color: $govuk-focus-text-colour;\n }\n\n // alphagov/govuk_template includes a specific a:link:focus selector\n // designed to make unvisited link s a slightly darker blue when focussed, so\n // we need to override the text colour for that combination of selectors so\n // so that unvisited links styled as buttons do not end up with dark blue\n // text when focussed.\n @include _govuk-compatibility(govuk_template) {\n &:link:focus {\n color: $govuk-focus-text-colour;\n }\n }\n}\n\n/// Success link styles\n///\n/// Makes links use the success colour. The link will darken if it's active or a\n/// user hovers their cursor over it.\n///\n/// If you use this mixin in a component, you must also include the\n/// `govuk-link-common` mixin to get the correct focus and hover states.\n///\n/// @example scss\n/// .govuk-component__link {\n/// @include govuk-link-common;\n/// @include govuk-link-style-success;\n/// }\n///\n/// @access public\n\n@mixin govuk-link-style-success {\n &:link,\n &:visited {\n color: $govuk-success-colour;\n }\n\n &:hover {\n color: scale-color($govuk-success-colour, $lightness: -30%);\n }\n\n &:active {\n color: $govuk-success-colour;\n }\n\n // When focussed, the text colour needs to be darker to ensure that colour\n // contrast is still acceptable\n &:focus {\n color: $govuk-focus-text-colour;\n }\n\n // alphagov/govuk_template includes a specific a:link:focus selector\n // designed to make unvisited link s a slightly darker blue when focussed, so\n // we need to override the text colour for that combination of selectors so\n // so that unvisited links styled as buttons do not end up with dark blue\n // text when focussed.\n @include _govuk-compatibility(govuk_template) {\n &:link:focus {\n color: $govuk-focus-text-colour;\n }\n }\n}\n\n/// Muted link styles\n///\n/// Makes links use the secondary text colour. The link will darken if it's\n/// active or a user hovers their cursor over it.\n///\n/// If you use this mixin in a component, you must also include the\n/// `govuk-link-common` mixin to get the correct focus and hover states.\n///\n/// @example scss\n/// .govuk-component__link {\n/// @include govuk-link-common;\n/// @include govuk-link-style-muted;\n/// }\n///\n/// @access public\n\n@mixin govuk-link-style-muted {\n &:link,\n &:visited {\n color: $govuk-secondary-text-colour;\n }\n\n &:hover,\n &:active {\n color: $govuk-text-colour;\n }\n\n // When focussed, the text colour needs to be darker to ensure that colour\n // contrast is still acceptable\n &:focus {\n color: $govuk-focus-text-colour;\n }\n\n // alphagov/govuk_template includes a specific a:link:focus selector designed\n // to make unvisited links a slightly darker blue when focussed, so we need to\n // override the text colour for that combination of selectors.\n @include _govuk-compatibility(govuk_template) {\n &:link:focus {\n @include govuk-text-colour;\n }\n }\n}\n\n/// Text link styles\n///\n/// Makes links use the primary text colour, in all states. Use this mixin for\n/// navigation components, such as breadcrumbs or the back link.\n///\n/// If you use this mixin in a component, you must also include the\n/// `govuk-link-common` mixin to get the correct focus and hover states.\n///\n/// @example scss\n/// .govuk-component__link {\n/// @include govuk-link-common;\n/// @include govuk-link-style-text;\n/// }\n///\n/// @access public\n\n@mixin govuk-link-style-text {\n &:link,\n &:visited {\n @include govuk-text-colour;\n }\n\n // Force a colour change on hover to work around a bug in Safari\n // https://bugs.webkit.org/show_bug.cgi?id=224483\n &:hover {\n @if type-of($govuk-text-colour) == color {\n color: rgba($govuk-text-colour, .99);\n }\n }\n\n &:active,\n &:focus {\n @include govuk-text-colour;\n }\n\n // alphagov/govuk_template includes a specific a:link:focus selector designed\n // to make unvisited links a slightly darker blue when focussed, so we need to\n // override the text colour for that combination of selectors.\n @include _govuk-compatibility(govuk_template) {\n &:link:focus {\n @include govuk-text-colour;\n }\n }\n}\n\n/// Inverse link styles\n///\n/// Makes links white, in all states. Use this mixin if you're displaying links\n/// against a dark background.\n///\n/// If you use this mixin in a component, you must also include the\n/// `govuk-link-common` mixin to get the correct focus and hover states.\n///\n/// @example scss\n/// .govuk-component__link {\n/// @include govuk-link-common;\n/// @include govuk-link-style-inverse;\n/// }\n///\n/// @access public\n\n@mixin govuk-link-style-inverse {\n &:link,\n &:visited {\n color: govuk-colour(\"white\");\n }\n\n // Force a colour change on hover to work around a bug in Safari\n // https://bugs.webkit.org/show_bug.cgi?id=224483\n &:hover,\n &:active {\n color: rgba(govuk-colour(\"white\"), .99);\n }\n\n &:focus {\n color: $govuk-focus-text-colour;\n }\n\n // alphagov/govuk_template includes a specific a:link:focus selector designed\n // to make unvisited links a slightly darker blue when focussed, so we need to\n // override the text colour for that combination of selectors.\n @include _govuk-compatibility(govuk_template) {\n &:link:focus {\n color: $govuk-focus-text-colour;\n }\n }\n}\n\n/// Default link styles, without a visited state\n///\n/// Makes links use the default unvisited, hover and active colours, with no\n/// distinct visited state.\n///\n/// Use this mixin when it's not helpful to distinguish between visited and\n/// non-visited links. For example, when you link to pages with\n/// frequently-changing content, such as the dashboard for an admin interface.\n///\n/// If you use this mixin in a component, you must also include the\n/// `govuk-link-common` mixin to get the correct focus and hover states.\n///\n/// @example scss\n/// .govuk-component__link {\n/// @include govuk-link-common;\n/// @include govuk-link-style-no-visited-state;\n/// }\n///\n/// @access public\n\n@mixin govuk-link-style-no-visited-state {\n &:link {\n color: $govuk-link-colour;\n }\n\n &:visited {\n color: $govuk-link-colour;\n }\n\n &:hover {\n color: $govuk-link-hover-colour;\n }\n\n &:active {\n color: $govuk-link-active-colour;\n }\n\n // When focussed, the text colour needs to be darker to ensure that colour\n // contrast is still acceptable\n &:focus {\n color: $govuk-focus-text-colour;\n }\n}\n\n/// Remove underline from links\n///\n/// Remove underlines from links unless the link is active or a user hovers\n/// their cursor over it. This has no effect in Internet Explorer 8 (IE8),\n/// because IE8 does not support `:not`.\n///\n/// @example scss\n/// .govuk-component__link {\n/// @include govuk-link-common;\n/// @include govuk-link-style-default;\n/// @include govuk-link-style-no-underline;\n/// }\n///\n/// @access public\n\n@mixin govuk-link-style-no-underline {\n &:not(:hover):not(:active) {\n text-decoration: none;\n }\n}\n\n/// Include link destination when printing the page\n///\n/// If the user prints the page, add the destination URL after the link text, if\n/// the URL starts with `/`, `http://` or `https://`.\n///\n/// @access public\n\n@mixin govuk-link-print-friendly {\n @include govuk-media-query($media-type: print) {\n &[href^=\"/\"],\n &[href^=\"http://\"],\n &[href^=\"https://\"] {\n &:after {\n content: \" (\" attr(href) \")\";\n font-size: 90%;\n\n // Because the URLs may be very long, ensure that they may be broken\n // at arbitrary points if there are no otherwise acceptable break\n // points in the line\n word-wrap: break-word;\n }\n }\n }\n}\n", "////\n/// @group helpers\n////\n\n@import \"../tools/exports\";\n\n/// Font Face - GDS Transport\n///\n/// Outputs the font-face declaration for GDS Transport at the root of the CSS document\n/// the first time it is called.\n///\n/// @access private\n\n@mixin _govuk-font-face-gds-transport {\n @include _govuk-not-ie8 { // In IE8, which cannot render WOFF format, we fall back to system fonts\n @include govuk-exports(\"govuk/helpers/font-faces\") {\n @at-root {\n /*! Copyright (c) 2011 by Margaret Calvert & Henrik Kubel. All rights reserved. The font has been customised for exclusive use on gov.uk. This cut is not commercially available. */ /* stylelint-disable-line scss/comment-no-loud */\n @font-face {\n font-family: \"GDS Transport\";\n font-style: normal;\n font-weight: normal;\n src:\n govuk-font-url(\"light-94a07e06a1-v2.woff2\") format(\"woff2\"),\n govuk-font-url(\"light-f591b13f7d-v2.woff\") format(\"woff\");\n font-display: fallback;\n }\n\n @font-face {\n font-family: \"GDS Transport\";\n font-style: normal;\n font-weight: bold;\n src:\n govuk-font-url(\"bold-b542beb274-v2.woff2\") format(\"woff2\"),\n govuk-font-url(\"bold-affa96571d-v2.woff\") format(\"woff\");\n font-display: fallback;\n }\n }\n }\n }\n}\n", "// mq() v4.0.2\n// sass-mq/sass-mq\n\n@charset \"UTF-8\"; // Fixes an issue where Ruby locale is not set properly\n // See https://github.com/sass-mq/sass-mq/pull/10\n\n/// Base font size on the `` element\n/// @type Number (unit)\n$mq-base-font-size: 16px !default;\n\n/// Responsive mode\n///\n/// Set to `false` to enable support for browsers that do not support @media queries,\n/// (IE <= 8, Firefox <= 3, Opera <= 9)\n///\n/// You could create a stylesheet served exclusively to older browsers,\n/// where @media queries are rasterized\n///\n/// @example scss\n/// // old-ie.scss\n/// $mq-responsive: false;\n/// @import 'main'; // @media queries in this file will be rasterized up to $mq-static-breakpoint\n/// // larger breakpoints will be ignored\n///\n/// @type Boolean\n/// @link https://github.com/sass-mq/sass-mq#responsive-mode-off Disabled responsive mode documentation\n$mq-responsive: true !default;\n\n/// Breakpoint list\n///\n/// Name your breakpoints in a way that creates a ubiquitous language\n/// across team members. It will improve communication between\n/// stakeholders, designers, developers, and testers.\n///\n/// @type Map\n/// @link https://github.com/sass-mq/sass-mq#seeing-the-currently-active-breakpoint Full documentation and examples\n$mq-breakpoints: (\n mobile: 320px,\n tablet: 740px,\n desktop: 980px,\n wide: 1300px\n) !default;\n\n/// Static breakpoint (for fixed-width layouts)\n///\n/// Define the breakpoint from $mq-breakpoints that should\n/// be used as the target width for the fixed-width layout\n/// (i.e. when $mq-responsive is set to 'false') in a old-ie.scss\n///\n/// @example scss\n/// // tablet-only.scss\n/// //\n/// // Ignore all styles above tablet breakpoint,\n/// // and fix the styles (e.g. layout) at tablet width\n/// $mq-responsive: false;\n/// $mq-static-breakpoint: tablet;\n/// @import 'main'; // @media queries in this file will be rasterized up to tablet\n/// // larger breakpoints will be ignored\n///\n/// @type String\n/// @link https://github.com/sass-mq/sass-mq#adding-custom-breakpoints Full documentation and examples\n$mq-static-breakpoint: desktop !default;\n\n/// Show breakpoints in the top right corner\n///\n/// If you want to display the currently active breakpoint in the top\n/// right corner of your site during development, add the breakpoints\n/// to this list, ordered by width, e.g. (mobile, tablet, desktop).\n///\n/// @type map\n$mq-show-breakpoints: () !default;\n\n/// Customize the media type (e.g. `@media screen` or `@media print`)\n/// By default sass-mq uses an \"all\" media type (`@media all and …`)\n///\n/// @type String\n/// @link https://github.com/sass-mq/sass-mq#changing-media-type Full documentation and examples\n$mq-media-type: all !default;\n\n/// Convert pixels to ems\n///\n/// @param {Number} $px - value to convert\n/// @param {Number} $base-font-size ($mq-base-font-size) - `` font size\n///\n/// @example scss\n/// $font-size-in-ems: mq-px2em(16px);\n/// p { font-size: mq-px2em(16px); }\n///\n/// @requires $mq-base-font-size\n/// @returns {Number}\n@function mq-px2em($px, $base-font-size: $mq-base-font-size) {\n @if unitless($px) {\n @warn \"Assuming #{$px} to be in pixels, attempting to convert it into pixels.\";\n @return mq-px2em($px * 1px, $base-font-size);\n } @else if unit($px) == em {\n @return $px;\n }\n @return ($px / $base-font-size) * 1em;\n}\n\n/// Get a breakpoint's width\n///\n/// @param {String} $name - Name of the breakpoint. One of $mq-breakpoints\n///\n/// @example scss\n/// $tablet-width: mq-get-breakpoint-width(tablet);\n/// @media (min-width: mq-get-breakpoint-width(desktop)) {}\n///\n/// @requires {Variable} $mq-breakpoints\n///\n/// @returns {Number} Value in pixels\n@function mq-get-breakpoint-width($name, $breakpoints: $mq-breakpoints) {\n @if map-has-key($breakpoints, $name) {\n @return map-get($breakpoints, $name);\n } @else {\n @warn \"Breakpoint #{$name} wasn't found in $breakpoints.\";\n }\n}\n\n/// Media Query mixin\n///\n/// @param {String | Boolean} $from (false) - One of $mq-breakpoints\n/// @param {String | Boolean} $until (false) - One of $mq-breakpoints\n/// @param {String | Boolean} $and (false) - Additional media query parameters\n/// @param {String} $media-type ($mq-media-type) - Media type: screen, print…\n///\n/// @ignore Undocumented API, for advanced use only:\n/// @ignore @param {Map} $breakpoints ($mq-breakpoints)\n/// @ignore @param {String} $static-breakpoint ($mq-static-breakpoint)\n///\n/// @content styling rules, wrapped into a @media query when $responsive is true\n///\n/// @requires {Variable} $mq-media-type\n/// @requires {Variable} $mq-breakpoints\n/// @requires {Variable} $mq-static-breakpoint\n/// @requires {function} mq-px2em\n/// @requires {function} mq-get-breakpoint-width\n///\n/// @link https://github.com/sass-mq/sass-mq#responsive-mode-on-default Full documentation and examples\n///\n/// @example scss\n/// .element {\n/// @include mq($from: mobile) {\n/// color: red;\n/// }\n/// @include mq($until: tablet) {\n/// color: blue;\n/// }\n/// @include mq(mobile, tablet) {\n/// color: green;\n/// }\n/// @include mq($from: tablet, $and: '(orientation: landscape)') {\n/// color: teal;\n/// }\n/// @include mq(950px) {\n/// color: hotpink;\n/// }\n/// @include mq(tablet, $media-type: screen) {\n/// color: hotpink;\n/// }\n/// // Advanced use:\n/// $my-breakpoints: (L: 900px, XL: 1200px);\n/// @include mq(L, $breakpoints: $my-breakpoints, $static-breakpoint: L) {\n/// color: hotpink;\n/// }\n/// }\n@mixin mq(\n $from: false,\n $until: false,\n $and: false,\n $media-type: $mq-media-type,\n $breakpoints: $mq-breakpoints,\n $responsive: $mq-responsive,\n $static-breakpoint: $mq-static-breakpoint\n) {\n $min-width: 0;\n $max-width: 0;\n $media-query: '';\n\n // From: this breakpoint (inclusive)\n @if $from {\n @if type-of($from) == number {\n $min-width: mq-px2em($from);\n } @else {\n $min-width: mq-px2em(mq-get-breakpoint-width($from, $breakpoints));\n }\n }\n\n // Until: that breakpoint (exclusive)\n @if $until {\n @if type-of($until) == number {\n $max-width: mq-px2em($until);\n } @else {\n $max-width: mq-px2em(mq-get-breakpoint-width($until, $breakpoints)) - .01em;\n }\n }\n\n // Responsive support is disabled, rasterize the output outside @media blocks\n // The browser will rely on the cascade itself.\n @if $responsive == false {\n $static-breakpoint-width: mq-get-breakpoint-width($static-breakpoint, $breakpoints);\n $target-width: mq-px2em($static-breakpoint-width);\n\n // Output only rules that start at or span our target width\n @if (\n $and == false\n and $min-width <= $target-width\n and (\n $until == false or $max-width >= $target-width\n )\n and $media-type != 'print'\n ) {\n @content;\n }\n }\n\n // Responsive support is enabled, output rules inside @media queries\n @else {\n @if $min-width != 0 { $media-query: '#{$media-query} and (min-width: #{$min-width})'; }\n @if $max-width != 0 { $media-query: '#{$media-query} and (max-width: #{$max-width})'; }\n @if $and { $media-query: '#{$media-query} and #{$and}'; }\n\n // Remove unnecessary media query prefix 'all and '\n @if ($media-type == 'all' and $media-query != '') {\n $media-type: '';\n $media-query: str-slice(unquote($media-query), 6);\n }\n\n @media #{$media-type + $media-query} {\n @content;\n }\n }\n}\n\n/// Quick sort\n///\n/// @author Sam Richards\n/// @access private\n/// @param {List} $list - List to sort\n/// @returns {List} Sorted List\n@function _mq-quick-sort($list) {\n $less: ();\n $equal: ();\n $large: ();\n\n @if length($list) > 1 {\n $seed: nth($list, ceil(length($list) / 2));\n\n @each $item in $list {\n @if ($item == $seed) {\n $equal: append($equal, $item);\n } @else if ($item < $seed) {\n $less: append($less, $item);\n } @else if ($item > $seed) {\n $large: append($large, $item);\n }\n }\n\n @return join(join(_mq-quick-sort($less), $equal), _mq-quick-sort($large));\n }\n\n @return $list;\n}\n\n/// Sort a map by values (works with numbers only)\n///\n/// @access private\n/// @param {Map} $map - Map to sort\n/// @returns {Map} Map sorted by value\n@function _mq-map-sort-by-value($map) {\n $map-sorted: ();\n $map-keys: map-keys($map);\n $map-values: map-values($map);\n $map-values-sorted: _mq-quick-sort($map-values);\n\n // Reorder key/value pairs based on key values\n @each $value in $map-values-sorted {\n $index: index($map-values, $value);\n $key: nth($map-keys, $index);\n $map-sorted: map-merge($map-sorted, ($key: $value));\n\n // Unset the value in $map-values to prevent the loop\n // from finding the same index twice\n $map-values: set-nth($map-values, $index, 0);\n }\n\n @return $map-sorted;\n}\n\n/// Add a breakpoint\n///\n/// @param {String} $name - Name of the breakpoint\n/// @param {Number} $width - Width of the breakpoint\n///\n/// @requires {Variable} $mq-breakpoints\n///\n/// @example scss\n/// @include mq-add-breakpoint(tvscreen, 1920px);\n/// @include mq(tvscreen) {}\n@mixin mq-add-breakpoint($name, $width) {\n $new-breakpoint: ($name: $width);\n $mq-breakpoints: map-merge($mq-breakpoints, $new-breakpoint) !global;\n $mq-breakpoints: _mq-map-sort-by-value($mq-breakpoints) !global;\n}\n\n/// Show the active breakpoint in the top right corner of the viewport\n/// @link https://github.com/sass-mq/sass-mq#seeing-the-currently-active-breakpoint\n///\n/// @param {List} $show-breakpoints ($mq-show-breakpoints) - List of breakpoints to show in the top right corner\n/// @param {Map} $breakpoints ($mq-breakpoints) - Breakpoint names and sizes\n///\n/// @requires {Variable} $mq-breakpoints\n/// @requires {Variable} $mq-show-breakpoints\n///\n/// @example scss\n/// // Show breakpoints using global settings\n/// @include mq-show-breakpoints;\n///\n/// // Show breakpoints using custom settings\n/// @include mq-show-breakpoints((L, XL), (S: 300px, L: 800px, XL: 1200px));\n@mixin mq-show-breakpoints($show-breakpoints: $mq-show-breakpoints, $breakpoints: $mq-breakpoints) {\n body:before {\n background-color: #FCF8E3;\n border-bottom: 1px solid #FBEED5;\n border-left: 1px solid #FBEED5;\n color: #C09853;\n font: small-caption;\n padding: 3px 6px;\n pointer-events: none;\n position: fixed;\n right: 0;\n top: 0;\n z-index: 100;\n\n // Loop through the breakpoints that should be shown\n @each $show-breakpoint in $show-breakpoints {\n $width: mq-get-breakpoint-width($show-breakpoint, $breakpoints);\n @include mq($show-breakpoint, $breakpoints: $breakpoints) {\n content: \"#{$show-breakpoint} ≥ #{$width} (#{mq-px2em($width)})\";\n }\n }\n }\n}\n\n@if length($mq-show-breakpoints) > 0 {\n @include mq-show-breakpoints;\n}\n", "////\n/// @group helpers/accessibility\n////\n\n/// Focused text\n///\n/// Provides an outline to clearly indicate when the target element is focused.\n/// Used for interactive text-based elements.\n///\n/// @access public\n\n@mixin govuk-focused-text {\n // When colours are overridden, for example when users have a dark mode,\n // backgrounds and box-shadows disappear, so we need to ensure there's a\n // transparent outline which will be set to a visible colour.\n\n // Since Internet Explorer 8 does not support box-shadow, we want to force the\n // user-agent outlines\n @include _govuk-not-ie8 {\n outline: $govuk-focus-width solid transparent;\n }\n color: $govuk-focus-text-colour;\n background-color: $govuk-focus-colour;\n box-shadow: 0 -2px $govuk-focus-colour, 0 4px $govuk-focus-text-colour;\n // When link is focussed, hide the default underline since the\n // box shadow adds the \"underline\"\n text-decoration: none;\n\n // When a focused box is broken by e.g. a line break, ensure that the\n // box-shadow is applied to each fragment independently.\n -webkit-box-decoration-break: clone;\n box-decoration-break: clone;\n}\n", "////\n/// @group settings/colours\n////\n\n@import \"../helpers/colour\";\n\n// =========================================================\n// Generic\n// =========================================================\n\n/// Brand colour\n///\n/// @type Colour\n/// @access public\n\n$govuk-brand-colour: govuk-colour(\"blue\") !default;\n\n/// Text colour\n///\n/// @type Colour\n/// @access public\n\n$govuk-text-colour: govuk-colour(\"black\") !default;\n\n/// Canvas background colour\n///\n/// Used by the footer component and template to give the illusion of a long\n/// footer.\n///\n/// @type Colour\n/// @access public\n\n$govuk-canvas-background-colour: govuk-colour(\"light-grey\", $legacy: \"grey-3\") !default;\n\n/// Body background colour\n///\n/// @type Colour\n/// @access public\n\n$govuk-body-background-colour: govuk-colour(\"white\") !default;\n\n/// Text colour for print media\n///\n/// Use 'true black' to avoid printers using colour ink to print body text\n///\n/// @type Colour\n/// @access public\n\n$govuk-print-text-colour: #000000 !default;\n\n/// Secondary text colour\n///\n/// Used in for example 'muted' text and help text.\n///\n/// @type Colour\n/// @access public\n\n$govuk-secondary-text-colour: govuk-colour(\"dark-grey\", $legacy: \"grey-1\") !default;\n\n/// Focus colour\n///\n/// Used for outline (and background, where appropriate) when interactive\n/// elements (links, form controls) have keyboard focus.\n///\n/// @type Colour\n/// @access public\n\n$govuk-focus-colour: govuk-colour(\"yellow\") !default;\n\n/// Focused text colour\n///\n/// Ensure that the contrast between the text and background colour passes\n/// WCAG Level AA contrast requirements.\n///\n/// @type Colour\n/// @access public\n\n$govuk-focus-text-colour: govuk-colour(\"black\") !default;\n\n/// Error colour\n///\n/// Used to highlight error messages and form controls in an error state\n///\n/// @type Colour\n/// @access public\n\n$govuk-error-colour: govuk-colour(\"red\") !default;\n\n/// Success colour\n///\n/// Used to highlight success messages and banners\n///\n/// @type Colour\n/// @access public\n\n$govuk-success-colour: govuk-colour(\"green\") !default;\n\n/// Border colour\n///\n/// Used in for example borders, separators, rules and keylines.\n///\n/// @type Colour\n/// @access public\n\n$govuk-border-colour: govuk-colour(\"mid-grey\", $legacy: \"grey-2\");\n\n/// Input border colour\n///\n/// Used for form inputs and controls\n///\n/// @type Colour\n/// @access public\n\n$govuk-input-border-colour: govuk-colour(\"black\") !default;\n\n/// Input hover colour\n///\n/// Used for hover states on form controls\n///\n/// @type Colour\n/// @access public\n\n$govuk-hover-colour: govuk-colour(\"mid-grey\", $legacy: \"grey-3\");\n\n// =============================================================================\n// Links\n// =============================================================================\n\n/// Link colour\n///\n/// @type Colour\n/// @access public\n\n$govuk-link-colour: govuk-colour(\"blue\") !default;\n\n/// Visited link colour\n///\n/// @type Colour\n/// @access public\n\n$govuk-link-visited-colour: govuk-colour(\"purple\", $legacy: #4c2c92) !default;\n\n/// Link hover colour\n///\n/// @type Colour\n/// @access public\n\n$govuk-link-hover-colour: govuk-colour(\"dark-blue\", $legacy: \"light-blue\") !default;\n\n/// Active link colour\n///\n/// @type Colour\n/// @access public\n\n$govuk-link-active-colour: govuk-colour(\"black\", $legacy: \"light-blue\") !default;\n", "@include govuk-exports(\"govuk/core/lists\") {\n\n %govuk-list {\n @include govuk-font($size: 19);\n @include govuk-text-colour;\n margin-top: 0;\n @include govuk-responsive-margin(4, \"bottom\");\n padding-left: 0;\n list-style-type: none;\n\n // Add a top margin for nested lists\n %govuk-list {\n margin-top: govuk-spacing(2);\n }\n }\n\n %govuk-list > li {\n // Lists without numbers or bullets should always have extra space between\n // list items. Lists with numbers or bullets only have this extra space on\n // tablet and above\n margin-bottom: govuk-spacing(1);\n }\n\n .govuk-list {\n @extend %govuk-list;\n }\n\n %govuk-list--bullet {\n padding-left: govuk-spacing(4);\n list-style-type: disc;\n }\n\n %govuk-list--number {\n padding-left: govuk-spacing(4);\n list-style-type: decimal;\n }\n\n %govuk-list--bullet > li,\n %govuk-list--number > li {\n margin-bottom: 0;\n\n @include govuk-media-query($from: tablet) {\n margin-bottom: govuk-spacing(1);\n }\n }\n\n %govuk-list--spaced > li {\n margin-bottom: govuk-spacing(2);\n\n @include govuk-media-query($from: tablet) {\n margin-bottom: govuk-spacing(3);\n }\n }\n\n .govuk-list--bullet {\n @extend %govuk-list--bullet;\n }\n\n .govuk-list--number {\n @extend %govuk-list--number;\n }\n\n .govuk-list--spaced {\n @extend %govuk-list--spaced;\n }\n}\n", "////\n/// @group helpers/spacing\n////\n\n// stylelint-disable indentation\n\n/// Single point spacing\n///\n/// Returns measurement corresponding to the spacing point requested.\n///\n/// @param {Number} $spacing-point - Point on the spacing scale\n/// (set in `settings/_spacing.scss`)\n///\n/// @returns {String} Spacing measurement eg. 10px\n///\n/// @example scss\n/// .element {\n/// padding: govuk-spacing(5);\n/// }\n///\n/// @example scss Using negative spacing\n/// .element {\n/// margin-top: govuk-spacing(-1);\n/// }\n///\n/// @example scss Marking spacing declarations as important\n/// .element {\n/// margin-top: govuk-spacing(1) !important;\n/// }\n///\n/// @access public\n\n@function govuk-spacing($spacing-point) {\n\n $actual-input-type: type-of($spacing-point);\n @if $actual-input-type != \"number\" {\n @error \"Expected a number (integer), but got a \"\n + \"#{$actual-input-type}.\";\n }\n\n $is-negative: false;\n @if $spacing-point < 0 {\n $is-negative: true;\n $spacing-point: abs($spacing-point);\n }\n\n @if not map-has-key($govuk-spacing-points, $spacing-point) {\n @error \"Unknown spacing variable `#{$spacing-point}`. Make sure you are using a point from the spacing scale in `_settings/spacing.scss`.\";\n }\n\n $value: map-get($govuk-spacing-points, $spacing-point);\n @return if($is-negative, $value * -1, $value);\n}\n\n/// Responsive spacing\n///\n/// Adds responsive spacing (either padding or margin, depending on `$property`)\n/// by fetching a 'spacing map' from the responsive spacing scale, which defines\n/// different spacing values at different breakpoints.\n///\n/// To generate responsive spacing, use 'govuk-responsive-margin' or\n/// 'govuk-responsive-padding' mixins\n///\n/// @param {Number} $responsive-spacing-point - Point on the responsive spacing\n/// scale, corresponds to a map of breakpoints and spacing values\n/// @param {String} $property - Property to add spacing to (e.g. 'margin')\n/// @param {String} $direction [all] - Direction to add spacing to\n/// (`top`, `right`, `bottom`, `left`, `all`)\n/// @param {Boolean} $important [false] - Whether to mark as `!important`\n/// @param {Number} $adjustment [false] - Offset to adjust spacing by\n///\n/// @access private\n\n@mixin _govuk-responsive-spacing($responsive-spacing-point, $property, $direction: \"all\", $important: false, $adjustment: false) {\n\n $actual-input-type: type-of($responsive-spacing-point);\n @if $actual-input-type != \"number\" {\n @error \"Expected a number (integer), but got a \" + \"#{$actual-input-type}.\";\n }\n\n @if not map-has-key($govuk-spacing-responsive-scale, $responsive-spacing-point) {\n @error \"Unknown spacing point `#{$responsive-spacing-point}`. Make sure you are using a point from the \"\n + \"responsive spacing scale in `_settings/spacing.scss`.\";\n }\n\n // Make sure that the return value from `_settings/spacing.scss` is a map.\n $scale-map: map-get($govuk-spacing-responsive-scale, $responsive-spacing-point);\n $actual-map-type: type-of($scale-map);\n @if $actual-map-type != \"map\" {\n @error \"Expected a number (integer), but got a \"\n + \"#{$actual-map-type}. Make sure you are using a map to set the responsive spacing in `_settings/spacing.scss`)\";\n }\n\n // Loop through each breakpoint in the map\n @each $breakpoint, $breakpoint-value in $scale-map {\n\n @if $adjustment {\n $breakpoint-value: $breakpoint-value + $adjustment;\n }\n\n // The 'null' breakpoint is for mobile.\n @if not $breakpoint {\n\n @if $direction == all {\n #{$property}: $breakpoint-value if($important, !important, null);\n } @else {\n #{$property}-#{$direction}: $breakpoint-value if($important, !important, null);\n }\n } @else {\n @include govuk-media-query($from: $breakpoint) {\n @if $direction == all {\n #{$property}: $breakpoint-value if($important, !important, null);\n } @else {\n #{$property}-#{$direction}: $breakpoint-value if($important, !important, null);\n }\n }\n }\n }\n}\n\n/// Responsive margin\n///\n/// Adds responsive margin by fetching a 'spacing map' from the responsive\n/// spacing scale, which defines different spacing values at different\n/// breakpoints. Wrapper for the `_govuk-responsive-spacing` mixin.\n///\n/// @see {mixin} _govuk-responsive-spacing\n///\n/// @param {Number} $responsive-spacing-point - Point on the responsive spacing\n/// scale, corresponds to a map of breakpoints and spacing values\n/// @param {String} $direction [all] - Direction to add spacing to\n/// (`top`, `right`, `bottom`, `left`, `all`)\n/// @param {Boolean} $important [false] - Whether to mark as `!important`\n/// @param {Number} $adjustment [false] - Offset to adjust spacing by\n///\n/// @example scss\n/// .element {\n/// @include govuk-responsive-margin(6, \"left\", $adjustment: 1px);\n/// }\n///\n/// @access public\n\n@mixin govuk-responsive-margin($responsive-spacing-point, $direction: \"all\", $important: false, $adjustment: false) {\n @include _govuk-responsive-spacing($responsive-spacing-point, \"margin\", $direction, $important, $adjustment);\n}\n\n/// Responsive padding\n///\n/// Adds responsive padding by fetching a 'spacing map' from the responsive\n/// spacing scale, which defines different spacing values at different\n/// breakpoints. Wrapper for the `_govuk-responsive-spacing` mixin.\n///\n/// @see {mixin} _govuk-responsive-spacing\n///\n/// @param {Number} $responsive-spacing-point - Point on the responsive spacing\n/// scale, corresponds to a map of breakpoints and spacing values\n/// @param {String} $direction [all] - Direction to add spacing to\n/// (`top`, `right`, `bottom`, `left`, `all`)\n/// @param {Boolean} $important [false] - Whether to mark as `!important`\n/// @param {Number} $adjustment [false] - Offset to adjust spacing\n///\n/// @example scss\n/// .element {\n/// @include govuk-responsive-padding(6, \"left\", $adjustment: 1px);\n/// }\n///\n/// @access public\n\n@mixin govuk-responsive-padding($responsive-spacing-point, $direction: \"all\", $important: false, $adjustment: false) {\n @include _govuk-responsive-spacing($responsive-spacing-point, \"padding\", $direction, $important, $adjustment);\n}\n", "@include govuk-exports(\"govuk/core/typography\") {\n\n // Headings\n\n %govuk-heading-xl {\n @include govuk-text-colour;\n @include govuk-font($size: 48, $weight: bold);\n\n display: block;\n\n margin-top: 0;\n @include govuk-responsive-margin(8, \"bottom\");\n }\n\n .govuk-heading-xl {\n @extend %govuk-heading-xl;\n }\n\n %govuk-heading-l {\n @include govuk-text-colour;\n @include govuk-font($size: 36, $weight: bold);\n\n display: block;\n\n margin-top: 0;\n @include govuk-responsive-margin(6, \"bottom\");\n }\n\n .govuk-heading-l {\n @extend %govuk-heading-l;\n }\n\n %govuk-heading-m {\n @include govuk-text-colour;\n @include govuk-font($size: 24, $weight: bold);\n\n display: block;\n\n margin-top: 0;\n @include govuk-responsive-margin(4, \"bottom\");\n }\n\n .govuk-heading-m {\n @extend %govuk-heading-m;\n }\n\n %govuk-heading-s {\n @include govuk-text-colour;\n @include govuk-font($size: 19, $weight: bold);\n\n display: block;\n\n margin-top: 0;\n @include govuk-responsive-margin(4, \"bottom\");\n }\n\n .govuk-heading-s {\n @extend %govuk-heading-s;\n }\n\n // Captions to be used inside headings\n\n .govuk-caption-xl {\n @include govuk-font($size: 27);\n\n display: block;\n\n margin-bottom: govuk-spacing(1);\n\n color: $govuk-secondary-text-colour;\n }\n\n .govuk-caption-l {\n @include govuk-font($size: 24);\n\n display: block;\n\n margin-bottom: govuk-spacing(1);\n color: $govuk-secondary-text-colour;\n\n @include govuk-media-query($from: tablet) {\n margin-bottom: 0;\n }\n }\n\n .govuk-caption-m {\n @include govuk-font($size: 19);\n\n display: block;\n\n color: $govuk-secondary-text-colour;\n }\n\n // Body (paragraphs)\n\n %govuk-body-l {\n @include govuk-text-colour;\n @include govuk-font($size: 24);\n\n margin-top: 0;\n @include govuk-responsive-margin(6, \"bottom\");\n }\n\n .govuk-body-l {\n @extend %govuk-body-l;\n }\n\n %govuk-body-m {\n @include govuk-text-colour;\n @include govuk-font($size: 19);\n\n margin-top: 0;\n @include govuk-responsive-margin(4, \"bottom\");\n }\n\n .govuk-body-m {\n @extend %govuk-body-m;\n }\n\n %govuk-body-s {\n @include govuk-text-colour;\n @include govuk-font($size: 16);\n\n margin-top: 0;\n @include govuk-responsive-margin(4, \"bottom\");\n }\n\n .govuk-body-s {\n @extend %govuk-body-s;\n }\n\n %govuk-body-xs {\n @include govuk-text-colour;\n @include govuk-font($size: 14);\n\n margin-top: 0;\n @include govuk-responsive-margin(4, \"bottom\");\n }\n\n .govuk-body-xs {\n @extend %govuk-body-xs;\n }\n\n // Usage aliases\n\n // Using extend to alias means we also inherit any contextual adjustments that\n // refer to the 'original' class name\n\n .govuk-body-lead {\n @extend %govuk-body-l;\n }\n\n .govuk-body {\n @extend %govuk-body-m;\n }\n\n // Contextual adjustments\n // Add top padding to headings that appear directly after paragraphs.\n\n %govuk-body-l + %govuk-heading-l {\n padding-top: govuk-spacing(1);\n\n @include govuk-media-query($from: tablet) {\n padding-top: govuk-spacing(2);\n }\n }\n\n %govuk-body-m + %govuk-heading-l,\n %govuk-body-s + %govuk-heading-l,\n %govuk-list + %govuk-heading-l {\n @include govuk-responsive-padding(4, \"top\");\n }\n\n %govuk-body-m + %govuk-heading-m,\n %govuk-body-s + %govuk-heading-m,\n %govuk-list + %govuk-heading-m,\n %govuk-body-m + %govuk-heading-s,\n %govuk-body-s + %govuk-heading-s,\n %govuk-list + %govuk-heading-s {\n padding-top: govuk-spacing(1);\n\n @include govuk-media-query($from: tablet) {\n padding-top: govuk-spacing(2);\n }\n }\n}\n", "@include govuk-exports(\"govuk/core/section-break\") {\n\n %govuk-section-break {\n margin: 0;\n border: 0;\n\n // fix double-width section break and forced visible section break\n // when combined with styles from alphagov/elements\n @include _govuk-compatibility(govuk_elements) {\n height: 0;\n }\n }\n\n .govuk-section-break {\n @extend %govuk-section-break;\n }\n\n // Sizes\n\n %govuk-section-break--xl {\n @include govuk-responsive-margin(8, \"top\");\n @include govuk-responsive-margin(8, \"bottom\");\n }\n\n .govuk-section-break--xl {\n @extend %govuk-section-break--xl;\n }\n\n %govuk-section-break--l {\n @include govuk-responsive-margin(6, \"top\");\n @include govuk-responsive-margin(6, \"bottom\");\n }\n\n .govuk-section-break--l {\n @extend %govuk-section-break--l;\n }\n\n %govuk-section-break--m {\n @include govuk-responsive-margin(4, \"top\");\n @include govuk-responsive-margin(4, \"bottom\");\n }\n\n .govuk-section-break--m {\n @extend %govuk-section-break--m;\n }\n\n // Visible variant\n\n %govuk-section-break--visible {\n border-bottom: 1px solid $govuk-border-colour;\n }\n\n .govuk-section-break--visible {\n @extend %govuk-section-break--visible;\n }\n}\n", "@import \"../base\";\n\n@include govuk-exports(\"govuk/objects/button-group\") {\n // Button groups can be used to group buttons and links together as a group.\n //\n // Within a button group:\n //\n // - links are styled to line up visually with the buttons, including being\n // centre-aligned on mobile\n // - spacing between the buttons and links is handled automatically, including\n // when they wrap across multiple lines\n .govuk-button-group {\n $horizontal-gap: govuk-spacing(3);\n $vertical-gap: govuk-spacing(3);\n\n // These need to be kept in sync with the button component's styles\n $button-padding: govuk-spacing(2);\n $button-shadow-size: $govuk-border-width-form-element;\n\n $link-spacing: govuk-spacing(1);\n\n @include govuk-responsive-margin(6, \"bottom\", $adjustment: $vertical-gap * -1);\n\n // Flexbox is used to center-align links on mobile, align everything along\n // the baseline on tablet and above, and to removes extra whitespace that\n // we'd get between the buttons and links because they're inline-blocks.\n //\n // Ideally we'd use `gap` with flexbox rather than having to do it all with\n // margins, but unfortunately the support isn't there (yet) and @supports\n // doesn't play nicely with it\n // (https://github.com/w3c/csswg-drafts/issues/3559)\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-align: center;\n align-items: center;\n\n // Give links within the button group the same font-size and line-height\n // as buttons.\n //\n // Because we want the focus state to be tight around the link text, we use\n // margins where the buttons would use padding.\n .govuk-link {\n @include govuk-font($size: 19, $line-height: 19px);\n display: inline-block;\n // Prevent links overflowing their container in IE10/11 because of bug\n // with align-items: center\n max-width: 100%;\n margin-top: $link-spacing;\n margin-bottom: $link-spacing + $vertical-gap;\n text-align: center;\n }\n\n // Reduce the bottom margin to the size of the vertical gap (accommodating\n // the button shadow) – the 'lost' margin is moved to the button-group.\n .govuk-button {\n margin-bottom: $vertical-gap + $button-shadow-size;\n }\n\n // On tablet and above, we also introduce a 'column gap' between the\n // buttons and links in each row and left align links\n @include govuk-media-query($from: tablet) {\n // Cancel out the column gap for the last item in each row\n margin-right: ($horizontal-gap * -1);\n\n -ms-flex-direction: row;\n\n flex-direction: row;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: baseline;\n align-items: baseline;\n\n .govuk-button,\n .govuk-link {\n margin-right: $horizontal-gap;\n }\n\n .govuk-link {\n text-align: left;\n }\n }\n }\n}\n", "@import \"../base\";\n\n@include govuk-exports(\"govuk/objects/form-group\") {\n .govuk-form-group {\n @include govuk-clearfix;\n @include govuk-responsive-margin(6, \"bottom\");\n\n .govuk-form-group:last-of-type {\n margin-bottom: 0; // Remove margin from last item in nested groups\n }\n }\n\n .govuk-form-group--error {\n padding-left: govuk-spacing(3);\n border-left: $govuk-border-width-form-group-error solid $govuk-error-colour;\n\n .govuk-form-group {\n // Reset error styles in nested form groups that might have error class\n padding: 0;\n border: 0;\n }\n }\n}\n", "////\n/// @group helpers/layout\n////\n\n/// Clear floated content within a container using a pseudo element\n///\n/// @access public\n\n@mixin govuk-clearfix {\n &:after {\n content: \"\";\n display: block;\n clear: both;\n }\n}\n", "@import \"../base\";\n\n@include govuk-exports(\"govuk/objects/grid\") {\n .govuk-grid-row {\n @include govuk-clearfix;\n margin-right: - ($govuk-gutter-half);\n margin-left: - ($govuk-gutter-half);\n }\n\n @each $width in map-keys($govuk-grid-widths) {\n .govuk-grid-column-#{$width} {\n @include govuk-grid-column($width);\n }\n }\n\n // These *must* be defined in a separate loop as they have the same\n // specificity as the non-breakpoint specific classes, so need to appear after\n // them in the outputted CSS\n @each $width in map-keys($govuk-grid-widths) {\n .govuk-grid-column-#{$width}-from-desktop {\n @include govuk-grid-column($width, $at: desktop);\n }\n }\n}\n", "////\n/// @group helpers/layout\n////\n\n/// Grid width percentage\n///\n/// @param {String} $key - Name of grid width (e.g. two-thirds)\n/// @return {Number} Percentage width\n/// @throw if `$key` is not a valid grid width\n/// @access public\n\n@function govuk-grid-width($key) {\n @if map-has-key($govuk-grid-widths, $key) {\n @return map-get($govuk-grid-widths, $key);\n }\n\n @error \"Unknown grid width `#{$key}`\";\n}\n\n/// Generate grid column styles\n///\n/// Creates a grid column with standard gutter between the columns.\n///\n/// Grid widths are defined in the `$govuk-grid-widths` map.\n///\n/// By default the column width changes from 100% to specified width at the\n/// 'tablet' breakpoint, but other breakpoints can be specified using the `$at`\n/// parameter.\n///\n/// @param {String} $width [full] name of a grid width from $govuk-grid-widths\n/// @param {String} $float [left] left | right\n/// @param {String} $at [tablet] - mobile | tablet | desktop | any custom breakpoint\n///\n/// @example scss - Default\n/// .govuk-grid-column-two-thirds {\n/// @include govuk-grid-column(two-thirds)\n/// }\n///\n/// @example scss - Customising the breakpoint where width percentage is applied\n/// .govuk-grid-column-one-half-at-desktop {\n/// @include govuk-grid-column(one-half, $at: desktop);\n/// }\n///\n/// @example scss - Customising the float direction\n/// .govuk-grid-column-one-half-right {\n/// @include govuk-grid-column(two-thirds, $float: right);\n/// }\n///\n/// @access public\n\n@mixin govuk-grid-column($width: full, $float: left, $at: tablet) {\n box-sizing: border-box;\n @if $at != desktop {\n width: 100%;\n }\n padding: 0 $govuk-gutter-half;\n @include govuk-media-query($from: $at) {\n width: govuk-grid-width($width);\n float: $float;\n }\n}\n", "@import \"../base\";\n\n////\n/// @group objects/layout\n////\n\n// Example usage with Breadcrumbs, phase banners, back links:\n//
\n// \n//
\n// \n//
\n//
\n//\n// Example usage without Breadcrumbs, phase banners, back links:\n//
\n//
\n// \n//
\n//
\n\n@include govuk-exports(\"govuk/objects/main-wrapper\") {\n .govuk-main-wrapper {\n // In IE11 the `main` element can be used, but is not recognized –\n // meaning it's not defined in IE's default style sheet,\n // so it uses CSS initial value, which is inline.\n display: block;\n padding-top: govuk-spacing(4);\n padding-bottom: govuk-spacing(4);\n\n @include govuk-media-query($from: tablet) {\n // This spacing is manually adjusted to replicate the margin of\n // govuk-heading-xl (50px) minus the spacing of back link and\n // breadcrumbs (10px)\n padding-top: govuk-spacing(7);\n padding-bottom: govuk-spacing(7);\n }\n }\n\n // Using the `.govuk-main-wrapper--auto-spacing` modifier should apply the\n // correct spacing depending on whether there are any elements\n // (such the back link, breadcrumbs or phase banner components) before the\n // `.govuk-main-wrapper` in the `govuk-width-container`.\n //\n // If you need to control the spacing manually, use the\n // `govuk-main-wrapper--l` modifier instead.\n .govuk-main-wrapper--auto-spacing:first-child,\n .govuk-main-wrapper--l {\n @include govuk-responsive-padding(8, \"top\");\n }\n}\n", "@import \"../base\";\n\n@include govuk-exports(\"govuk/objects/template\") {\n\n // Applied to the element\n .govuk-template {\n // Set the overall page background colour to the same colour as used by the\n // footer to give the illusion of a long footer.\n background-color: $govuk-canvas-background-colour;\n\n // Prevent automatic text sizing, as we already cater for small devices and\n // would like the browser to stay on 100% text zoom by default.\n -webkit-text-size-adjust: 100%;\n -moz-text-size-adjust: 100%;\n text-size-adjust: 100%;\n\n // Add scroll padding to the top of govuk-template but remove it if the\n // exit this page component is present.\n //\n // This is a solution to exit this page potentially failing WCAG SC 2.4.12:\n // Focus Not Obscured (https://www.w3.org/WAI/WCAG22/Understanding/focus-not-obscured-minimum.html)\n // due to it's sticky positioning.\n //\n // This will apply scroll-padding-top in any browsers that don't support :has\n // (https://caniuse.com/css-has). This is part of the reason we do this in\n // a \"wrong way round\" way as we hypothesise that the risks of having\n // scroll-padding unnecessarily is better than risking not having scroll-padding\n // and needing it to account for exit this page.\n @supports ((position: -webkit-sticky) or (position: sticky)) {\n scroll-padding-top: govuk-spacing(9);\n\n &:not(:has(.govuk-exit-this-page)) {\n scroll-padding-top: 0;\n }\n }\n\n // Force the scrollbar to always display in IE, to prevent horizontal page\n // jumps as content height changes (e.g. autocomplete results open).\n @include govuk-media-query($media-type: screen) {\n overflow-y: scroll;\n }\n }\n\n // Applied to the element\n .govuk-template__body {\n // The default margins set by user-agents are not required since we have our\n // own containers.\n margin: 0;\n // Set the overall body of the page back to the typical background colour.\n background-color: $govuk-body-background-colour;\n }\n}\n", "@import \"../base\";\n\n////\n/// @group objects/layout\n////\n\n/// Width container mixin\n///\n/// Used to create page width and custom width container classes.\n///\n/// @param {String} $width [$govuk-page-width] - Width in pixels\n///\n/// @example scss - Creating a 1200px wide container class\n/// .app-width-container--wide {\n/// @include govuk-width-container(1200px);\n/// }\n///\n/// @access public\n\n@mixin govuk-width-container($width: $govuk-page-width) {\n\n // By default, limit the width of the container to the page width\n max-width: $width;\n\n // On mobile, add half width gutters\n margin-right: $govuk-gutter-half;\n margin-left: $govuk-gutter-half;\n\n // Respect 'display cutout' safe area (avoids notches and rounded corners)\n @supports (margin: unquote(\"max(calc(0px))\")) {\n $gutter-safe-area-right: calc(#{$govuk-gutter-half} + env(safe-area-inset-right));\n $gutter-safe-area-left: calc(#{$govuk-gutter-half} + env(safe-area-inset-left));\n\n // Use max() to pick largest margin, default or with safe area\n // Escaped due to Sass max() vs. CSS native max()\n margin-right: unquote(\"max(#{$govuk-gutter-half}, #{$gutter-safe-area-right})\");\n margin-left: unquote(\"max(#{$govuk-gutter-half}, #{$gutter-safe-area-left})\");\n }\n\n // On tablet, add full width gutters\n @include govuk-media-query($from: tablet) {\n margin-right: $govuk-gutter;\n margin-left: $govuk-gutter;\n\n // Respect 'display cutout' safe area (avoids notches and rounded corners)\n @supports (margin: unquote(\"max(calc(0px))\")) {\n $gutter-safe-area-right: calc(#{$govuk-gutter-half} + env(safe-area-inset-right));\n $gutter-safe-area-left: calc(#{$govuk-gutter-half} + env(safe-area-inset-left));\n\n // Use max() to pick largest margin, default or with safe area\n // Escaped due to Sass max() vs. CSS native max()\n margin-right: unquote(\"max(#{$govuk-gutter}, #{$gutter-safe-area-right})\");\n margin-left: unquote(\"max(#{$govuk-gutter}, #{$gutter-safe-area-left})\");\n }\n }\n\n // As soon as the viewport is greater than the width of the page plus the\n // gutters, just centre the content instead of adding gutters.\n @include govuk-media-query($and: \"(min-width: #{($width + $govuk-gutter * 2)})\") {\n margin-right: auto;\n margin-left: auto;\n\n // Since a safe area may have previously been set above,\n // we need to duplicate this margin that centers the page.\n @supports (margin: unquote(\"max(calc(0px))\")) {\n margin-right: auto;\n margin-left: auto;\n }\n }\n\n @include _govuk-if-ie8 {\n width: $width;\n // Since media queries are not supported in IE8,\n // we need to duplicate this margin that centers the page.\n margin-right: auto;\n margin-left: auto;\n }\n}\n\n@include govuk-exports(\"govuk/objects/width-container\") {\n .govuk-width-container {\n @include govuk-width-container;\n }\n}\n", "////\n/// @group settings/measurements\n////\n\n// =========================================================\n// Page layout\n// =========================================================\n\n/// Width of main container\n///\n/// @type Number\n/// @access public\n\n$govuk-page-width: 960px !default;\n\n/// Map of grid column widths\n///\n/// @type Map\n/// @access public\n\n$govuk-grid-widths: (\n one-quarter: (100% / 4),\n one-third: (100% / 3),\n one-half: (100% / 2),\n two-thirds: (200% / 3),\n three-quarters: (300% / 4),\n full: 100%\n) !default;\n\n/// Width of gutter between grid columns\n///\n/// @type Number\n/// @access public\n\n$govuk-gutter: 30px !default;\n\n/// Width of half the gutter between grid columns\n///\n/// @type Number\n/// @access public\n\n$govuk-gutter-half: $govuk-gutter / 2;\n\n// =========================================================\n// Borders\n// =========================================================\n\n/// Standard border width\n///\n/// @type Number\n/// @access public\n\n$govuk-border-width: 5px !default;\n\n/// Wide border width\n///\n/// @type Number\n/// @access public\n\n$govuk-border-width-wide: 10px !default;\n\n/// Narrow border width\n///\n/// @type Number\n/// @access public\n\n$govuk-border-width-narrow: 4px !default;\n\n/// Form control border width\n///\n/// @type Number\n/// @access public\n\n$govuk-border-width-form-element: 2px !default;\n\n/// Form group border width when in error state\n///\n/// @type Number\n/// @access public\n\n$govuk-border-width-form-group-error: $govuk-border-width !default;\n\n/// Border width of focus outline\n///\n/// @type Number\n/// @access public\n\n$govuk-focus-width: 3px !default;\n\n/// Hover width for form controls with a hover state\n///\n/// @type Number\n/// @access public\n\n$govuk-hover-width: 10px !default;\n", "@include govuk-exports(\"govuk/component/accordion\") {\n $govuk-accordion-base-colour: govuk-colour(\"black\");\n $govuk-accordion-hover-colour: govuk-colour(\"light-grey\", $legacy: \"grey-3\");\n $govuk-accordion-icon-focus-colour: $govuk-focus-colour;\n $govuk-accordion-bottom-border-width: 1px;\n\n .govuk-accordion {\n @include govuk-responsive-margin(6, \"bottom\");\n }\n\n .govuk-accordion__section {\n padding-top: govuk-spacing(3);\n }\n\n .govuk-accordion__section-heading {\n // Override browser defaults to ensure consistent element height\n margin-top: 0;\n margin-bottom: 0;\n\n padding-top: govuk-spacing(3);\n padding-bottom: govuk-spacing(3);\n }\n\n .govuk-accordion__section-button {\n @include govuk-font($size: 24, $weight: bold);\n @include govuk-text-colour;\n\n display: block;\n margin-bottom: 0;\n padding-top: govuk-spacing(3);\n }\n\n // Remove the bottom margin from the last item inside the content\n .govuk-accordion__section-content > :last-child {\n margin-bottom: 0;\n }\n\n // JavaScript enabled\n .js-enabled {\n .govuk-accordion {\n // Border at the bottom of the whole accordion\n border-bottom: $govuk-accordion-bottom-border-width solid $govuk-border-colour;\n }\n\n .govuk-accordion__section {\n padding-top: 0;\n }\n\n // Hide the body of collapsed sections by default for browsers that lack\n // support for `content-visibility` paired with [hidden=until-found]\n .govuk-accordion__section-content {\n display: none;\n\n @include govuk-responsive-padding(3, \"top\");\n @include govuk-responsive-padding(8, \"bottom\");\n }\n\n // Hide the body of collapsed sections using `content-visibility` to enable\n // page search within [hidden=until-found] regions where browser supported\n .govuk-accordion__section-content[hidden] {\n @supports (content-visibility: hidden) {\n content-visibility: hidden;\n display: inherit;\n }\n\n // Hide the padding of collapsed sections\n padding-top: 0;\n padding-bottom: 0;\n }\n\n // Show the body of expanded sections\n .govuk-accordion__section--expanded .govuk-accordion__section-content {\n display: block;\n }\n\n .govuk-accordion__show-all {\n @include govuk-font($size: 19);\n position: relative;\n z-index: 1;\n\n margin-bottom: 9px;\n padding: govuk-spacing(1) 2px govuk-spacing(1) 0;\n\n border-width: 0;\n\n color: $govuk-link-colour;\n background: none;\n\n cursor: pointer;\n -webkit-appearance: none;\n\n @include govuk-media-query ($from: tablet) {\n margin-bottom: 14px;\n }\n\n // Remove default button focus outline in Firefox\n &::-moz-focus-inner {\n padding: 0;\n border: 0;\n }\n\n &:hover {\n color: $govuk-accordion-base-colour;\n background: $govuk-accordion-hover-colour;\n // The GOV.UK Design System focus state adds a box-shadow to the top and bottom of the\n // button. We add a grey box-shadow on hover too, to make the height of the hover state\n // match the height of the focus state.\n box-shadow: 0 -2px $govuk-accordion-hover-colour, 0 4px $govuk-accordion-hover-colour;\n\n .govuk-accordion__section-toggle-text {\n color: $govuk-accordion-base-colour;\n }\n\n .govuk-accordion-nav__chevron {\n color: $govuk-accordion-base-colour;\n background: $govuk-accordion-base-colour;\n }\n\n .govuk-accordion-nav__chevron:after {\n color: $govuk-accordion-hover-colour;\n }\n }\n\n &:focus {\n @include govuk-focused-text;\n\n .govuk-accordion-nav__chevron {\n background: $govuk-accordion-base-colour;\n }\n\n .govuk-accordion-nav__chevron:after {\n color: $govuk-accordion-icon-focus-colour;\n }\n }\n }\n\n .govuk-accordion__section-heading {\n padding: 0;\n }\n\n // Create Chevron icon aligned with text\n .govuk-accordion-nav__chevron {\n box-sizing: border-box;\n display: inline-block;\n\n position: relative;\n\n // Set size using rems to make the icon scale with text if user resizes text in their browser\n width: govuk-px-to-rem(20px);\n height: govuk-px-to-rem(20px);\n\n border: govuk-px-to-rem(1px) solid;\n border-radius: 50%;\n\n vertical-align: middle;\n\n // IE8 fallback of icon\n @include _govuk-if-ie8 {\n display: inline-block;\n max-height: 20px;\n line-height: 1;\n }\n\n // Create inner chevron arrow\n &:after {\n content: \"\";\n box-sizing: border-box;\n display: block;\n\n position: absolute;\n bottom: govuk-px-to-rem(5px);\n left: govuk-px-to-rem(6px);\n\n width: govuk-px-to-rem(6px);\n height: govuk-px-to-rem(6px);\n\n -webkit-transform: rotate(-45deg);\n\n -ms-transform: rotate(-45deg);\n\n transform: rotate(-45deg);\n\n border-top: govuk-px-to-rem(2px) solid;\n border-right: govuk-px-to-rem(2px) solid;\n\n // IE8 fallback of icon with HTML symbol\n @include _govuk-if-ie8 {\n content: \"\\25B2\"; // \"▲\"\n position: relative;\n border: 0;\n }\n }\n }\n\n // Rotate icon to create \"Down\" version\n .govuk-accordion-nav__chevron--down {\n -webkit-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n\n // IE8 fallback of arrow icon\n @include _govuk-if-ie8 {\n &:after {\n content: \"\\25BC\"; // \"▼\"\n -webkit-transform: none;\n -ms-transform: none;\n transform: none;\n }\n }\n }\n\n .govuk-accordion__section-button {\n width: 100%;\n\n padding: govuk-spacing(2) 0 0 0;\n\n border: 0;\n\n border-top: $govuk-accordion-bottom-border-width solid $govuk-border-colour;\n\n // Visually separate the section from the one underneath when user changes colours in their\n // browser. See https://github.com/alphagov/govuk-frontend/issues/2321#issuecomment-924201488\n border-bottom: govuk-spacing(2) solid transparent;\n\n color: $govuk-text-colour;\n background: none;\n\n text-align: left;\n // Section headers have a pointer cursor as an additional affordance\n cursor: pointer;\n -webkit-appearance: none;\n\n @include govuk-media-query ($from: tablet) {\n padding-bottom: govuk-spacing(2);\n }\n\n &:active {\n color: $govuk-link-active-colour;\n background: none;\n }\n\n &:hover {\n color: $govuk-accordion-base-colour;\n background: $govuk-accordion-hover-colour;\n\n .govuk-accordion__section-toggle-text {\n color: $govuk-accordion-base-colour;\n }\n\n .govuk-accordion-nav__chevron {\n color: $govuk-accordion-base-colour;\n background: $govuk-accordion-base-colour;\n }\n\n .govuk-accordion-nav__chevron:after {\n color: $govuk-accordion-hover-colour;\n }\n }\n\n &:focus {\n // Remove default focus border around button as\n // styling is being applied to inner text elements that receive focus\n outline: 0;\n\n .govuk-accordion__section-heading-text-focus,\n .govuk-accordion__section-summary-focus,\n .govuk-accordion__section-toggle-focus {\n @include govuk-focused-text;\n }\n\n .govuk-accordion-nav__chevron {\n color: $govuk-accordion-base-colour;\n background: $govuk-accordion-base-colour;\n }\n\n .govuk-accordion-nav__chevron:after {\n color: $govuk-accordion-icon-focus-colour;\n }\n }\n\n // Remove default button focus outline in Firefox\n &::-moz-focus-inner {\n padding: 0;\n border: 0;\n }\n }\n\n // Remove the transparent border when the section is expanded to make it clear that the heading\n // relates to the content below. Adjust padding to maintain the height of the element.\n // See https://github.com/alphagov/govuk-frontend/pull/2257#issuecomment-951920798\n .govuk-accordion__section--expanded .govuk-accordion__section-button {\n padding-bottom: govuk-spacing(3);\n border-bottom: 0;\n\n @include govuk-media-query ($from: tablet) {\n padding-bottom: govuk-spacing(4);\n }\n }\n\n // As Chevron icon is vertically aligned it overlaps with the focus state bottom border\n // Styling adds some spacing\n .govuk-accordion__section-button:focus .govuk-accordion__section-toggle-focus {\n padding-bottom: 3px;\n\n @include govuk-media-query ($from: desktop) {\n padding-bottom: 2px;\n }\n }\n\n .govuk-accordion__section-toggle,\n .govuk-accordion__section-heading-text,\n .govuk-accordion__section-summary {\n display: block;\n margin-bottom: 13px;\n\n .govuk-accordion__section-heading-text-focus,\n .govuk-accordion__section-summary-focus,\n .govuk-accordion__section-toggle-focus {\n display: inline;\n }\n }\n\n // Add toggle link with Chevron icon on left.\n .govuk-accordion__section-toggle {\n @include govuk-typography-responsive($size: 19);\n @include govuk-typography-weight-regular;\n color: $govuk-link-colour;\n }\n\n // Add space between the icon and text.\n // Avoid applying spacing directly to the icon as the use of `transform` will change the\n // placement of any margins.\n .govuk-accordion__show-all-text,\n .govuk-accordion__section-toggle-text {\n margin-left: govuk-spacing(1);\n vertical-align: middle;\n }\n\n // Background colour adjustment when user changes colours in Firefox\n //\n // When user changes colours in Firefox, text colour inside